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

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

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

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

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

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

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

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

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

Jekson

  • 8
    вклад
  • 179
    вопросов
  • 27
    ответов
  • 22%
    решений
Лайки
  • Информация
  • Ответы
  • Вопросы
  • Комментарии
  • Подписки
  • Нравится
  • Достижения
  • Как отсортировать словарь со вложенными словарями по длине значения?

    SoreMix
    soremix @SoreMix Куратор тега Python
    yellow
    Там получаются вложенные списки в случае, если ключей больше одного. Можно через itertools распаковать. Может, можно как-то легче

    import itertools
    res = sorted(s, key = lambda k: len(list(itertools.chain.from_iterable(s[k].values()))), reverse=True)
    Ответ написан 17 февр.
    2 комментария
    2 комментария
  • Как устроена система нотификаций на тостере?

    Therapyx
    Therapyx @Therapyx
    Data Science
    много реализаций придумать можно. Банальный и простой пример
    - Когда человек нажимает кнопочку "отправить" - идет проверка текста на наличие паттерна "@Nichname,"
    - Если есть, то
    1) Выбрать емаил юзера из патерна выше
    2) Добавить "flag" в DB юзера, что у него есть непрочитанное сообщение (можно как каунтер, к примеру что происходит в соц. сетях). А так же добавить всю мета-инфу о сообщении.
    3) Отправить емаил и инфу о сообщении
    4) Когда юзер обновляет страницу или заходит в профиль, то идет проверка ДБ на наличие поставленного флага. Если да, узкаывает на наличие оповещения и достает сохраненную мета-инфу по айди этого запроса.
    5) при прочтении оповещений флаг обнуляется. И так по кругу.

    Это просто что первое в голову пришло. Как уже писал выше - реализаций можно сделать десятки если хорошо подумать)
    Ответ написан 27 мая 2021
    Комментировать
    Комментировать
  • RabbitMQ какой тип exchange выбрать для сообщений?

    Сергей @yarkin
    Многое зависит от остальной архитектуры. Например, что такое "userX" со стороны RabbitMQ? Это прямое подключение клиента к RabbitMQ или клиент подключается через какую-то бизнес-логику (сколько инстансов)?
    Держит ли клиент постоянное подключеие до БЛ/RabbitMQ или делает периодические запросы к ним? Храняться ли данные в СУБД? Какие требования к отклику? Сколько событий/заявок в секунду/минуту ожидается?
    Ответ написан 24 мая 2021
    4 комментария
    4 комментария
  • Купить доменное имя у европейского регистратора?

    igorzhdanov87 @igorzhdanov87
    Может, на указанные доменные зоны ограничений нет

    Если нужен надежный регистратор доменных имен, воспользуйтесь сервисом сравнения цен на домены.
    этим или этим
    Там сможете подобрать регистратора по отзывам и рейтингу, а также найти самое выгодно предложение по цене.
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Отсортировать список по именам элементов?

    Vindicar
    Vindicar @Vindicar
    Удалить en и ru из списка, если удалось, вставить их в начало вручную? Это вообще-то не сортировка. =)
    for lang in ('en', 'ru')[::-1]: #инверсия порядка тут необходима
      try:
        l.remove(lang)
      except ValueError: #нет такого языка в списке
        pass
      else: #был такой язык в списке, вставляем обратно
        l.insert(0, lang)
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Как переопределить родительские классы?

    Дмитрий @dmtrrr
    Backend developer
    Смотрите метаклассы https://docs.python.org/3/reference/datamodel.html...
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Как с фронта слушать ответ от rabbitmq?

    2ord
    Román Mirilaczvili @2ord
    какую библиотеку можно использовать для отображения поступившего запроса в реальном времени?
    При помощи SSE можно передать клиенту какие-то данные без необходимости обновления страницы.
    Как только статус обновляется, отправлять по SSE сообщение со статусом или любой другой информацией.
    Ответ написан более года назад
    1 комментарий
    1 комментарий
  • Фильтрация в списке словарей по динамическим критериям?

    Roman Kitaev @deliro
    Агрессивное программирование
    Создать новый список и добавить туда элементы, которые подходят под предикат. Типичный map/filter/reduce

    def filter_by(self, data: list, param: dict) -> list:
        result = []
        for el in data:
            matches = True
            for name, val in param.items():
                if el[name] != val:
                    matches = False
                    break
            if matches:
                result.append(el)
        return result


    Или однострочником

    def filter_by(self, data: list, param: dict) -> list:
        return [el for el in data if all(el[name] == val for name, val in param.items())]


    rule of dumb: если метод/функция меняет свой аргумент, она не должна его возвращать (обычно это значит, что она вообще ничего не должна возвращать), имя метода/функции при этом должно явно говорить, что аргумент меняется (populate, remove_smth, drop_smth). Если метод/функция возвращает что-то, она не должна менять аргументы.

    Но нужно понимать, что сложность создания нового списка — O(n) [при условии, что param достаточно мал и не растёт с увеличением data], а сложность выкидывания элементов по индексу — O(n**2) [потому что сложность операции .pop(idx) — O(n), в цикле по data — ещё O(n), итого O(n**2)]
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Архитектура связей между таблицами в БД?

    Assargin
    Anton Kuzmichev @Assargin
    Перед ответом смотрю наличие ✔ в ваших вопросах
    events:
      id (PK)
      ....
    
    users:
      id (PK)
      ...
    
    event_users
      event_id (PK, FK to events)
      user_id (PK, FK to users)
    
    feedbacks:
      id (PK)
      event_id (FK to events)
      user_id_from (FK to users)
      user_id_to (FK to users)
      
      idx_unique (event_id, user_id_from, user_id_to) - уникальный индекс


    В event_users каждый пользователь на каждое событие может быть записан только 1 раз (т.к. оба поля входят в PK)
    В feedbacks на уровне приложения позволяете добавлять только те записи, где и user_id_from и user_id_to присутствуют в event_users к данному event.
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Отслеживание исключений в asyncio?

    Дмитрий @dmtrrr
    Backend developer
    > Какой именно тип исключения формируется

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

    Дмитрий @dmtrrr
    Backend developer
    > что в момент передачи в список функции с аргументами будет осуществляться ее вызов

    Нет, не будет, нужно разобраться, как работает event loop.
    В документации есть пример https://docs.python.org/3/library/asyncio-task.htm...
    Ответ написан более года назад
    4 комментария
    4 комментария
  • Определение условия в Comprehensions?

    o5a @o5a
    el = {n['key_id'] for n in answer}

    mylist = ['key_id'] 
    el = {n[mylist[0]] for n in answer}

    Какой-то у Вас пример странный, не понятно, как туда затесался список из 1 элемента и почему этот элемент сразу не взять.
    Ответ написан более года назад
    2 комментария
    2 комментария
  • Как в докере установить локальную библиотеку?

    zohan1993 @zohan1993
    devops
    Dockerfile
    COPY /package_1_src  /path/to/package_1/package_1_src


    файл packages
    package_1 @ file:///path/to/package_1/package_1_src
    Ответ написан более года назад
    3 комментария
    3 комментария
  • Название конфигурационного файла?

    YuriyVorobyov1333
    Yuriy Vorobyov @YuriyVorobyov1333
    Software Developer (Java/Node.js/Angular)
    Я думаю, что он должен называться daemon.json, ведь какая-то внутренняя настройка docker'а ходит в конкретный конфиг, а не в что-то с расширением json, что лежит в папке etc/docker
    Ответ написан более года назад
    1 комментарий
    1 комментарий
  • Как закончить rebase?

    jcmvbkbc
    jcmvbkbc @jcmvbkbc
    http://dilbert.com/strip/1998-08-24
    Похоже, что в процессе ребейза очередной патч стал пустым. Если это так и не нужен пустой коммит на его месте, нужно сделать git rebase --skip. Если это не так, надо разбираться что именно произошло.
    Ответ написан более года назад
    1 комментарий
    1 комментарий
  • Обойти ограничение на количество символов в форме?

    Владимир @AstraVlad
    Финансист, консультант, программист-любитель
    Я пока вижу два варианта:
    1. Использовать формсет и вводить сразу несколько записей (но не через запятую).
    2. Написать форму самому и уже во вьюшке разбирать введенные данные.

    Вводить в поле ModelForm больше символов, чем требует Model это все-равно что пытаться налить два литра пива в литровую банку. Не войдет.
    Ответ написан более года назад
    2 комментария
    2 комментария
  • Как использовать функцию all() внутри условия list comprehension?

    zexer @zexer
    Не уверен, что правильно вас понял, но быть может вам не нужно использовать all(), и можно обойтись двумя условиями через and
    list_with_int_and_str = [1, '1', '2', 3, 5]
    numbers = [1, 2, 3, 4, 5]
    print([i for i in numbers if int(i) not in list_with_int_and_str and str(i) not in list_with_int_and_str])
    # Out: [4]
    Ответ написан более года назад
    4 комментария
    4 комментария
  • Выбор ноутбука для linux?

    CheshireCat
    Алексей Кот @CheshireCat
    full-stack developer
    Чтобы не гадать, Ubuntu имеет список сертифицированных к использованию с Ubuntu ноутбуков
    www.ubuntu.com/certification/desktop/models/?relea...

    В целом из рекомендаций - Dell очень хорошо дружит с Linux, можно брать любой не глядя. Достаточно хорошо ещё все у ASUS.
    Ubuntu 16.04 стало поддерживать больше лептопов, чем предыдущая версия. Linux Mint на базе новой убунты выйдет предположительно в июне.
    Ответ написан более трёх лет назад
    9 комментариев
    9 комментариев
  • Выбор tornado в качестве фреймворка для веб-приложения?

    Dr. Bacon @bacon
    Tornado устарел, это библиотека эпохи, когда в Python не было asyncio. Сейчас Aiohttp, FastAPI или другие, много их.
    Ответ написан более года назад
    Комментировать
    Комментировать
  • Выбор tornado в качестве фреймворка для веб-приложения?

    cython @cython
    Если посмотреть на историю обновлений, то за этот год вышел 1 микрофикс. За предыдущий год новая версия и 3 обновления. За 18 год 1 обновление и 4 фикса. Учитывая, что фреймворк был создан Facebook для сервиса, который закрылся 5 лет назад, то у фреймворка неясное будущее. Если говорить о технологиях на обработку большого количества запросов, то наиболее популярными являются фреймворки для Node.js и Go.
    Ответ написан более года назад
    6 комментариев
    6 комментариев
Оценили как «Нравится»
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • Следующие →
Самые активные сегодня
  • rPman
    • 12 ответов
    • 0 вопросов
  • Drno
    • 7 ответов
    • 0 вопросов
  • низкомолекулярный макрос
    • 6 ответов
    • 1 вопрос
  • ALonUa
    • 6 ответов
    • 0 вопросов
  • firedragon
    Владимир Коротенко
    • 5 ответов
    • 1 вопрос
  • 0xD34F
    0xD34F
    • 5 ответов
    • 0 вопросов
  • © Habr
  • О сервисе
  • Обратная связь
  • Блог

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

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