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

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

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

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

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

Платформа, а не костыль: как виртуальная среда укрепляет реальный бизнес
Войти на сайт
  • Все вопросы
  • Все теги
  • Пользователи

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

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

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

Roman Kitaev

Агрессивное программирование
  • 1266
    вклад
  • 12
    вопросов
  • 1228
    ответов
  • 42%
    решений
Ответы
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • Где JavaScript работает быстрее: в браузере или в NodeJS?

    Roman Kitaev @deliro
    Агрессивное программирование
    Хочу понять, где выгоднее по времени проводить сложные математические вычисления, на фроне в браузере или на бэкенде в NodeJS?


    На питоне с numpy, pandas, numba и компанией.
    Ответ написан вчера
    Комментировать
    Нравится Комментировать
  • Как лаконично обновить словарь, содержащийся в другом словаре?

    Roman Kitaev @deliro
    Агрессивное программирование
    Т.к. ты ничего не ответил на мой вопрос про списки, стало быть, они не нужны. Тогда ответ такой:

    def merge_dicts(d1, d2):
        result = d1.copy()
        
        for key, value in d2.items():
            if key in result and isinstance(value, dict) and isinstance(result[key], dict):
                result[key] = merge_dicts(result[key], value)
            else:
                result[key] = value
        return result
    Ответ написан 24 янв.
    Комментировать
    Нравится 1 Комментировать
  • Как уменьшить использование памяти python?

    Roman Kitaev @deliro
    Агрессивное программирование
    Бесполезный res, который можно заменить счётчиком
    Ответ написан 24 янв.
    Комментировать
    Нравится 2 Комментировать
  • Почему невалидный синтаксис python-jose?

    Roman Kitaev @deliro
    Агрессивное программирование
    print - это функция. Вызывай со скобками
    Ответ написан 20 янв.
    1 комментарий
    Нравится 1 комментарий
  • Нужно ли логировать запрос на сервер?

    Roman Kitaev @deliro
    Агрессивное программирование
    go обычно прячут за реверс-прокси (например, nginx). У nginx есть access log, поэтому на стороне сервиса избыточно это логировать.

    А зачем это нужно — для расследований инцидентов, для составления статистики по логам. Например, количество запросов в день/час/минуту/секунду — смотреть всплески нагрузки, распределение по кодам ответа, популярные урлы, айпишники юзеров чтобы видеть ботнеты из Китая. Куча применений.
    Ответ написан 14 янв.
    2 комментария
    Нравится 1 2 комментария
  • Как найти какой по счету QuerySet в списке c QuerySet?

    Roman Kitaev @deliro
    Агрессивное программирование
    Посчитать, сколько пользователей имеют рейтинг больше, чем у искомого
    Ответ написан 14 янв.
    Комментировать
    Нравится Комментировать
  • Можно получить callback по истечению жизни ключа в redis?

    Roman Kitaev @deliro
    Агрессивное программирование
    Можно

    https://redis.io/topics/notifications
    Ответ написан 02 янв.
    3 комментария
    Нравится 3 комментария
  • Как завершить все потоки при выходе из программы?

    Roman Kitaev @deliro
    Агрессивное программирование
    Сделать их daemon=True
    Ответ написан 28 дек. 2020
    6 комментариев
    Нравится 6 комментариев
  • Предпочтительный test-runner для Django?

    Roman Kitaev @deliro
    Агрессивное программирование
    По сути, всё, кроме pytest и unittest мертво. А django test runner — это и есть unittest. Поэтому, выбирай между pytest и unittest. pytest имеет кучу плюшек по сравнению с unittest.
    Ответ написан 27 дек. 2020
    Комментировать
    Нравится Комментировать
  • Как используется инкапсуляция в golang?

    Roman Kitaev @deliro
    Агрессивное программирование
    С точки зрения противопоставления одного языка другому — это нормально. С точки зрения дизайна, геттеры и сеттеры — зло и нарушение инкапсуляции, кроме узкой подгруппы объектов — DTO.

    https://www.yegor256.com/2014/09/16/getters-and-se...
    https://stackoverflow.com/questions/2747721/getter...
    Ответ написан 21 дек. 2020
    1 комментарий
    Нравится 1 комментарий
  • Как можно провести сравнение в цикле?

    Roman Kitaev @deliro
    Агрессивное программирование
    Передавай кортеж полей на сравнение https://docs.python.org/3/library/operator.html#op...
    Ответ написан 21 дек. 2020
    5 комментариев
    Нравится 5 комментариев
  • Команда return в Python, зачем нужна если ее можно заменить и будет меньше хлопот?

    Roman Kitaev @deliro
    Агрессивное программирование
    А теперь результат того, что ты сверху напечатал передай в другую функцию в виде аргумента.
    Ответ написан 18 дек. 2020
    Комментировать
    Нравится 4 Комментировать
  • Оптимизация запросов БД Django?

    Roman Kitaev @deliro
    Агрессивное программирование
    select_related, prefetch_related, django-mptt
    Ответ написан 18 дек. 2020
    Комментировать
    Нравится 2 Комментировать
  • На каком языке лучше писать сложные, большие телеграм боты?

    Roman Kitaev @deliro
    Агрессивное программирование
    На любом. FSM можно написать на любом языке.
    Ответ написан 10 дек. 2020
    Комментировать
    Нравится 1 Комментировать
  • Как ограничить количество созданных объектов пользователем в день?

    Roman Kitaev @deliro
    Агрессивное программирование
    1. Смотришь в БД на последний объект, созданный этим пользователем. Он должен быть создан не раньше, чем X часов назад, либо не существует ни одного объекта — Model.objects.filter(user_id=...).latest('created_at')
    2. Смотришь в БД на объекты, которые созданы сегодня. Их должно быть меньше Y — Model.objects.filter(user_id=..., created_at__date=date.today()).count()

    Если оба условия выполняются — даёшь создать объект. В чём сложность?
    Ответ написан 08 дек. 2020
    2 комментария
    Нравится 1 2 комментария
  • Какой менеджер задач выбрать для себя?

    Roman Kitaev @deliro
    Агрессивное программирование
    Trello. Вписывается во все пункты
    Ответ написан 07 дек. 2020
    1 комментарий
    Нравится 4 1 комментарий
  • Есть ли разница между написаниями?

    Roman Kitaev @deliro
    Агрессивное программирование
    Ну подставь id="1; DELETE FROM data" и сразу увидишь:)
    Ответ написан 05 дек. 2020
    Комментировать
    Нравится 2 Комментировать
  • Как реализовать данный метод?

    Roman Kitaev @deliro
    Агрессивное программирование
    https://docs.python.org/3/library/collections.html...
    Ответ написан 04 дек. 2020
    Комментировать
    Нравится 4 Комментировать
  • Поясните python конструкцию кода приведенную ниже?

    Roman Kitaev @deliro
    Агрессивное программирование
    Django ORM. У него есть fluent interface. Повангую, этот пример делает какие-то агрегационные действия (в metrics), группирует их по sale__category__name и сортирует по total_sales в порядке убывания, где total_sales — какая-то агрегационная функция, которой ты не написал (скорее всего Sum чего-то)
    Ответ написан 23 нояб. 2020
    4 комментария
    Нравится 4 комментария
  • Стоит ли асинхронность использовать при парсинге?

    Roman Kitaev @deliro
    Агрессивное программирование
    Парсинг — это чуть ли не первое в списке того, ради чего стоит использовать асинхронность. Чем больше IO операций — тем больше преимуществ у асинхронного подхода перед тредпулом. Если при парсинге необходимо выполнять CPU-bound операции (разбор XML/HTML и прочее) — это выносится в тредпул (для питона — процеспул) и через асинхронные биндинги (например, в питоне это run_in_executor) отдаётся на откуп туда, главный же поток при этом не блокируется.

    Пример на коленке, который парсит граф ссылок с википедии, с процесспулом, lxml и прочими ништяками: тык
    Ответ написан 21 нояб. 2020
    5 комментариев
    Нравится 2 5 комментариев
Оценили как «Нравится»
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • Следующие →
Самые активные сегодня
  • Василий Банников
    • 16 ответов
    • 0 вопросов
  • sergiks
    Сергей Соколов
    • 8 ответов
    • 0 вопросов
  • hello_my_name_is_dany
    • 8 ответов
    • 0 вопросов
  • sergey-gornostaev
    Сергей Горностаев
    • 7 ответов
    • 0 вопросов
  • Dr. Bacon
    • 7 ответов
    • 0 вопросов
  • MrDecoy
    Вадим
    • 6 ответов
    • 0 вопросов
  • © Habr
  • О сервисе
  • Обратная связь
  • Блог

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

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