Задать вопрос
  • Как распознать текст, что написан нейросетью?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Нужна новая нейросеть которая будет обучена на выборке обычных постов. И на выборке ответов GPT.
    Supervized. Тоесть мы как учитель - указываем где какие.

    Простые частотные метрики текста такие как tf/idf здесь не подходят. Скорее всего. Тут нужна
    структурная. Я заметил что GPT часто выдает ответ в виде однородной структуры.
    Типа введение. Пункты перечислений. И какое-ро резюме.

    Люди обычно такой схемы не придерживаются.
    Ответ написан
    2 комментария
  • Программа работает неправильно, что сделать, чтобы программа заработала?

    ElonMask2
    @ElonMask2
    Autor of Tesla Machini and SpaxeX
    s = [10,
    -5,
    -2,
    -1,
    6,
    3,
    0,
    -2,
    -2,
    -3,
    -3,
    0,
    5,
    8]
    
    ss = []
    window = 2
    for _ in range(0, len(s)-2):
       window += 1
       frame = s[window - 3:window]
       ss.append(sum(frame))
    
    mi = ss.index(min(ss))
    slice = s[mi: 3 + mi]
    print(slice)
    Ответ написан
    1 комментарий
  • Зачем именно нужны связи в бд?

    rozhnev
    @rozhnev Куратор тега MySQL
    Fullstack programmer, DBA, медленно, дорого
    В Вашей базе уже есть связь мезду таблицами Message и User. Поля Message.userid => User. id связывают таблицу Message с User
    К Вашей схеме Вы можете только добавить внешний ключ который не позволит вставлять сообщения от несущуствующего пользователя
    CREATE TABLE User (
        id INTEGER NOT NULL AUTO_INCREMENT,
        login VARCHAR(255) NOT NULL,
        password VARCHAR(255) NOT NULL,
        status INTEGER NOT NULL,
        PRIMARY KEY (id)
    );
    
    CREATE TABLE Message (
        id INTEGER NOT NULL AUTO_INCREMENT,
        userid INTEGER NOT NULL,
        message VARCHAR(255) NOT NULL,
        PRIMARY KEY (id),
        FOREIGN KEY (userid) REFERENCES User(id)
    );


    https://sqlize.online/sql/mysql57/35f0f9087119cc77...
    Ответ написан
    8 комментариев
  • Зачем именно нужны связи в бд?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Нужно поговорить об аномалиях. Например в твоей системе я могу (теоретически) добавить месседж
    который не принадлежит ни одному пользователю системы. Я просто сделаю

    insert into message(9999999, -1, "Mua-haha...");

    И у меня есть пост от анонимоса который не зарегистрирован как пользователь.

    Разумеется можно полагаться на логику твоего приложения и думать что такая ситуация невозможна
    но с точки зрения БД она вполне возможна потому как родственная связь User + Message нигде не объявлена.
    И SQL позволяет это сделать.

    Чтоб поправить ситуацию надо эту связь добавить и тогда я не смогу создать фейковые посты от анонимосов.
    ALTER TABLE Message
    ADD FOREIGN KEY (userid) REFERENCES users(id);

    По умолчанию констрейнт создается с опцией restict (это было в Оракле как в Майскл - не знаю)
    и это гарантирует что невозможно также удалять родительские записи пока есть дочки.
    Для скорости ссылочные ключи всегда - индексированы.

    Рассуждать на тему вреда от аномалий - это просто терять время. Каждый владелец БД сам решает
    какие уровни строгости ему вводить. Вообще любая теория касаемая БД - по сути просто развивает
    идею строгости НФ1,2,3,4,5,6 и ссылочных ограничений.

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

    По сути вопрос сводится к тому как не создавать мусор в БД.
    Ответ написан
    2 комментария
  • Как инициализировать декоратор в классе, а внутри использовать этот декоратор?

    Vindicar
    @Vindicar
    RTFM!
    Ты хочешь поместить хэндлеры в класс?
    Я в таких случаях делаю немного иначе.
    Делаю свой декоратор, который принимает те же параметры, что и ботовый, но просто сохраняет их в отдельном атрибуте декорируемого метода. Благо методу можно создать новый атрибут через setattr() или простым присваиванием.
    При конструировании экземпляра класса через dir() перечисляю содержимое класса, ищу методы, среди них ищу методы с моим атрибутом (т.е. те, которые были декорированы). Для каждого такого метода получаю bound method (через getattr(self, method_name)) и вызываю оригинальный декоратор на нём с сохранёнными параметрами. Ведь декоратор - это функция, его можно вызывать как функцию.
    Часть, связанную с конструированием, можно спрятать или в родительском абстрактном классе, или в метаклассе, чтобы не повторять для каждого класса с обработчиками.
    Ответ написан
    Комментировать
  • Почему не работает IF-ELSE?

    Vindicar
    @Vindicar
    RTFM!
    1. Как проверял? Просто пытался угадать? Рандом - штука такая, могло просто не везти.
    2. Если пользователь с первого раза введёт правильный key, условие цикла сразу будет False, и цикл не выполнится - а значит, не выполнятся и ifы.

    Я бы посоветовал сделать так:
    max_tries = 5  # число попыток
    key = -1  # заведомо некорректное значение
    for i in range(1, max_tries+1):
        key = int(input(f'Попытка №{i}: '))
        if key == lock:
            print(f'Угадал c {i}-й попытки!')
            break
    else:  # этот else относится к for! 
        # он выполнится, если for НЕ БЫЛ прерван по break
        print('Попытки кончились. =(')
    Ответ написан
    1 комментарий
  • Зачем надо (1) в COUNT?

    mayton2019
    @mayton2019
    Bigdata Engineer
    С практической точки зрения - надо смотреть план исполнения запроса. Там будет указан тип сканирования и предикат как БД фильтрует строки. Если план для
    SELECT (1)
    не отличается от
    SELECT (*)
    то тогда можно считать что это - одно и тоже.

    Почему обсуждение теоретического SQL я считаю здесь вредным и бесполезным? Потому что ни я ни
    кто либо из присуствтующих стандарт SQL не читал. Это - закрытый и платный документ. И
    обычно нам достается не текст стандарта а текст самой реализации на Oracle/PG/MySQL.
    Вот и говорим о реализации а не о стандарте. А реализации бывают разные. В оракле например
    требуется фейковая табличка dual для пустых безтабличных запросов. В других dbms
    - фейковая табличка не нужна. Синтаксис другой.

    Если кто-либо из присуствующих читал стандарт SQL и знает как объявлено поведение count() - то прошу
    привести хотя-бы цитату.
    Ответ написан
    1 комментарий
  • Почему пайтон не видит глобальную переменную?

    Vindicar
    @Vindicar
    RTFM!
    1. Судя по отступам, у тебя get_answer() заканчивается на строке answer = input("Введите слово: ")
    2. Прежде чем упоминать переменную как глобал, она должна быть глобально определена, т.е. ей должно быть присвоено значение вне функции.
    3. Нафига тут вообще глобальная переменная?
    Ответ написан
  • Можно ли эмулировать нажатие на кнопку на сайте библиотекой Бютифул суп?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    На Авито эту кнопку сделали как раз для того, чтобы парсеры обламывать.
    Ответ написан
    2 комментария
  • Как бесконечное количество трехмерных пространств расположенных на четвертой оси образуют четырехмерное пространство?

    Griboks
    @Griboks
    Человек не может представить четырёхмерное пространство. Но зато вы можете представить его модель, например как пространство + время или как поле четырёхкомпонентных векторов.
    Ответ написан
    Комментировать
  • Почему метод get не работает в цикле?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Вы предлагаете нам гадать тут на кофейной гуще?
    Никаких входных данных, по которым можно было бы судить о причине неработоспособности вашего кода вы не предоставили.
    Я могу перечислять возможные причины вечно!
    - может быть в index.html мало или нет данных
    - возможно вы неправильно ищете элементы в html
    - некорректно сформирована ссылка с пагинацией (кстати. почему не пользуетесь параметрами, а лепите в урл?)
    - сайт имеет защиту от скачивания тпым перебором чисел, может быть ему нужен еще какой-то формальный параметр
    - вы не находите куда сохраняется результирующие файлы из-за непонимания что такое текущий каталог
    - вы не дожидаетесь ваших 10 секундных таймаутов
    - вы не в тот каталог смотрите в поисках результатов
    - как-то не так запускаете и не видите ошибок, например с доступом.

    С учетом того, что вы даже сюда скопировали код как-то косо и косо подменили куски строк в коде на плейсхолдеры, может быть что угодно из перечисленного
    Ответ написан
    Комментировать
  • Как сохранить объект с кирилицей в файл формата JSON на Python?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Спорим у вас винда?
    Прочитайте спецификацию функции open. В частности про параметр encoding.
    Когда записываете текст в виде байтов (а в файлах он именно так хранится), то нужно понимать какой кодировкой вы кодируете не ascii-символы.
    Вы явно не указываете кодировку, поэтому выбирается кодировка по умолчанию. Посмотреть что у вас там по умолчанию можно вот этой фунцией sys.getdefaultencoding()
    Именно в такой кодировке нужно открывать ваш файл на чтение, чтобы увидеть там русские буквы.
    В винде у вас скорее всего одна из двух кодировок там может быть. И она разная в зависимости от того в консоли вы запустили свою прогу, или в IDE. А ещё подстава - в винде по умолчанию однобайтовые кодировки, поэтому не все символы можно в них представить!
    С этим в линуксе гораpдо лучше. По умолчани везде utf-8.

    Вот, кстати, можете проверить что получится для понятности:
    > 'íåæèëîãî'.encode('latin1').decode('cp1251')
    'нежилого'
    Ответ написан
    1 комментарий
  • Не понимаю суть ошибки, можете объяснить?

    Vindicar
    @Vindicar
    RTFM!
    from sqlite import db_start, create_profile, edit_profile
    from main import balance


    main импортирует sqlite, который импортирует main, который импортирует sqlite, который импортирует main, который импортирует sqlite, который импортирует main, который импортирует sqlite, который импортирует main, который импортирует sqlite, который импортирует main, который импортирует sqlite, который импортирует main, который импортирует sqlite, который импортирует main, который импортирует sqlite, который импортирует main, который импортирует sqlite, который импортирует main, который импортирует sqlite, который импортирует main, который ...
    Ну ты понял.

    Быстрого волшебного решения тут нет. Разбирайся с областями видимости, избавляйся от глобальных переменных.
    Например, почему у тебя при создании нового профиля используется balance? Т.е. новый пользователь получает столько денег, сколько было у последнего активного?
    Почему вообще у тебя вещи, специфичные для одного пользователя, лежат то в глобальных переменных, то в данных машины состояний (state)? Бери их из БД , когда они потребуются.
    Ответ написан
    6 комментариев
  • Как в Beautiful Soup сделать поиск по атрибутам?

    drygdryg
    @drygdryg
    Python-разработчик
    Просто укажите True в значении нужного атрибута, если ожидаете, что он должен присутствовать у элемента:
    from bs4 import BeautifulSoup
    
    document = """<tag a="1" b="2"/>
    <tag a="2"/>
    <tag a="3" b="4"/>
    <tag a="4"/>
    <tag a="5"/>
    <tag a="6" b="6"/>
    """
    soup = BeautifulSoup(document, 'html.parser')
    for element in soup.find_all('tag', b=True):
        print(element.get('b'))

    Документация: https://www.crummy.com/software/BeautifulSoup/bs4/...
    Ответ написан
    Комментировать
  • Как определить ближайших соседей прямоугольника с заданной стороны на поле с пропусками, без полного перебора?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    Эта задача решается алгоритмом "сканирующая прямая".

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

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

    Тут подойдет что-нибудь вроде std::set в C++ - структура хранящая упорядоченное множество объектов, с доступом и изменением за логарифм, умеющая искать ближайший к заданному значению слева и справа (lower_bound, upper_bound). Хранить в ней мы будем вертикальные отрезки, помеченные номерами их прямоугольникв. Не знаю ее аналоги в других языках - нужно что-то реализованное или на binary search tree, или на skip list.

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

    В этой задаче можно забить на правые границы прямоугольников и на их ширину (раз нет пересечений). Соседями каждого отрезка - левого края будут ближайшие к нему левые края каких-то прямоугольников.
    Поэтому вам надо получить все отрезки заданные в виде {x, y1, y2, id} и отсортировать их (сначала по x, потом по y). Потом в этом порядке их обходите и применяйте новый отрезок к структуре данных. Все удаляемые отрезки + 2 пересекающихся сверху и снизу пойдут в список соседних для нового отрезка.

    Этот алгоритм за O(n log n) получит всех соседей для всех прямоугольников.
    Это что-то похожее вот на эту задачку с leetcode
    Ответ написан
    2 комментария
  • Почему дублируется слэш и не работают сырые строки?

    Vindicar
    @Vindicar
    RTFM!
    Обрати внимание, как ты выводишь значение.
    В питоне есть два строковых представления: str и repr.
    str - человекочитаемое представление. Его можно увидеть, сделав просто print(path). Сразу станет видно, что ничего не удваивается.
    repr, же, по идее, представляет объект так, что если его записать прямо в коде, как показано - получим обратно этот объект. Если это вообще возможно.
    В случае с числами разницы нет.
    В случае со строками - она будет. У тебя на скриншоте именно repr-представление строки - в кавычках, и с экранированием спецсимволов. При этом, записав такую константу, получишь ту же самую строку, что логично.
    Ведь 'a\\b' - это то же самое, что и r'a\b'.

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

    drygdryg
    @drygdryg
    Python-разработчик
    Потому что в Python обратная косая черта — это специальный символ, применяемый для экранирования других символов. Поэтому обратная косая черта не может быть сама по себе, и если вы не используете сырые строки (r'\'), то если хотите написать обратную косую черту, вам нужно экранировать её такой же обратной косой чертой ('\\'). И когда вы вводите символ "\" через сырую строку, Python при выводе внутреннего представления этой строки (representation, repr.) экранирует этот символ, что видно на вашем скриншоте.
    В официальной документации можно почитать об этом здесь: https://docs.python.org/3/reference/lexical_analys...
    Ответ написан
    Комментировать
  • Общий поворот клеток, как это реализовать?

    @U235U235
    Координаты частиц и вектора направлений умножаешь на матрицу поворота. Все.
    Ответ написан
    Комментировать
  • Как найти такой определенный интеграл?

    Nizamovoff
    @Nizamovoff Автор вопроса
    HSE CS AMI student
    Разобрался. tgx имеет точки разрыва при pi/2 и 3pi/2, поэтому надо было разбить на несколько интегралов и для каждого из них отдельно найти предел 63eba110db3d7023894365.png
    Ответ написан
    Комментировать
  • Как сделать случайное имя пользователя?

    iMedved2009
    @iMedved2009
    Не люблю людей
    create table public.profiles (
      id uuid not null,
      username text default concat('Пользователь #', random()*100000),
    
      primary key (id)
    );
    Ответ написан
    2 комментария