Задать вопрос
  • Как сжать видео так, чтобы надписи были в идеальном качестве, а остальная картинка в нормальном?

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

    Может, лучше распознать номера и присутствующие в кадре прописать в трек субтитров?
    После этого видео можно будет как угодно уменьшить-ужать-размылить, а распознанные номера будут видны, если включить субтитры.

    Усложнив, можно в другой трек субтитров прописать и распознанные положения областей с номерами, а каким-то доработанным видеоплеером отрисовывать эти прямоугольники поверх видео при воспроизведении.
    Ответ написан
    1 комментарий
  • Зачем надо закрывать курсор при работе с БД?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Дело в том что курсор может потреблять ресурсы. Например вы захотели взять первые 10 строк из 10000000 выборки но предварительно отсортировали. Выбрали 10 строк и не сделали финализирующие протокольные действия в Python. База данных будет удерживать в памяти алгоритмы и структуры данных для снапшота результата этого запроса до тех пор пока не придет явный CLOSE с вашей стороны либо интеллекуальный драйвер который еще и обладает логикой уборки мусора сам не догадается что Statement уже вышел из scope вашего использования и может быть удалён GC.

    Я был свидетелем ситуации когда крупное ent-приложение Java/Oracle переполняло память из-за неверной обработки Exception и плодила много незакрытых курсоров в БД. Java от этого не сильно страдала (GC всё убирал) но страдал Oracle. Потому что уборка происходила слишком поздно. Пофиксилось тогда переписыванием с try на try-with-resources.

    Поэтому если вы неряшливо обращаетесь с курсорами (явными и неявными (обычный select к примеру может прождать неявный курсор)) то не ваше приложение а база данных почувствует себя плохо. Как быстро и какие ошибки вы будете получать - зависит от настроек вашей БД.
    Ответ написан
    Комментировать
  • Что я не так делаю с интерфейсами?

    K0TlK
    @K0TlK
    Что я не так делаю с интерфейсами?

    Всё.
    У тебя у одного интерфейса слишком много ответственностей у него и Warside какой-то есть и дамаг может принимать и умереть может.

    Разделяй этот интерфейс на несколько.

    namespace Health
    {
        public interface IHealth
        {
            void Lose(int amount);
            void Restore(int amount);
        }
        
        public interface IMutable<out T>
        {
            T Current { get; }
        }
        
        public interface IFinal
        {
            event Action Over;
        }
    }


    Получается такой Health:

    using System;
    using UnityEngine;
    
    namespace Health
    {
        public class Health : IHealth, IFinal, IMutable<int>
        {
            public event Action Over;
            private readonly int _max;
            private const int Min = 0;
    
            public Health(int max)
            {
                _max = max;
                Current = _max;
            }
            
            public int Current { get; private set; }
            
            public void Lose(int amount)
            {
                SetCurrent(Current - amount);
            }
    
            public void Restore(int amount)
            {
                SetCurrent(Current + amount);
            }
    
            private void SetCurrent(int amount)
            {
                Current = Mathf.Clamp(amount, Min, _max);
                
                if (Current == Min) Over?.Invoke();
            }
            
        }
    }


    Health не должен быть отдельным компонентом, который будет висеть на условном рыцаре. Рыцарь будет содержать в себе этот Health, но напрямую хп ему изменять никто не будет, поэтому нужен еще один интерфейс IDamageable:
    namespace Health
    {
        public interface IDamageable
        {
            void ApplyDamage(int amount);
        }
    }


    И сам рыцарь:
    using UnityEngine;
    
    namespace Health
    {
        public class Knight : MonoBehaviour, IDamageable
        {
            [SerializeField] private int _maxHealth = 100;
            private Health _health;
    
            private void Awake()
            {
                _health = new Health(_maxHealth);
            }
    
            private void OnEnable()
            {
                _health.Over += Die;
            }
    
            private void OnDisable()
            {
                _health.Over -= Die;
            }
    
            public void ApplyDamage(int amount)
            {
                _health.Lose(amount);
                Debug.Log($"Damaged, hp left - {_health.Current}");
            }
    
            private void Die()
            {
                Debug.Log("Died");
                Destroy(gameObject);
            }
        }
    }


    Теперь, чтобы нанести урон рыцарю, нужно получить компонент IDamageable и вызвать его метод ApplyDamage:
    using UnityEngine;
    
    namespace Health
    {
        public class Enemy : MonoBehaviour
        {
            [SerializeField] private int _damage = 50;
            
            private void OnTriggerEnter2D(Collider2D other)
            {
                if (other.TryGetComponent(out IDamageable damageable))
                {
                    damageable.ApplyDamage(_damage);
                }
            }
        }
    }


    Всё. Используй TryGetComponent и тогда не нужно будет делать миллион проверок является ли что-то null.
    Warside твой должен висеть на рыцаре, а не на хп, поэтому делай отдельный интерфейс под этот Warside.
    Ответ написан
    5 комментариев
  • Как перевести код с Pascal на Python?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    Как перевести код с Pascal на Python?

    Используя синтаксис и встроенные функции (смотреть в офф.доках / "шпаргалке") написать соответствующий код.

    ---
    Допускаю, что найдется кто-то, готовый за вас делать ваши задания, и напишет код, но в текущем виде, поскольку вы не привели попыток решения, вопрос фактически является заданием. А про задания четко написано в п.5.12 правил.
    upd:
    Самые очевидные ошибки
    from math import sqrt
    
    for i in range(289123456, 389123456+1):
        sqrtIT = sqrt(i)
        numDel = 0
        if (round(sqrtIT)) == sqrtIT:
            maxDel = 1
            for j in range(1, round(sqrtIT)): # Раз ошибка
                """
                    Собственно, первый цикл 'for i := 289123456 to 389123456 do begin' вы переделали правильно, почему второй так сделали - непонятно
                """
                round(sqrtIT)
                if (i % j == 0):
                    if maxDel == 1 and j != 1: # вторая ошибка. В питоне - не равно пишется так: !=
                        maxDel = i // j # Еще одна ошибка (из коментов)
                    if (j != round(sqrtIT)): # третья ошибка
                        numDel += 2
                    if j * j == i:
                        numDel += 1
            if numDel == 5:
                print(i, ' ', maxDel)
    Ответ написан
    2 комментария
  • Воспроизводится без нажатия кнопки tkinter, как исправить?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Потому что параметр command конструктора Button принимает ссылку на функцию, а вы передаёте результат её вызова.
    Ответ написан
    Комментировать
  • Как сделать 2 условия в sqllite python?

    AlexNest
    @AlexNest
    Работаю с Python/Django
    Это нужно делать на уровне sql запросов. Как? Для начала - просто изучите sql. То, что вам надо - буквально основы, описанные в первых разделах. Без их знания будет очень сложно.
    Ответ написан
    2 комментария
  • Пишу бота для телеграм (telebot), проблема с асинхронными функциями. В чем причина ошибки?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    Если вы дадите какие-то совесть по оформлению или синтаксу кода, я буду вам нереально благодарен.

    Мне вот интересно, вы ищите "советы" по каким-то вещам... Почему вам даже не приходит в голову поискать в офф.документации?
    Как правильно писать то, что вы пытаетесь сделать там описано.
    я тот же sqlite выучил за 1 день

    Не очень похоже. То, что вы посмотрели, уж извините, говноролик* по типу "хреначим бота из палок и ..." не значит, что вы изучили что-то.
    Конкретно - проблема в подобных выражениях:
    cursor.execute(f"INSERT INTO {table}({columns}) VALUES ({values})")

    Писать что-то подобное, тем-более в системе, с которая будет доступна другим людям в интернете можно только в случаях, когда вы целенаправленно хотите словить sql-инъекцию.
    Изучайте основы по документации. По крайней мере какие-то базовые вещи там описаны максимально подробно и даже если вдруг не знаете английский - примеров столько, что даже без чтения понятно.
    --
    * - тут больше вопрос к автору сего творения, который мало-того, что сам не пойми как учится, так еще и путает других.
    Ответ написан
    1 комментарий
  • Как правильно записать переменные в функции?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    Дополню ответ выше.
    Сейчас имеет смысл разрабатывать изначально на слеш-командах и у них каждый параметр принимается без какой-то доп обработки. По сути это аналогично вводу с кавычками, но более юзерфрендли
    9FFzZyt.png
    Ответ написан
    Комментировать
  • Как создать в фаерволе правило, блокирующее содержащие символы?

    CityCat4
    @CityCat4
    Дома с переломом ноги
    Никак.

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

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    плохой путь: закрыть доступ боту к каналам, где он не должен реагировать

    средний путь: пойти на фриланс и не потребуется буквально по каждой строчке кода задавать вопрос

    хороший путь: начать уже читать документацию самостоятельно. В данном случае commands.check.
    Там есть и описание и примеры как использовать
    Ответ написан
    Комментировать
  • Как обернуть текст в строку?

    Anopeng
    @Anopeng
    Веб-программист, учу фронт и бек
    А кто должен был учить основы языка?

    'kagura\'s-verity'
    Также не нужно забывать про остальные виды литеральных кавычек
    "kagura's-verity"
    `kagura's-verity`
    Ответ написан
    Комментировать
  • Если синхронизировать данные с удаленного сервера, где правильно запускать rsync, на сервере или на клиенте?

    Adamos
    @Adamos
    Не сильно же удален ваш сервер, если они в одной подсети.
    И вообще-то backup пишется иначе.
    Я обычно запускаю бэкап с той машины, на которой он хранится.
    Во-первых, обратной связи сплошь и рядом просто не бывает (реально удаленный сервер не дотянется до локального за NAT),
    Во-вторых, это же бэкап. Вы его делаете - на случай факапа. И вот на этот крайний случай логично настраивать все так, чтобы та машина, на которой ожидаются проблемы, не имела доступа к бэкапу и не могла его испортить ни при каком сценарии.
    Ответ написан
    Комментировать
  • Не могу найти где ошибка??

    seven5674
    @seven5674
    Старый я уже что бы что-то в себе менять
    А че вот это за ...
    req = requests.get(url, headers)
      if req == 'https://dashboard.blooket.com/login':
    Ответ написан
    2 комментария
  • Как работать с числами в файле?

    AlexNest
    @AlexNest Куратор тега Python
    Работаю с Python/Django
    Вооружиться учебником ->Прочесть -> Открыть файл -> прочитать содержимое -> разделить данные -> привести все числа к типу int/float -> сравнить
    Ответ написан
    2 комментария
  • Работа с CSV-файлами в Python?

    @serhiops
    Python/JavaScript/C++
    Чтобы
    понять, как это все работает
    нужно смотреть документацию/гайды. Абсолютно ничего сложного в этом нет.
    Чтение
    Запись
    Если будет возникать конкретная ошибка, то уже пиши в коментариях.
    Ответ написан
    1 комментарий
  • Как считывать путь к файлу без \n?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Использовать r строку r"E:\nrivet.txt", либо экранировать бэкслеш "E:\\nrivet.txt"
    Ответ написан
    Комментировать
  • Использование staticmethod в Python это плохая практика?

    iggor-markin
    @iggor-markin
    Python Developer
    Вы не задаёте вопросов в этой заметке, поэтому просто прокомментирую. Зло — это когда программист делает какие-то вещи необдуманно. От балды. У вас же есть задача и вы решаете её доступным, понятным и удобным способом. Главная мысль уже описана вами же:
    существуют ситуации, когда в бизнес-логике возникает необходимость
    Ответ написан
    Комментировать
  • Счетчик работает, а команды COGS перестали. Что делать?

    phaggi
    @phaggi Куратор тега Python
    лужу, паяю, ЭВМы починяю
    Счетчик работает, а команды COGS перестали. Что делать?

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

    black1277
    @black1277
    Вольный стрелок
    Швец А. Погружение в паттерны проектирования (2018) - современное продолжение темы банды четырех с примерами на разных языках.
    The Clean Architecture - by Robert C. Martin (Uncle Bob) - но это не совсем новенькое
    Ответ написан
    3 комментария