• Как мне решить проблему когда сервер вместо json отдает html?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Прежде всего надо понять, что защиту от парсинга пишут не дураки. И так же то, что все защиты разные. Как только в интернете появляется гарантировано работающий рецепт обхода какой-то за защиты, ей сразу меняют. Поэтому в каждом отдельном случае приходится искать способ обхода защиты самостоятельно и быть умнее её разработчиков. В каких-то случаях, вы боретесь с подростком-фралансером, пишущим код для маленького бизнеса со скромным бюджетом, тогда вам придётся столкнуться с чем-то типа проверки заголовков, csrf и тому подобными простыми штуками. В каком-то, вы боретесь с корпорацией, в которой целый отдел отличных опытных разработчиков пишет поведенческий фильтр и валидацию на клиентской стороне. В последнем случае вам придётся применять Selenium, ежемесячно платить за прокси и так же ежемесячно править довольно сложный алгоритм, притворяющий группой людей.
    Ответ написан
    Комментировать
  • Как создать зависящие от времени функции не останаливая работу программы на pygame?

    Vindicar
    @Vindicar
    RTFM!
    У тебя должна быть фиксированная частота обновления логики игры.
    Тогда ты сможешь любые задержки выражать в числе кадров, которое должно пройти, прежде чем можно выполнить следующее действие. Соответственно у каждого действия есть счётчик кадров, если он не 0 - действие на кулдауне и выполнять его нельзя. Каждый кадр уменьшаешь ненулевые счётчики на 1.

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

    Заодно почитай, что такое автомат состояний. Пригодится.
    Ответ написан
    Комментировать
  • Почему python скрипт сам останавливается (без ошибок и предупреждений)?

    @twistfire92
    Python backend developer
    Это весь скрипт? или часть? true - это что за переменная? Это же не булевское значение, оно пишется с большой буквы (True). Может что-то как-то меняет значение этой переменной?
    Покажите весь код, т.к. этот скрипт завершится с ошибкой, т.к. true не инициализирована.
    Ответ написан
    Комментировать
  • Почему выводит одинаковые значения при повторе выбора рандомного значения из списка?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    Потому что текст из переменной f один раз создался в цикле while d < r: и все. Ну а дальше вы эту строку "рандом: asdasd\n" просто дублируете в цикле while dd < rr:

    ps:
    from string import ascii_lowercase
    print(ascii_lowercase)
    Ответ написан
    Комментировать
  • Пишу игру на python на windows 10, по курсу и у меня выходит ошибка, как ее исправить?

    Sergomen
    @Sergomen
    Просто делай добро и оно вернётся
    Попробуй pygame.init() перенести в самый верх(после импортов). Знакомому когда-то помогло
    Ответ написан
    2 комментария
  • Почему у меня не получается установить библиотеку sqlite3?

    Нет необходимости устанавливать sqlite3. Он поставляется с python сразу.
    Ответ написан
    2 комментария
  • Как создать в linux собственную команду с аргументом?

    @Anubis_I
    используйте утилиту make и makefile
    Ответ написан
    Комментировать
  • Как интегрировать скрипт Python в PHP+HTML?

    Stalker_RED
    @Stalker_RED
    $command = escapeshellcmd('/path/to/test.py');
    $result = shell_exec($command);
    echo $result;


    (или exec)
    Ответ написан
    4 комментария
  • Метод list() в Python возвращает непустой список. Почему так?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Типичная ошибка, которая рассматривается в каждом учебнике по питону.
    Во-первых, list - это не метод, а тип, который инстанцируется в список, если его вызвать.
    Во-вторых, вот в этой строчке def __init__(self, elements=list()): создаётся список. Он создаётся оин единственный раз при объявлении класса. Значение этого списка будет присвоено аргументу elements по умолчанию при каждом вызове конструктора без указания этого аргумента.
    То есть один и тот же список будет сохранён в атрибутах всех объектов этого типа, которые были инстанцированы без указания параметра.
    У всесх ваших таких экземплярах внутри ссылка на один и тот же список. Если через одну ссылку в список добавить элеенты, то через другую ссылку доступен тот е самый список с уже добавленными элементами.
    Ответ написан
    Комментировать
  • Метод list() в Python возвращает непустой список. Почему так?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    list()
    Выполняется только один раз при инициализации, при этом возвращает пустой список, и затем, когда вы добавляете новые элементы, они остаются в этом списке
    Посмотрите https://docs.python-guide.org/writing/gotchas/#mut...
    Там же есть и решение, которое нужно использовать - https://docs.python-guide.org/writing/gotchas/#wha...

    def append_to(element, to=None):
        if to is None:
            to = []
        to.append(element)
        return to
    Ответ написан
    6 комментариев
  • Метод list() в Python возвращает непустой список. Почему так?

    @oleg_ru
    Так это работает в питоне. В значение по умолчанию нельзя указывать изменяемый тип. Он создается один раз как поле функции, и при каждом вызовое функции будет этот один и тот же объект.
    можно делать так:

    def __init__(self, elements=None):
            self.elements = elements or list()
    Ответ написан
    1 комментарий
  • Проблемы в коде на Python?

    Staffic Доброго времени суток!
    Для начала сделай отступы в своём коде.
    А потом ты ошибся в последней строчке. Сравни свой код и код из книги.

    def create_map():
        global obstacles
        locations = []
        for i in range(10):
        row = random.randint(0, 9)
        col = random.randint(0, 9)
        location = [col * 64 + 20, row * 64 + 20 + 640]
        if not (location in locations):
            locations.append(location)
            type = random.choice(["tree", "flag"])
            if type == "tree": img = "skier_tree.png"
            elif type == "flag": img = "skier_flag.png"
            obstacle = ObstacleClass(img, location, type)
            obstacles.add(obstacle)


    Вот здесь есть код из книги и все файлы.
    Ответ написан
    Комментировать
  • Почему вложенные операторы if не срабатывают?

    Vlad_IT
    @Vlad_IT
    Front-end разработчик
    Вы немного неправильно понимаете условные операторы

    if guess == number:
        print('Число выбрано верно')
    else:
        print('Число выбрано неверно')


    В вашем же случае, блок
    if True:
        print('Число выбрано верно')

    выполняется всегда, т.к. True истина. А этот блок
    if False:
        print('Число выбрано неверно')

    никогда не выполняется. А т.к. if True у вас внутри if guess == number, надпись выводится толлько если число выбрано верно, в противном случае ничего не выводится
    Ответ написан
    3 комментария
  • Как заменить гитовский проект целиком?

    saboteur_kiev
    @saboteur_kiev Куратор тега Git
    software engineer
    Никак. Оставить эти проекты в своих раздельных репозиториях.
    При попытке соединить, если у вас совпадут имена бренчей (а как минимум мастер совпадет), будет жесть.

    Если очень надо - переименовать проект A в A_ARCHIVED а проект B в проект А.
    Ответ написан
    Комментировать
  • Как синхронизировать базу данных между сервером (PostgreSQL) и клиентом (SQLite)?

    firedragon
    @firedragon
    Не джун-мидл-сеньор, а трус-балбес-бывалый.
    Поищите вот тут.
    https://www.google.com/search?q=postgresql+sqlite+...

    Если сугубо руками. То нужно сделать следующее, не важно через веб сервис или через sqldump

    1. Перенос всех словарей (1 раз)
    2. Перенос всех данных или поднабора (1 раз)
    3. Процесс синхронизации клиента и сервера (много раз)

    Итак п.1 в данный момент формируется схема обмена данными и фиксируется, важно что бы в дальнейшем учитывать изменения в БД. Перенос происходит на клиент либо руками, либо с помощью сервиса.
    GET /api/dbsync/getdictionaries/
    {
    "schema": "0.4",
    [ 
    { "name":"cityes", "sql": "create table ....."},
    .....
    ]
    }


    где передается схема и дата начала
    GET /api/dbsync/getdata/0.4/31.05.2020
    Этот запрос отдает поднабор данных или просто список таблиц которые нужно создать.
    обратите внимание на первичные ключи, желательно что бы они были типа UUID или GUID
    либо таблицы содержали служебные поля позволяющие идентифицировать пользователя.
    Кроме того необходимы поля created, updated
    Также важно что бы данные отдавались конкретно для этого пользователя. Типичный пример таблица users будет содержать только его, и возможно список его подчиненных, а таблица customer только его заказчиков

    пункт 3
    GET /api/dbsync/sync/0.4/31.05.2020
    получение с сервера только дельты данных на указанный период

    POST /api/dbsync/sync/0.4
    логика клиента формирует пакет изменений, сервер сам разбирается что закоммитить, а на какие данные ругнуться, мол уже исправлено это какие изменения оставить.
    В ответ выдается список статусов для каждой записи.

    Вот примерная простая схема.
    Ответ написан
    Комментировать
  • Как установить порядок компиляции файлов в Atmel Studio?

    @res2001
    Developer, ex-admin
    Непосредственно к Atmel Studio это не относится. Это особенность работы С/С++ компиляторов.

    Будто бы компилятор сперва отдельно от всего, игнорируя что написано в main.c, отдельно компилирует led_display.c

    В корень зрите. Каждый файл исходных кодов в Си и С++ компилируется отдельно от других. Это называется единицей трансляции.
    Объединяются объектные файлы только на этапе линковки. В процессе сборки исполняемого файла компиляция исходников и линковка объектных файлов разделены.

    Макросы, которые должны быть общими для всех исходников помещайте в отдельные хедеры и включайте эти хедеры в соответствующие файлы исходных кодов.
    Как вариант макросы можно задавать глобально опцией компиляции для всех файлов в проекте. Можно через makefile или опциями в проекте в IDE.
    В вашем случае можно просто этот макрос поместить в led_display.h.
    Ответ написан
  • Как сравнивать числа четвёртой точности в C11?

    Вам нужен тип __float128. Вы пытаетесь сравнить комплексные числа.
    Ответ написан
    1 комментарий