• Мультиплексированный ввод/вывод

    Preface


    В данной статье я бы хотел затронуть важные аспекты программирования приложений для web, которые должны обслуживать множество пользователей одновременно, а значит мы будем разбирать уже всем надоевший асинхронный ввод/вывод, мультиплексирование и т.п.
    Преследуются следующие цели:
    1. Систематизировать материал по данному направлению, обсудить некоторые несостыковки в терминологии
    2. Полностью разобрать фундамент, на котором строятся приложения для обслуживания множество клиентов
    3. Выработать стратегию для будущего приложения на python которое должно обслуживать множество клиентов
    4. Создать четкую картину в голове (недаром говорят понимаешь — когда можешь объяснить)


    Читать дальше →
  • Порядок разрешения методов в Python

      В этой заметке рассматривается алгоритм MRO С3 и некоторые специфические проблемы множественного наследования. Хотя и алгоритм и проблемы не ограничиваются рамками одного языка, я акцентировал своё внимание на Питоне. В конце приведён список полезных ссылок по данной теме.
      Читать дальше →
    • JSONB запросы в PostgreSQL

      • Перевод
      Ранее я писал, как включить поддержку jsonb в postgres/psycopg2. Сегодня экспериментировал с тем, как запрашивать данные в колонках типа JSON.
      На эту тему есть документация, но мне было не совсем понятно, как работают различные операции:

      CREATE TABLE json_test (
        id serial primary key,
        data jsonb
      );
      
      INSERT INTO json_test (data) VALUES 
        ('{}'),
        ('{"a": 1}'),
        ('{"a": 2, "b": ["c", "d"]}'),
        ('{"a": 1, "b": {"c": "d", "e": true}}'),
        ('{"b": 2}');
      

      Читать дальше →
    • RabbitMQ tutorial 2 — Очередь задач

      • Перевод
      • Tutorial


      В продолжение первого урока по изучению азов RabbitMQ публикую перевод второго урока с официального сайта. Все примеры, как и ранее, на python, но по-прежнему их можно реализовать на большинстве популярных ЯП.
      Читать дальше →
    • Работа с DSL: создание собственного анализатора с использованием библиотек Python



        В нашем блоге на Хабре мы пишем не только о темах, связанных с информационной безопасностью, но уделяем значительное внимание вопросам разработки софта — например, ведем цикл о создании и внедрении инструментов DevOps. Сегодня же речь пойдет об использовании предметно-ориентированных языков (Domain-specific language, DSL) для решения конкретных задач с помощью Python.

        Материал подготовлен на основе выступления разработчика Positive Technologies Ивана Цыганова на конференции PYCON Russia (слайды, видео).
        Читать дальше →
        • +35
        • 7,4k
        • 9
      • Пишем простой плагин для Sublime Text 2

        Введение

        Странно, но поискав на Хабре упоминания текстового редактора Sublime Text 2 я почти ничего не нашел. Спешу исправить положение и рассказать хабраюзерам об этом прекрасном инструменте. Вначале очень коротко расскажу о том чем же он так хорош, потом напишем простой но полезный плагин.
        Читать дальше →
      • Стильный код на Python, или учимся использовать Flake8

        • Tutorial

        Автор: Анатолий Соловей, developer

        Язык программирования Python очень востребован на современном рынке, он развивается изо дня в день, и вокруг него сложилось активное сообщество. Во избежание конфликтов между разработчиками-питонистами, создатели языка написали соглашение PEP 8, описывающее правила оформления кода, однако даже там отмечено, что:
        Many projects have their own coding style guidelines. In the event of any conflicts, such project-specific guides take precedence for that project.

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

        За долгое время работы у программистов вырабатывается собственный стиль написания кода, предпочтения в стайлгайдах и прочие мелочи, которые оставляют авторскую печать на программах девелопера. Убедить разработчиков отказаться от привычных им кодстайлов очень сложно, но, даже если это удастся, велик шанс, что в их коде будут проскакивать старые фишки, добавленные в силу привычки.

        Когда каждый апдейт проходит строгий код ревью, включающий в себя проверку стилей, подобные ошибки могут очень сильно замедлять процесс разработки. А если ошибки в итоге не заметят даже в процессе ревью, в системе контроля версий проекта очень скоро появится куча нечитаемого и непонятного кода.

        На помощь в этом случае приходят линтеры — инструменты, контролирующие оформление кода в проекте. Именно они помогают поддерживать его чистоту и, в нашем случае, предотвращать создание коммитов, которые могут содержать ошибки. Я для контроля качества использую Flake8 и сейчас постараюсь объяснить, почему выбрал именно его, и расскажу, как его настроить, чтобы получить максимальный результат. Заинтересовались? Добро пожаловать под кат.
        Читать дальше →
      • Опыт портирования проекта на Python 3

          Хочу поделиться опытом портирования проекта с Python 2.7 на Python 3.5. Необычными засадами и прочими интересными нюансами.

          Немного о проекте:

          • Браузерка: сайт + игровая логика (иерархические конечные автоматы + куча правил);
          • Возраст: 4 года (начат в 2012);
          • 64k loc логики + 57k loc тестов;
          • 2400 коммитов.

          Читать дальше →
        • Релиз Python 3.6 — да, теперь он с нами



            Прошло 15 месяцев, и наконец-то мир увидел релиз языка программирования Python 3.6. Нового довольно много, ведь не зря разработчики ждали целых 15 месяцев. В релизе добавлены новые модули, обновлены стандартные библиотеки, улучшены наборы различных настроек. В целом, Python 3.6 получил много улучшений, что можно считать отличным подарком к Новому Году. Давайте посмотрим подробнее, что принес нам Дед Мороз новый релиз.
            Читать дальше →