• Как получить дробную часть числа?

    leahch
    @leahch
    Я мастер на все руки, я козлик Элек Мэк :-)
    BigDecimal вас спасет. И да, с даблом такое сплошь и рядом. Пример не в кассу, но показателен.
    Double toBeTruncated = new Double("3.5789055");
    
    Double truncatedDouble = BigDecimal.valueOf(toBeTruncated)
        .setScale(3, RoundingMode.HALF_UP)
        .doubleValue();
    Ответ написан
    Комментировать
  • Где можно брать прокси во время выполнения скрипта?

    kshnkvn
    @kshnkvn Куратор тега Python
    yay ✌️ t.me/kshnkvn
    использовать Тор. Но постоянно держать открытым браузер, как я считаю, не лучшая идея

    Его не нужно держать открытым, точнее его вообще не нужно открывать. Вот тут я отвечал как можно IP-шники тора использовать.
    Примерно 15000 страниц. Меня банят по ip. Я использую прокси с библиотекой requests. Пока у меня такой план: выполняю запрос, если он не удачен, меняю прокси

    15к - это вообще мизер, тут и 100 живых прокси хватит.
    Ищите по ключевым словам в гугле free proxy list, собирайте максимум возможных прокси, удаляйте дубликаты и фильтруйте прокси. Самый топорный способ примерно такой:
    for proxy in proxies:
        r = requests.get(host, headers=headers, proxies=proxy, timeout=4)
        if r.status_code != 200:
            continue
        good_proxies.append(proxy)

    Таким образом на момент начала парсинга у вас будут живые прокси с нормальным пингом.
    Вообще универсальных средств нет, нужно смотреть предметно. Лично я помимо фришных прокси листов часто использую люминати и приватные бэкконект прокси, пару раз приходилось поднимать прокси-сервер у гугла для работы.
    Ответ написан
    2 комментария
  • Tor как прокси?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    Есть 2 варианта использования сети Tor, оба заключаются в использовании авторизации.
    1. Использование связки случайный_пользователь:пароль. В таком случае при авторизации для каждого пользователя выдаётся новый IP-адрес. Т.е. при каждом requests запросе ты будешь получать новый IP.
    proxy_auth = str(random.randint(10000, 2147483647)) + ':' + 'passwrd'
    proxies = {'http': 'socks5h://{}@localhost:9050'.format(proxy_auth), 'https': 'socks5h://{}@localhost:9050'.format(proxy_auth)}
    response = requests.get(url, proxies=proxies)

    2. Использование пользователь:случайный_пароль. В таком случае ты сможешь создавать для "пользователя" IP и использовать этот IP-адрес повторно.
    proxy_auth = 'user' + ':' + str(random.randint(10000, 2147483647))
    Ответ написан
    11 комментариев
  • Как подключить файл, находящийся в параллельный папке?

    @Taus
    Учите как работает система импортов в Python. PEP328
    from ..Page import Page
    Ответ написан
    1 комментарий
  • UrlLib или requests?

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

    GreatBOND
    @GreatBOND
    Начинающий программист
    Я учу по Доусону и могу сказать одно:"книга просто класс!".
    Ответ написан
    Комментировать
  • Как проверить сайт на адаптивность?

    В инструментах разработчика в браузерах есть адаптивный режим. Можно выбрать по модели девайса, либо указать размер экрана руками.
    Ответ написан
    1 комментарий
  • Как происходит процесс разработки/доработки сайта у верстальщика-фрилансера?

    @VegasChickiChicki
    Глупость, это когда вы не знаете и не хотите спросить у клиента как правильно и как нужно, т.е. молчите и не понимаете что да как. Ни кто вас не посчитает каким то глупым или бестолковым, если вы спросите как правильно и сделаете правильно. Все по разному, если клиенты, которые "ну я однажды дал деняк человеку, он мне все и сделал я не знаю что да как там...", а есть клиенты, которые сами такие же разработчики\дизайнеры\студии, которые держат проекты на гите или FTP, у каждого лучше спрашивать индивидуально, как получить доступ к файлам и как потом лучше их вернуть, просто кинул сжатый ZIP или же сразу залить на сервер.
    Ответ написан
    Комментировать
  • Как реализовать этот код в функцию?

    Guest007
    @Guest007
    Django, Python, Linux и всё такое...
    Смысла в коде особенно не искал, но, подозреваю, df это DataFrame из pandas
    Так что что-то типа того:
    def do_strange_input(df, max_min_purchasing):
        input(f"What is your purchasing power index (higher is better)? "
                    f"The best score in the world is "
                    f"{max_min_purchasing[0]} "
                    f"({list(df[df.purchasing_power_index == max_min_purchasing[0]]['country'])[0]}), "
                    f"the worst is {max_min_purchasing[1]} "
                    f"({list(df[df.purchasing_power_index == max_min_purchasing[1]]['country'])[0]}) "))
    
    for i in range(7):
        do_strange_input(dataframe, mmp)

    Но что ты хочешь 8 раз спросить - это твоё дело :-)
    Ответ написан
    Комментировать
  • Какие темы изучить для прохождения отбора на Python?

    irestone
    @irestone
    Junior Web Developer
    Во-первых: "На все это у меня есть пару недель.(Поверьте я псих, и не такое могу)" - нет, не можешь. За пару недель можно изучить некоторые технологии, но научиться правильно думать нельзя.
    Во-вторых: "На Видеокурсы времени нет! Нужна текстовая информация!" - видео усваивается лучше. Но, в целом, нужно комбинировать все возможные ресурсы.
    В-третьих: "JavaScript (НЕНАВИЖУ)" - нет смысла ненавидеть молоток. Это очень наивная позиция. Выбери задачу и используй то, что нужно.
    В-четвертых: Объем математики определяется целью: занимаешься машинным обучением, искусственным интеллектом и прочим дата сайенс или пишешь физический движок, например, - понадобится серьезная математика. В остальных случая хватит школьного курса, и то средней школы.

    Непосредственно подготовка:
    Cracking the Coding Interview
    Elements of Programming Interviews in Python
    Из этих книг тебе станет ясно, что нужно знать, чтобы пройти собеседование на работу.

    Тренируй problem solving скилл на специальных сервисах. Популярные: https://leetcode.com, https://www.hackerrank.com, https://practice.geeksforgeeks.org
    Нужно не просто решать задачи, а учиться это делать правильно, походу изучая алгоритмы, структуры данных и анализ сложности. Грокаем алгоритмы - хороший выбор. Будет отлично, если найдешь друга, с которым можно будет тренировать witeboard'ы, когда один берет на себя роль интервьюера и задает другому задачу. Это важно. Так вы сможете разобраться, где и почему вы застреваете и научитесь правильно выстраивать мыслительный процесс при решении задач. По большому счету, это твой основной навык как программиста, именно его и будут проверять в первую очередь при собеседовании на работу. По крайней мере, должны. Если спрашивают только конкретные технологии, то тебе стоит задуматься, стоит ли у них работать. (Подсказка: нет)

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

    Изучай инструменты (языки, фреймворки и пр) под конкретную сферу. Не надо изучать все подряд, учи то, что нужно для того, чем ты хочешь заниматься, конкретный стек технологий. Помни про принцип Парето.
    Например, вот хорошие ресурсы по питону:
    https://www.amazon.com/dp/1593279280/
    https://www.amazon.com/dp/1593275994/
    https://www.youtube.com/watch?v=8DvywoWv6fI

    Наконец, ты должен понимать, что нетехнические, т.н. софт-скиллы не менее (а в случае с джуном часто более) важны. Я не зря предлагал ресурсы на английском - этот язык разработчику знать важнее, чем любой язык программирования. Не знаешь, с чего начать? Посмотри "Полиглот. Выучим английский за 16 часов!", начни пользоваться https://lingualeo.com (там есть и тренировки и курсы)

    Окружи себя инфосферой: ютуб, твиттер, телеграм и пр.
    Мне, например, нравятся эти ребята:
    https://www.youtube.com/channel/UCVbz7l0COUdLupcY4...
    https://www.youtube.com/user/HexletUniversity
    https://www.youtube.com/channel/UC4xKdmAXFh4ACyhpi...
    Они помогут тебе начать думать в правильном направлении.

    Удачи!
    Ответ написан
    3 комментария
  • Зачем нужен @classmethod?

    longclaps
    @longclaps
    Но почему я не могу написать метод from_string так:
    cls вместо явного Date позволит наследнику Date (напр. AztecaDate - дата по календарю ацтеков) порождать именно AztecaDate.
    Кстати, есть одна тонкость, связанная с реализацией ООП на разных языках. C++ позволяет реализовать несколько разных, но одноимённых конструкторов класса с разной сигнатурой (набором аргументов), например, можно сделать так:
    Date(1, 1, 2019) # конструктор с сигнатурой (int, int, int)
    Date("1.1.2019") # другой конструктор с сигнатурой (str)
    В питоне можно добиться подобного, но ручками, анализируя состав аргументов Date.__init__, что неудобно, громоздко и нунафиг. Уж лучше забабахать Date.from_string. Но это неизбежно в динамическом языке - ведь C++ должен знать всё про аргументы конкретных вызовов конструкторов на этапе компиляции, а мы можем в рантайм творить что угодно )))

    для чего нужен staticmethod, если это уже не метод, а просто функция, и я могу вынести ее из класса.
    Да, можете. Я думаю, тут действует логика лучшей читаемости и логика экономии пространства имён:
    • Date._статикметод1 хоть и неочевидно что делает, но точно имеет отношение к Date
    • При импорте from date import * вы не получите охапку непонятных имён.

    Кстати, это не бесплатно - обращение к квалифицированному имени каждый раз создаёт дополнительный опкод LOAD_ATTR. Поэтому любители выжать максимум производительности (ну бывает полезно в глубоком цикле) используют такой трюк:
    # медленно
    l = []
    for i in range(100500):
        l.append(i)
    # чуть быстрее )))
    push = l.append
    for i in range(100500):
        push(i)
    Ответ написан
    2 комментария
  • Почему это пишется так?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Python
    Седой и строгий
    Это из-за того, что у вас стоит git bash. В cmd команда очистки консоли - это cls. Ни команды, ни утилиты clear в Widnows по умолчанию нет.
    Ответ написан
    2 комментария
  • Хорошая ли верстка моего сайта?

    TommyV888
    @TommyV888
    -
    Да, очень неплохо смотрится. Включая маленькие экраны мобильных. Но w3c validator ругается на некоторые тонкости, например на
    <input type="mail" class="form__input" required placeholder="E-mail">
    т.к. такого типа не существует. Можете сами посмотреть что ему не нравится: validator.w3.org
    Ответ написан
    1 комментарий