Перевод строк сторонних Django-приложений с помощью утилиты makemessages

Иногда необходимо найти переводимые строки с помощью утилиты manage.py makemessages, относящиеся к стороннему приложению, установленному в каталоге виртуального окружения. Проблема заключается в том, что makemessages просматривает только те каталоги, которые находятся внутри текущего каталога. В заметке небольшая подсказка.

Читать дальше

Миграция данных с использованием Alembic

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

Читать дальше

Что нового в Python 3.6?

С момента выпуска версии 3.5 прошло более года. В статье — краткий обзор наиболее интересных изменений, которые затронули Python 3.6, с примерами.

Читать дальше

Django: заполнение полей InlineModelAdmin из объекта request

Конструируя с использованием Django типовой интерфейс на основе ModelAdmin, иногда важно инициализировать некоторое поле модели из InlineModelAdmin значением, полученным из объекта request. На первый взгляд, задача элементарная, но не спешите с выводами.

Читать дальше

Как работает отладчик PyDbg?

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

Читать дальше

Django ORM: пакетная вставка данных и игнорирование дублей

Используя метод bulk_create() стандартного менеджера модели для сохранения в базе данных множества объектов одним запросом, вы обнаружите, что он не работает, если попытаться с его помощью добавить записи, которые уже существуют в базе данных. Какие есть альтернативы?

Читать дальше

Twisted-сервис, проверяющий доступность URL

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

Читать дальше

Нагрузочное тестирование с помощью Twisted

Поддержка устойчивости API в часы пик является важной проблемой. Существует ряд прикладных инструментов, позволяющих собирать показатели производительности и времени отклика системы в ответ на внешние запросы. В их числе — Apache HTTP server benchmarking tool, Joe Dog Siege, Apache JMeter и другие. Но когда требуется выполнить очень гибкий тест, а вы владеете основами twisted, почему бы не воспользоваться его асинхронными возможностями?

Читать дальше

Указание информации об авторстве в Python-модулях

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

Читать дальше

Валидатор для Jira: максимум 8 часов в неделю на заявителя

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

Читать дальше

Отправка логов по SMTP с буферизацией и TLS-аутентификацией

Используя модуль logging для отправки сообщений журнала по электронной почте, можно столкнуться с проблемой, состоящей в том, что каждый раз, когда вы добавляете запись в журнал, по электронной почте отправляется отдельное письмо. Как отправлять письма только по достижении некоторого количества сообщений? И что делать, если почтовый сервис в обязательном порядке требует TLS-аутентификацию?

Читать дальше

О процессах, многозадачности, многопроцессорности, потоках и многопоточности

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

Читать дальше