• Почему список lambda выражений возвращает одинаковые числа?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Все сгенерированные лямбды используют ссылку на переменную из включения. К моменту, их вызова включение уже завершило свою работу и x имеет значение последней итерации - 2. Чтобы избежать такого поведения, нужно замкнуть значение переменной: l1 = [lambda x=x: x for x in range(3)]
    Ответ написан
    1 комментарий
  • Могу задать несколько вопросов по технологии отправки/получения информации с сервера (fetch)?

    vabka
    @vabka
    Токсичный шарпист
    Нет, не можешь.

    https://qna.habr.com/help/rules

    3. В процессе создания вопроса пользователь Сервиса обязан:
    3.7. Не размещать несколько разнородных вопросов в рамках одного вопроса. Наличие дополнительных вопросов в описании вопроса допускается лишь в том случае, если ответы на эти вопросы непосредственно взаимосвязаны друг с другом и могут рассматриваться как подвопросы одного сложносочиненного вопроса.

    На все вопросы можно ответить "RTFM", приложив две ссылки:
    https://developer.mozilla.org/ru/docs/Web/API/Fetc...
    https://developer.mozilla.org/ru/docs/Web/JavaScri...
    И твой вопрос лучше было бы задавать в виде кода, ибо:
    // 1 fetch возвращает промис, который представляет ответ от сервера
    const promiseWithResponse = fetch("https://example.com");
    // 2 response.json() возвращает промис, который представляет спарсеный json
    const promiseWithJson = promiseWithResponse.then(response => response.json());
    // 3. console.log возвращает undefined и логирует переданный объект
    const emptyPromise = responseWithJson.then(json => console.log(json));


    1) Почему здесь не играет роли - возвращать console.log(json) или нет. Ведь и в том и другом случае нам вернётся чистый нужный нам объект с нужной нам информацией.

    Хз как у тебя так получилось. console.log возвращает Undefined, а по тому после него ничего в промисе не будет.
    Дай пример своего кода.
    При использовании, fetch автоматически создаёт промис. Но как он это делает? Вот так?
    const fetch = new Promise("")
    Или он работает как-то по-другому?

    Ну там где-то внутри fetch создаётся Promise и возвращается. Как именно - фиг знает. Это может быть и на плюсах реализовано, в теории.

    Говорится, что метод .json() позволяет конвертировать промис в JSON-формат. Но я не вижу разницы между тем, чтобы просто вызвать fetch и аргументом передать ссылку, и тем, чтобы вызвать fetch и аргументом передать ссылку, вызвать метод then и передать в качестве аргумента колбэк-функцию, а в ней написать response.json() и вернуть это, вызвать ещё метод then и там написать console.log(json). Потому что и там и там все во вполне понятном и читабельном формате объекта.


    Это тебе так только кажется из-за того что ты все свои варианты в developer console проверяешь.
    И .json не сам промис преобразует, а тело ответа.
    Ответ написан
    4 комментария
  • Могу задать несколько вопросов по технологии отправки/получения информации с сервера (fetch)?

    @wonderingpeanut
    1) console.log() возвращает undefined. Если функция ничего не возвращает явно, то неявно возвращается undefined. Поэтому нет разницы, возвращать console.log(json) или нет.
    2) Не совсем понял. Имеешь в виду это?

    // const a не содержит result в PromiseResult
    const a = promise().then((result) => {
      console.log(result)
    })
    // const b содержит result в PromiseResult
    const b = promise().then((result) => {
      return result;
    })

    Насчет фетча, фетч реализован с помощью конструктора XMLHttpRequest.
    const fetch = (url) => new Promise((resolve, reject) => {
      // тут создается новый инстанс XMLHttpRequest и через него происходит запрос на сервер
      // подробнее тут https://developer.mozilla.org/ru/docs/Web/Guide/AJAX/Getting_Started
      // пример реализации fetch можно посмотреть здесь https://github.com/github/fetch/blob/master/fetch.js#L506
    })
    Ответ написан
    3 комментария
  • Могу задать несколько вопросов по технологии отправки/получения информации с сервера (fetch)?

    Anopeng
    @Anopeng
    Веб-программист, учу фронт и бек
    https://learn.javascript.ru/async
    https://learn.javascript.ru/network

    По порядку.
    1. Да, нам нужно его обработать
    2. Ну как бы да, нам предстоит обработать второй промис
    3. Не нужно возвращать console.log, это не промис, а просто лог результата в консоль, возвращает undefined
    1) Я объяснил в прошлом пункте
    2) Опять же, console.log никак не влияет на это
    ...
    При использовании fetch он создает и возвращает промис. Это уже внутренняя часть языка, ты не должен акцентировать на ней внимание
    ...
    Так сделано, что нужно обрабатывать несколько промисов. Хз, зачем так сделали)

    Контакты в профиле
    Ответ написан
    2 комментария
  • Как обойти систему верификации при автоматизированной регистрации аккаунта?

    @Arlekcangp
    Разработчик, Лид, Архитектор ПО
    можно также автоматически заходить на указанную почту, в которую пришло письмо с кодом, парсить его оттуда и вставлять в поле при регистрации

    Это имеет смысл делать, если тестируете саму регистрацию. В других тестах есть несколько вариантов в зависимости от того где и на какой базе происходит прогон тестов (очевидно, это функциональные или интеграционные тесты, раз речь идёт о сторонней почте) Если тесты прогоняются на игрушечной базе, пустой базе или каком-то стэйдж, который достаточно закрыт от внешнего мира, то вы можете деплоить туда доп. модуль, который будет содержать апи регистрации без проверки кода из почты. На продакшен этот модуль деплоиться не будет и он должен быть сделан так, что бы безболезненно отрезаться от приложения не нарушая его функционал (и естественно с учётом требований безопасности) Разумеется, это только для тестов, которые саму по себе регистрацию не проверяют, но для них необходим свежий зарегистрированный пользователь.
    Если же тесты гоняются на проде, то очевидно этот способ не подходит и остаётся либо заранее зарегистрированный пользователь всегда один и тот же. Либо каждый раз регистрировать ящик и потом его проверять.
    Ответ написан
    Комментировать
  • Как обойти систему верификации при автоматизированной регистрации аккаунта?

    SoreMix
    @SoreMix Куратор тега Python
    yellow
    можно также автоматически заходить на указанную почту, в которую пришло письмо с кодом, парсить его оттуда и вставлять в поле при регистрации

    Можно

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

    Придется

    Может, запрос перехватить?

    Какой? Если речь о запросе на создание аккаунта / отправку токена на почту, то на него можно разве что полюбоваться. Если токен нигде не утекает, то всё.
    Ответ написан
    3 комментария
  • Как обойти систему верификации при автоматизированной регистрации аккаунта?

    @RickStead
    pymailtm вам в помощь

    account = pymailtm.MailTm()
        def get_one_message():
            while True:
                print("\nWaiting for new messages...")
                start = len(account.get_messages())
                while len(account.get_messages()) == start:
                    sleep(1)
                print("New message arrived!")
                last_message = account.get_messages()[0].text
                break
         print(last_message)


    Из минусов только "одноразовость" почты, получить повторный доступ можно только в течении короткого времени (~ 1 день)
    Ответ написан
    1 комментарий