Задать вопрос
  • Как суммировать количество повторяющих значений?

    rozhnev
    @rozhnev
    Fullstack programmer, DBA, медленно, дорого
    WINDOW FUNCTIONS в PostgreSQL уже давно:
    select
        t.*,
        count(*) over (partition by number_id)
    from t order by id;


    https://sqlize.online/sql/psql13/3d37b9a0fe32505b9...
    Ответ написан
    Комментировать
  • Установка mysql - ошибка 1045(28000)?

    @Akina
    Сетевой и системный админ, SQL-программист.
    - ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)


    Выделенный фрагмент чётко указывает на причину - использованная строка запуска не настроена на передачу пароля.

    Дословно сообщение означает: пользователя 'root'@'localhost' не получилось аутентифицировать с пустым паролем. Всё, не больше и не меньше. А по какой причине - пароль не пуст, такого юзера нет, или вообще это роль, а не юзер - сообщение установить не позволяет.

    Как фиксить - уже сказано в комментарии, который сделал Максим Припадчев.
    Ответ написан
    Комментировать
  • Как правильно написать sql запрос?

    iMedved2009
    @iMedved2009
    Не люблю людей
    select requests.*
    from (SELECT export_id, max(imported_at) as imported_at FROM requests GROUP BY export_id) as t
             join requests on requests.export_id = t.export_id and requests.imported_at = t.imported_at
    Ответ написан
    1 комментарий
  • Как получить название столбца sqlite?

    Vindicar
    @Vindicar
    RTFM!
    Поясню ответ выше: если у тебя названия стобцов неизвестны заранее, ты неправильно спроектировал базу данных. Столбцы должны быть неизменны - меняется только набор строк.

    Если у тебя есть ситуация, когда многие сущности связаны со многими (например, отношение "друзья" между пользователями), используй связную таблицу для этого.
    Ответ написан
    2 комментария
  • Как упомянуть ник пользователя дискорд через ID, не используя mention?

    fenrir1121
    @fenrir1121 Куратор тега discord.py
    Начни с документации
    не используя mention
    Не используя почему?
    AttributeError: 'str' object has no attribute 'id'
    потому что user.id, а лучше сразу user.mention.
    Не важно что пользователь вводит только id, в команду приходит объект disnake.User

    P.S. А еще вы забыли сделать обработку для await user.send(message) на случай если у человека закрыта личка.
    Ответ написан
    Комментировать
  • Как найти угол между двумя точками?

    Dr_Elvis
    @Dr_Elvis
    В гугле забанен
    угол между ДВУМЯ точками всегда 180 градусов, так как они ВСЕГДА находятся на одной прямой.
    Ответ написан
    Комментировать
  • Создание файла python. Как создать файл,название которого вводится после запуска программы?

    Lord_of_Rings
    @Lord_of_Rings
    Дунадан - северный странник. Злой, но очень добрый
    name = input("Введите название файла")
    with open(name, "w"):
        pass
    Ответ написан
    Комментировать
  • Нужно написать загадку используя python. Где я сделал ошибку?

    Замените or на and.
    По закону де Моргана not (A or B) = not A and not B
    Ответ написан
    1 комментарий
  • Как создать новый словарь, не меняя старый?

    Vindicar
    @Vindicar
    RTFM!
    rows = self.rows
    НО! В тоже время изменяется из self.rows, который является другим списком.

    Не является. Твой оператор просто присвоил переменной rows ссылку на тот же самый список, что и self.rows.
    Это легко проверить оператором is или сравнением id():
    print(rows is self.rows, id(rows) == id(self.rows))  # True True

    Более того, если ты только скопируешь сам список:
    rows = self.rows.copy()
    То всё ещё поймаешь проблемы, так как скопируются ссылки на элементы, а не их значения:
    print(rows is self.rows, id(rows) == id(self.rows))  # False False
    print(rows[0] is self.rows[0], id(rows[0]) == id(self.rows[0]))  # True True

    Тебе нужно сделать глубокую копию (deepcopy). Это можно сделать вручную, так как у тебя всего два уровня вложенности (список-словарь):
    rows = [rowdict.copy() for rowdict in self.rows]
    Для более глубоких уровней есть функция copy.deepcopy(), но у неё есть свои подводные камни. Цитата:
    Two problems often exist with deep copy operations that don’t exist with shallow copy operations:
    Recursive objects (compound objects that, directly or indirectly, contain a reference to themselves) may cause a recursive loop.
    Because deep copy copies everything it may copy too much, such as data which is intended to be shared between copies.
    Ответ написан
    Комментировать
  • Как из массива целых чисел найти все возможные комбинации (не только двух чисел, а и более) дающие искомую сумму?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    Во-первых, таких комбинаций может быть до 2^n, где n - количество чисел в массиве.

    Можно рекурсивно перебрать числа: функция принимает список уже выбранных чисел, их сумму и сколько первых чисел массива обработаны. Если все числа обработаны, функция сравнивает сумму с искомой и, если надо, выводит список. Потом завершается. Если еще не все числа обработанны, то функция два раза рекурсивно вызвается с параметрами: Текущее число добавлено или нет в список, обработано на одно чисел больше.

    Другой вариант, через битовые маски, без рекурсии. Перебирайте число от 0 до 2^n-1. Потом смотрите на него, как на битовую маску. Так вы переберете все подмножества из n элементов. Если i-ый бит установлен, то берите i-ое число в сумму. Если сумма совпала с искомой - вы нашли вариант.

    Ну и самый быстрый вариант: с использованием динамического программирования. Как в задаче о рюкзаке вам надо подсчитать F(i,j) - можно ли числами с i-ого по последнее собрать сумму равную j. Потом рекурсивый перебор оптимизируется с этой информацией. Вы текущее число берете или нет и запускаетесь рекурсивно, если оставшимеся числами можно набрать оставшуюся сумму до ответа.

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

    API - это не само приложение, а описание того, как одно приложение может взаимодействовать с другим.

    В случае winapi - это описание того, как ты можешь взаимодействовать с виндой (как раз через вызовы определённых функций)

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

    Консольное приложение в принципе может быть некоторый способом для взаимодействие с чем-то - git тому пример, но у консольного приложения тоже есть свой контракт
    Ответ написан
    Комментировать
  • Если "украл" рисунок у нейросети, может ли на тебя подать в суд владелец этой нейросети?

    Нет никакого "ИИ" => Украсть у робота рисунок ты не можешь.
    Есть только некоторое ПО, с помощью которого ты можешь создавать картинки.
    У программы ты украсть тоже ничего не можешь, тк программа не субъект права. (прим из реальной жизни: Когда ты крадёшь деньги из сейфа - ты крадёшь не у сейфа, а у его владельца)

    Так что смотри на лицензию на это ПО - разрешено ли использовать сгенерированные картинки в коммерческих целях.

    Если уж корректно задавать вопрос: подала ли бы Студия Артемия Лебедева за то, что ты украл пикчу у Николая Иронова?

    Есть оферта: https://ironov.artlebedev.com/static/offer-ru.pdf
    Там есть раздел и про интеллектуальную собственность в том числе.
    Автором является студия артемия лебедева.
    Тебе даются исключительные права, но без права на сублицензирование, и ты не имеешь права писать, что автор - студия артемия лебедева.
    Студия артемия лебедева может использовать сгенерированные логотипы для саморекламы, например.

    Если ты скопируешь чужой логотип, который сгенерирован Николаем Ироновым, то ты "крадёшь" его у владельца логотипа.
    Если ты скопируешь логотип, который ты не оплатил в рамках тарифа - ты украдёшь у студии артемия лебедева и они в принципе имеют возможность подать на тебя в суд и выиграть его, тк у тебя на этом моменте ещё нет исключительных прав.
    Ответ написан
    7 комментариев
  • Задача по математики из 5-го класса которая завела меня в ступор?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    a + g = 355600
    a = 2g + 97300
    2g + 97300 + g = 355600
    3g = 355600 - 97300
    g = 258300 / 3 = 86100
    a = 2 * 86100 + 97300 = 269500
    Ответ написан
    Комментировать
  • Как реализовать онлайн трансляцию экрана на Python?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Сам по себе Python ничего не транслирует. Но из него можно вызвать утилиты такие как
    * ffmpeg
    * openRTSP
    * cvlc (Concole VLC player)
    и дать им задание что-то транслировать.

    Еще почитай про RTSP/RTP протоколы для общего развития.

    Вообще это задание требует обширных знаний сетей и протоколов. И просто на одном Python тут я считаю нельзя выехать.
    Ответ написан
    Комментировать
  • Как определить коллизию квадратов?

    wataru
    @wataru Куратор тега Математика
    Разработчик на С++, экс-олимпиадник.
    Вот тут программисту и нужна математика (совсем чуть чуть).

    Квадрат - это все точки (X, Y), которые удовлетворяют неравенствам:
    x1 <= X <= x1 + w1
    y1 <= Y <= y1 + w1


    Пересечение двух квадратов - это точки, которые удовлетворяют одновременно каждой паре неравенств, т.е. удовлетворяют сразу четырем неравенствам:
    x1 <= X <= x1 + w1
    y1 <= Y <= y1 + w1
    x2 <= X <= x2 + w2
    y2 <= Y <= y2 + w2


    Тут уже видно, что фактически есть пара неравенств на X, и есть пара неравенств на Y. Они независимые. Вот и получается, что пересечение можно искать отдельно по каждой оси.

    Рассмотрим одну пару:
    x1 <= X <= x1 + w1
    x2 <= X <= x2 + w2


    Вообще, такие системы неравнеств решают в школе, классе этак в 7.

    Сконцентрируемся на левых границах. Что значит, что X >= x1 и X >= x2? Это значит, что X больше обоих чисел x1 и x2. Это можно записать одним неравнеством - X больше максимума из двух чисел:
    max(x1, x2) <= X

    Так же и по правым границам:
    X <= min(x1 + w1, x2 + w2)

    В итоге:
    max(x1, x2) <= X <= min(x1 + w1, x2 + w2)

    Эти неравенства имеют решение, если левая граница не превосходит правой:
    max(x1, x2) <= min(x1 + w1, x2 + w2)

    Вот у вас условие, что по оси OX есть хоть одна точка пересечения. Если вам касающиеся квадраты не надо считать пересекающимеся, то замените знак <= на строгое неравенство.

    Точно также проверьте, что есть пересечение по OY. Если пересечение есть и там и там, то квадраты пересекаются. Т.е. весь ваш код должен найти 2 минимума, 2 максимума, сделать 2 сравнения и соединить их через логичиское И.
    Ответ написан
    5 комментариев
  • Почему аватары в YouTube то появляются, то исчезают?

    почему они тогда иногда появляются?
    Потому что YouTube хостится не на одной машине под столом у сисадмина, а на тысячах серверов, распределённых по всему миру. А РКН блокирует диапазоны IP.
    Ответ написан
    Комментировать
  • Как выбрать наибольшие значения из списка массивов и вывести их?

    0xD34F
    @0xD34F
    sorted(arr, key=lambda n: n[2])[-3:]
    Ответ написан
    Комментировать
  • Как записать в список?

    Vindicar
    @Vindicar
    RTFM!
    Сделать глобальный словарь списков, ключом словаря сделай id пользователя.
    Когда надоест мучаться с перезапусками, переделаешь на БД.
    Ответ написан
    Комментировать
  • Почему не стоит использовать f строки в SQL Python запросах?

    ma4akk
    @ma4akk
    Использование f строки в SQL запросах может быть небезопасно, потому что оно позволяет вставлять значения переменных непосредственно в SQL запрос. Это может привести к SQL injection - атаке, когда злоумышленник вводит в запрос подозрительные данные, чтобы получить доступ к базе данных или внести в нее изменения.

    Чтобы избежать этой проблемы, рекомендуется использовать параметризированные запросы. Это значит, что значения переменных не вставляются непосредственно в запрос, а передаются отдельно как параметры. В SQLite это можно сделать с помощью вопросительного знака (?) вместо значения переменной:

    connect = sqlite3.connect('INFO.db')
    cursor = connect.cursor()
    
    GLAV_USER = message.from_user.id
    cursor.execute("SELECT ID FROM table WHERE MEMBER = ?", (GLAV_USER,))


    Такой подход более безопасен и предотвращает возможность SQL инъекцй.
    Ответ написан
    3 комментария
  • Почему в random.choice() ошибка?

    ZIK1337
    @ZIK1337
    странно видеть такой вопрос
    потому что этот метод принимает на вход последовательность, а не мапу
    Ответ написан
    Комментировать