• Что делает socket, чтобы выкинуть POLLOUT в select.poll?

    @javedimka
    Хочу сока
    Вопрос: где здесь клиент запрашивает ответ, тем самым заставляя socket выкинуть POLLOUT в poll'е?

    Это работает не так, с чего бы клиент должен запрашивать ответ? Есть возможность запись в сокет без блокировки, поэтому POLLOUT. Если использовать твое представление о сокетах, в котором обмен данными очень похоже на обмен по HTTP - то нет нужды регистрировать POLLOUT пока не сформируешь ответ. Его если и надо регистрировать, то только если хочешь что-то отправить. А сама "работа" с сокетами зависит от используемых протоколов.
    Можно вообще забить на отслеживание события POLLOUT и при отправке данных используя try/except блок которым обёрнут `socket.send` отслеживать EAGAIN/EWOULDBLOCK код ошибки в эксепшене, если возник такой - пытаться отправить снова на следующем лупе - меньше возни и ни на что не особо не влияет (при условии, что клиент данные из сокета читает)
    А можно скомбинировать подход. Изначально POLLOUT не отслеживается, если есть данные на отправку - попытаться отправить, если не все данные были отправлены - регистрировать POLLOUT, когда событие придет - отправить оставшееся, если снова не все данные были отправлены - снова ждать POLLOUT

    чтобы классифицировать каждый дескриптор, нужно делать что-то типа: result_event & POLLOUT == POLLOUT?

    Да
    result_event & POLLOUT
    или например
    result_event & (POLLERR|POLLHUP|POLLNVAL)

    selectors здесь нет.

    модуль selectors это абстракция над поллингом, я, конечно, не уверен и что внутри либы уже не особо помню, но возможно, если просто скопировать код либы себе - всё заработает без особых проблем.

    Неблокирующий сервис можно написать на тредах - хорошо если запросы быстрые и клиентов не очень много
    Ответ написан
    Комментировать
  • Как изменять элементы списка?

    kshnkvn
    @kshnkvn
    yay ✌️ t.me/kshnkvn
    for f in foo:
        f = 'bla-bla-bla'

    f - это всего лишь переменная, которая ссылается на элемент итерируемого объекта. Изменяя значение f ты лишь меняешь на какой элемент она будет ссылаться, а не сам элемент итерируемого объекта.
    Если ты хочешь поменять элемент объекта, то делать это нужно (на самом деле не нужно, только если ну очень уж хочется) примерно так:
    >>> foo = [1,2,3,4,5,6]
    >>> for key, value in enumerate(foo):
    ...     foo[key] = value * value
    ...
    >>> foo
    [1, 4, 9, 16, 25, 36]
    Ответ написан
    3 комментария
  • Возможно лт узнать местоположение человека в PYTHON?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Возможно.

    1. Берете документацию по вашему устройству, в части обращения к GPS или где вы там данные местоположения читать собрались.
    2. Читаете каким образом из него получить нужные данные.
    3. Получаете.
    Ответ написан
    Комментировать
  • Будет ли этот код использоваться при компиляции?

    @MarkusD Куратор тега C++
    все время мелю чепуху :)
    Препроцессор работает на 4-й стадии трансляции кода.
    Препроцессор оперирует напрямую строками модуля трансляции в виде блоков памяти.

    Описание твоего макроса показывает что хоть debug и принимает аргумент, но вне отладочной конфигурации он этим аргументом не оперирует. В любом месте обращения к твоему макросу произойдет подстановка NULL вместо всего обращения.

    На самом деле тебе и этот NULL в качестве подстановки не нужен. Зачем тебе в коде программы обилие висящих NULL? Если описать макрос так:
    #ifdef DEBUG
    #define debug(n) Serial.println("***"+String(n)+"***")
    #else
    #define debug(n)
    #endif

    то препроцессор будет просто затирать строку обращения к макросу.
    Ответ написан
    1 комментарий
  • Как в template из текущей даты вычесть другую(DateTimeField)?

    sergey-gornostaev
    @sergey-gornostaev Куратор тега Django
    Седой и строгий
    Не надо проводить вычисления в шаблоне, это нарушает MVC/MVT. Либо делайте необходимые вычисления в представлении и передавайте в контекст шаблона, либо напишите шаблонный тег, выполняющий такие вычисления, а совсем хорошо будет создать вычисляемое свойство модели.
    Ответ написан
    6 комментариев
  • Что делает оператор ":" в этом случае в c++?

    @MarkusD Куратор тега C++
    все время мелю чепуху :)
    Это называется секцией инициализации. В этой секции можно самостоятельно инициализировать поля создаваемого объекта еще до передачи управления в тело конструктора.

    Еще начиная с C++11 в секции инициализации можно указывать делегирование конструкторов. Выбранный конструктор будет так же выполнен до входа в тело текущего конструктора.
    Ответ написан
    1 комментарий
  • Как сделать привязку сохранения модели к изменению другой модели?

    tema_sun
    @tema_sun
    Можно, например, оверрайднуть метод save() у TakenItem, или выкинуть эксепшн в pre_save сигнале.
    Ответ написан
    1 комментарий
  • Choices или ForeignKey: что использовать?

    alternativshik
    @alternativshik
    я лично вообще не вижу смысла держать в базе choices если они постоянны и максимум - это через год вы добавите там километры...
    Ответ написан
    2 комментария
  • Choices или ForeignKey: что использовать?

    Если считаете, что будете довольно часто изменять или добавлять единицы измерения, то используйте ForeignKey. По части производительности, добавляйте к запросам prefetch_related, очень хорошая вещь, + 1 запрос ни как не повлияет на производительность. Но там тоже есть свои нюансы, это нужно учитывать.
    Ответ написан
    Комментировать
  • Как вставить html теги (CSS) в ответ от Django?

    tumbler
    @tumbler Куратор тега Django
    бекенд-разработчик на python
    Используйте mark_safe, который отключит эскейпинг для переданной строки в шаблоне.
    Ответ написан
    3 комментария
  • Как подключить плагин webhelper для Geany?

    @deniz1983
    ...
    IDE, конечно, вопрос вкуса. Но на Django гораздо удобнее использовать PyCharm - его Community Edition версия бесплатная в использовании. Зато есть консоль, автодополнение кода, импортирование классов/пакетов по нажатию alt+enter, редактирование тегов на лету. p.s. У меня Debian 9
    Ответ написан
    8 комментариев
  • Почему все хотят django?

    @dustyattic
    Всем хорош Django, все у него есть, но...
    Django - это коробочный продукт, со всеми достоинствами и недостатками, присущими коробочным продуктам. То есть внутри большой коробки, называемой Django, есть много других коробочек, содержимое которых прекрасно состыковано с самим продуктом и с другими коробочками. Поэтому разработчик на Django чувствует себя вольготно. А если у него возникает проблема, то большое комьюнити всегда поможет.
    Я разработал на Django только один проект. Возможно, будь проект простым, я до сих пор бы использовал Django. Но проект оказался неожиданно сложным. Написание кода для обработки данных из некоторого количества таблиц с довольно запутанными связями показало мне, что у Django, несмотря на его популярность, совершенно никудышный ORM. Используя Django, я половину обращений к таблицам реализовывал в чистом SQL, а затем стыковал результаты с данными полученными с помощью ORM. У меня все получилось. Но осадок остался. Поэтому следующую версию того же проекта, и все последующие тоже, я написал на Flask, используя в качестве ORM небезызвестный SQLAlchemy.
    Я не жалею времени, потраченного на изучение Django. Это хороший опыт. Те, кто используют Django, чувствуют себя защищенными. Они часть большого дружного сообщества, где можно найти любую поддержку.
    Но я также не жалею, что я ушел от Django. У Django вся магия ( регистрация, авторизация, работа с сессиями и многое-многое другое) спрятана под капотом, я просто подключал компоненты и использовал их. Используя Django, я делал многие вещи автоматически, совершенно не задаваясь вопросом как эти вещи работают. Уйдя от Django, я лучше стал понимать то, чем занимаюсь каждый день.
    Можете мне поверить на слово, на Flask-е возможно писать очень большие проекты, с большим количеством кода. При этом реализация всей магии ложится на Вас. Это просто вопрос доверия. Используя Django, Вы доверяете всю магию Django, не используя его, Вы доверяете всю магию себе.
    Ответ написан
    Комментировать