Все сервисы Хабра

Сообщество IT-специалистов

Ответы на любые вопросы об IT

Профессиональное развитие в IT

Удаленная работа для IT-специалистов

Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

Хабр Q&A — вопросы и ответы для IT-специалистов

Получайте ответы на вопросы по любой теме из области IT от специалистов в этой теме.

Узнать больше
другие проекты хабра
  • Хабр
  • Карьера
  • Фриланс
Задать вопрос
Vaindante

Влад Григорьев

  • 67
    вклад
  • 0
    вопросов
  • 97
    ответов
  • 38%
    решений
Ответы
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • Как сделать экземпляр класса изменяемым объектом в Python?

    Vaindante
    Влад Григорьев @Vaindante
    В __add__ вы создаете новый экземпляр класса как Query так и list , и присваиваете qr_1 и если сравнить id то они тоже будут разными
    и выглядит что вам надо сделать так
    def __add__(self, query):
            self.arr.extend(query.arr)
            return self
    Ответ написан 26 мар.
    3 комментария
    Нравится 1 3 комментария
  • Как использовать асинхронные функций python в Colaboratory Google?

    Vaindante
    Влад Григорьев @Vaindante
    В ошибки же явно указано, без event_loop не взлетим
    замените run на a
    syncio.get_event_loop().run_until_complete(waiter())

    и заработает, а ещё прочитайте материал про данный модуль
    Ответ написан 26 мар.
    8 комментариев
    Нравится 8 комментариев
  • RuntimeWarning: Enable tracemalloc to get the object allocation traceback?

    Vaindante
    Влад Григорьев @Vaindante
    Блин ну в ошибки все указано вы никогда не ждали функцию bot.send_message, у вас вот везде нормально стоит await, а в той строчки не указан, добавьте await, и как минимум там ошибки не будет
    ну и строки так не комильфо собирать
    Ответ написан 26 мар.
    Комментировать
    Нравится 1 Комментировать
  • Что не так в регулярке (Python)?

    Vaindante
    Влад Григорьев @Vaindante
    Не зачем изобретать велосипеды на ровном месте, для работы с путями есть готовые библиотеки пользуйтесь ими
    from pathlib import Path
    
    backup_path = 'c:/temp/mybackups/Drive-C/Users/User/AppData/Local/Temp/scp26772/home/admin/web'
    
    p = Path(backup_path)
    index = p.parts.index('home')
    new_path = Path('c:/temp/mybackups/WinScp').joinpath(*p.parts[index:])
    print(new_path)
    Ответ написан 03 мар.
    8 комментариев
    Нравится 8 комментариев
  • Как мне расширить конструктор класса X конструктором класса N?

    Vaindante
    Влад Григорьев @Vaindante
    Решение в лоб, просто накатить все аргументы из server. Но по-хорошему, лучше через наследование или свойства или еще что-нибудь сделать что бы было явно
    class CmdHandler:
        def __init__(self, server):
            self.somearg = 1
            self.__dict__.update({k: v for k, v in server.__dict__.items() if not k.startswith("_")})
    
    
    class Server(object):
        def __init__(self):
            self.event = "None Server "
            self.obj = None
            self.cmd = None
            self.args = None
    
        def handler(self):
            return CmdHandler(self)
    
    
    h = Server().handler()
    print(h.event)
    
    >None Server
    Ответ написан 01 дек. 2020
    3 комментария
    Нравится 3 комментария
  • Можно ли сократить код?

    Vaindante
    Влад Григорьев @Vaindante
    для начала ==True или ==False излишние проверки
    потом есть функции any и all которыми можно заменить проверку if (End_a[0]==True ...
    #End flags
        End_a=
    - все это можно заменить на словарь листов или совсем убрать этот список, а просто считать количество обработок, и сравнивать их с длиной списка.
    Также можно заменить списки count_a...

    И в целом кажется не нужен тут двойной цикл.
    Вы бы лучше нормально задание написали, что за чем и почем надо сделать
    Ответ написан 17 нояб. 2020
    4 комментария
    Нравится 1 4 комментария
  • Как сделать функцию, которая работала бы с любыми списками?

    Vaindante
    Влад Григорьев @Vaindante
    >>> l = ['abc', 'apple', 'pen', 'abc', 'pen', 'pc']
    >>> index_els = {v: k for k, v in reversed(tuple(enumerate(l)))}
    >>> result = [index_els[k] for k in l]
    >>> result
    [0, 1, 2, 0, 2, 5]
    Ответ написан 11 нояб. 2020
    6 комментариев
    Нравится 1 6 комментариев
  • Парсер youtube перестал работать?

    Vaindante
    Влад Григорьев @Vaindante
    Причем тут ютуб, если у вас синтаксически не верная регулярка и ошибка на это и указывает, должно быть примерно так
    match = re.findall(r'(?P<v>=(.+?)")+.*(title="(.+?)")', doc)
    Ответ написан 08 нояб. 2020
    Комментировать
    Нравится 3 Комментировать
  • Как заменить несколько элементов в одной строке на Python?

    Vaindante
    Влад Григорьев @Vaindante
    Задание не полное, непонятно что когда и как вы планируете обновлять.
    самое простое использовать регулярку,
    чуть более сложное но более наглядное преобразовать строку в класс, и заменять в нем значения тип так
    from dataclasses import dataclass
    
    
    @dataclass
    class Record:
        times: str = None
        name: str = None
        room: str = None
    
    
    array = ["1-ая пара, предмет, аудитория", "2-ая пара, предмет, аудитория",
             "2-ая пара, предмет, аудитория", "4-ая пара, предмет, аудитория"]
    
    schedule = [Record(*v.split(',')) for v in array]
    new_parsing_times = ["9:40 - 10:30", "10:40 - 12:10", "12:50 - 14:20", "14:30 - 16:00"]
    for record, new_times in zip(schedule, new_parsing_times):
        record.times = new_times
    
    print(schedule)
    Ответ написан 05 нояб. 2020
    Комментировать
    Нравится Комментировать
  • В чём разница между е2е и Unit тестами?

    Vaindante
    Влад Григорьев @Vaindante
    Ну технически могут, кто ж вам запретит то.
    Но тут надо делать различие больше не технологическое, а бизнесовое.
    юнитов - много их запускают перед сборкой/выкаткой приложения, так как они замоканы, проходят быстро и стабильные, ну и они больше технические, нежели бизнесовые
    е2е - это уже больше про бизнес-кейсы. Их должно быть мало. Они завязаны на сторонние сервисы, незамоканы и следовательно не стабильны. и запускают их уже в рамках больше регресса. И логично их держать где-то в одном месте, что бы когда их опять придется чинить и править, не искать их черти где.
    Ответ написан 15 окт. 2020
    3 комментария
    Нравится 3 комментария
  • Как заменить произвольное количество вхождений подстроки в строке?

    Vaindante
    Влад Григорьев @Vaindante
    Можно решит тупо в лоб. не сильно напрягаясь, а можно заморочатся и найти более элегантное и быстрое решение.
    Мне в лом думать, поэтому вот решение в лоб
    import re
    
    input_file = """This is line #aabbcc #ddeeff
    This is line #aab66c #ddee44
    This is line #aabbcc #cceeff #aa11cc #dd22ff
    This is line #aabbcc #ddee00 #dd11ff"""
    
    pattern = re.compile(r'#\w{6}')
    
    
    def invert(color_to_convert):
        table = "".maketrans('0123456789abcdef', 'fedcba9876543210')
        return color_to_convert.lower().translate(table).upper()
    
    
    def replace(s: str):
        colors = [invert(color) for color in pattern.findall(s)]
        s = pattern.sub("{}", s)
        return s.format(*colors)
    
    
    for line in input_file.split('\n'):
        print(replace(line))
    
    
    This is line #554433 #221100
    This is line #554993 #2211BB
    This is line #554433 #331100 #55EE33 #22DD00
    This is line #554433 #2211FF #22EE00
    Ответ написан 07 окт. 2020
    Комментировать
    Нравится 1 Комментировать
  • Как обрабатывать другие элементы в цикле for во время использования time.sleep()?

    Vaindante
    Влад Григорьев @Vaindante
    Используйте асинк, примерный код.
    import asyncio
    from time import time
    
    els = list(range(20))
    
    
    async def rm_list(v):
        await asyncio.sleep(5)
        print(v)
    
    
    async def _main():
        await asyncio.gather(*(
            rm_list(value) for value in els
        ))
    
    
    start = time()
    loop = asyncio.get_event_loop()
    loop.run_until_complete(_main())
    loop.close()
    print(time() - start)
    Ответ написан 05 окт. 2020
    Комментировать
    Нравится 4 Комментировать
  • Набор ЯП для автотестирования?

    Vaindante
    Влад Григорьев @Vaindante
    Дело вкуса конечно, я автоматизировал и на питоне и на джаве, и на питоне.
    Но на питоне мне автоматизировать больше нравится, ну у плюс в питоне много всякого сахара, который сильно упрощает написание тестов и делает их более лаконичными.
    Ответ написан 02 окт. 2020
    2 комментария
    Нравится 2 комментария
  • Как вывести значение первого словаря с помощью второго словаря?

    Vaindante
    Влад Григорьев @Vaindante
    ВЫ как-то перемудрили все, можно же просто
    sells={
    ...   "Маша":"Samsung 20",
    ...   "Максим":"Iphone 6S",
    ...   "Наташа":"Lenovo Legion"
    ... }
    prices={
    ...   "Samsung 20": 300,
    ...   "Iphone 6S": 260,
    ...   "Lenovo Legion": 450
    ... }
    result = [name for name, tel in sells.items() if prices.get(tel, 999) < 350]
    >>> print(result)
    ['Маша', 'Максим']
    Ответ написан 24 сент. 2020
    8 комментариев
    Нравится 3 8 комментариев
  • Почему появляется ошибка NoneType?

    Vaindante
    Влад Григорьев @Vaindante
    Для начала питон не компилируемые язык.
    Потом ты сначала создал метод с именем fitness, а затем в __init__ переопределил ее на None
    self.fitness = None

    все логично что у тебя ошибка.
    Не надо так
    Ответ написан 21 сент. 2020
    1 комментарий
    Нравится 1 комментарий
  • Как запустить тесты в Pytest из списка?

    Vaindante
    Влад Григорьев @Vaindante
    как угодно собираешь список упавших тестов, хоть из прогона хоть отчет распарсить.
    Можно заюзать хуку pytest_terminal_summary и в ней пройтись по упавшим тестам и выгрузить куда-нибудь, можешь любую другую в целом не так важно.

    Берешь хук pytest_collection_modifyitems и в ней фильтруешь список для запуска исключая все тесты которых нет в списке упавших тестов.
    Ответ написан 26 авг. 2020
    Комментировать
    Нравится 1 Комментировать
  • Как научить бота вычленять числа в конкретной позиции сообщения, и отправлять команду в лс с этим числом?

    Vaindante
    Влад Григорьев @Vaindante
    import re
    
    s = "выставляет на аукцион (214422): 1*Кожаная туника - 900 золота , " \
        "нужно вычленить именно число в скобках, у каждого такого сообщения они каждый раз разные."
    
    lot_re = re.compile(r'\((?P<lot_id>\d+)\)')
    result = lot_re.search(s).groupdict()
    print(result)
    
    {'lot_id': '214422'}
    Ответ написан 23 авг. 2020
    2 комментария
    Нравится 1 2 комментария
  • Пойти работать Джуном или доучиться до Миддла?

    Vaindante
    Влад Григорьев @Vaindante
    Нельзя стать мидлом без реального опыта, как и джуном в целом.
    Знать теорию это одно, а умение хоть сколько-то применять ее на практике это совсем другое, и от теории сильно отличается.
    Ну и помимо хардовых скиллов есть еще софт скиллы, которые тоже требуют реального практического опыта.
    Ну и всякие пет проекты это совсем не то, (но какая-никакая польза от них есть) и тоже сильно отличается от реальной работы в команде
    Ответ написан 14 авг. 2020
    Комментировать
    Нравится 11 Комментировать
  • Какой ЯП лучше изучать для автоматизации тестирования?

    Vaindante
    Влад Григорьев @Vaindante
    Как отметили выше автоматизация разная:
    Если хотите автоматизировать мобилки то там swift и kotlin
    Для браузерной автоматизации: лучше js и какой-нибудь cypress - что бы по максимуму и однородно закрыть автоматизацию как с моками так и без них
    Если там апи автоматизация - то я бы взял Python - инструменты позволяют делать много и достаточно дешево по времени разработки, так же на нем и браузерную автоматизацию можно
    Для перфоманс тестинга: я использую scala и gatling - ну тут можно в разные стороны смотреть.
    Ответ написан 10 июл. 2020
    Комментировать
    Нравится 6 Комментировать
  • Так ли востребованы сейчас программисты?

    Vaindante
    Влад Григорьев @Vaindante
    1. вакансии могут висеть по разным причинам, может быть просто узкий специалист и его реально можно долго искать. А может быть что компания постепенно расширяется, и на эту вакансию надо много человек, и она может висеть долго.
    2. мало когда были нужны. и значит это только то что нужны программисты с опытом и знаниями - как набраться опыта это отдельный вопрос.
    3. все познается в сравнение условно в ЕКБ для стажера(джуна может быть) 20-30, для мидла порядка 100к. в целом не бешеные деньги, но в целом в других сферах чуть сложнее на них выйти, в каких-то почти не реально.
    4. ну та же история всяких новичков которые не фига не знают море. Тех кто что-то знает и что-то представляет из себя не прям много и заказов у них хватает.
    Если вопрос стоит ли сейчас идти учится на программиста, что бы срубить бабла - ответ нет
    Ответ написан 01 июн. 2020
    2 комментария
    Нравится 2 комментария
Оценили как «Нравится»
  • 1
  • 2
  • 3
  • 4
  • 5
  • Следующие →
Самые активные сегодня
  • Rsa97
    Rsa97
    • 10 ответов
    • 0 вопросов
  • Василий Банников
    • 8 ответов
    • 0 вопросов
  • rPman
    • 8 ответов
    • 0 вопросов
  • DevMan
    DevMan
    • 8 ответов
    • 0 вопросов
  • part_os
    part_os
    • 7 ответов
    • 0 вопросов
  • Kozack
    Alex
    • 7 ответов
    • 0 вопросов
  • © Habr
  • О сервисе
  • Обратная связь
  • Блог

Войдите на сайт

Чтобы задать вопрос и получить на него квалифицированный ответ.
Войти через центр авторизации