Удобное расширение UIColor для работы с HEX-цветами

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

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

Как определить формат файла с помощью Python?

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

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

Добавление временной составляющей к данным с помощью Temporal SQLAlchemy

Иногда возникает необходимость организовать хранение данных таким образом, чтобы всегда иметь четкое представление о том, как они менялись с течением времени. Статья рассматривает пример решения подобной задачи с помощью Temporal SQLAlchemy.

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

Классическому pip приближается замена — Pipfile и Pipenv

Не секрет, что в классическом менеджере зависимостей pip есть такие недостатки, как необходимость использования инструмента отдельно от virtualenv или потребность иметь несколько requirements.txt. Файл Pipfile и инструмент Pipenv элегантно решают эти проблемы.

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

FlashText — библиотека для эффективной замены и извлечения слов из последовательностей

Познакомился недавно с библиотекой, реализованной на чистом Python, которая работает быстрее, чем regex для задач, связанных с извлечением и заменой ключевых слов в тексте. Статья рассказывает, как работает flashtext и за счет чего достигается высокая эффективность.

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

Как обсуждать биткойн и не выглядеть дураком

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

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

Типичные ошибки при разработке высоконагруженных проектов на Python

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

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

WSCeleryActivity — быстрые уведомления об активных задачах Celery с помощью WebSocket

Я развиваю внутренний Django-проект, в котором активно используется очередь Celery. Специфика проекта подразумеват, что пользователь закрытой области (администратор) должен быть в курсе, какие задачи в данный момент времени Celery выполняет. Достаточно иметь под рукой только их названия. В интерфейсе предусмотрен блок, который отображает список активных в данный момент задач (уникальные названия без детализации по исполнителям). С использованием лонг-пуллинга данные периодически обновляются. Со временем стали проявляться такие недостатки, как задержка между событием и уведомлением, входящий трафик на сервер. Поскольку поддержка WebSocket в современных браузерах достаточно хорошая, было принято решение реализовать WebSocket-сервер.

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

Slack: способ быстро добавить большое количество пользователей в канал

Я активно использую Slack для взаимодействия с командой в повседневной работе. Slack удобен тем, что собирает в одном окне обсуждения в общих темах, приватных группах и личных сообщениях. Когда приходится взаимодействовать с десятками пользователей, становится сложным добавить всех из general-канала, за исключением, скажем, пары человек, в новый канал, т. к. Slack для такого сценария использования автоматизации не предоставляет. Но есть JavaScript...

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

Удаление повторяющихся записей из большой MySQL-таблицы

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

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

Python: векторизация циклов с условиями дает ускорение примерно на 20—50%

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

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

Управление пакетами с помощью Conda

Все чаще среди Python-разработчиков заходит речь о менеджере пакетов Conda. JetBrains включил этот инструмент в состав PyCharm. Давайте разберемся, чем Conda лучше pip и что представляет собой рабочий процесс с Conda.

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

Особенности операций среза и индексации с использованием мультииндекса в Pandas

Что такое lexsort_depth в мультииндексе? Почему мультииндекс нужно сортировать для операций среза/индексации? Почему поиск по метке индекса может быть медленным?

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

Иерархические данные в Postgres

В статье рассматриваются следующие вопросы:

  • Как представить дерево данных в Postgres?
  • Как эффективно получить произвольный узел и всех его потомков (и потомков потомков)?
Читать дальше

Параллелизм в pandas с помощью модуля multiprocessing

В pandas пока нет втроенной функции, которая позволяла бы производить вычисления, используя параллелизм, поэтому если требуется обработать большой объем данных, это может стать непростой задачей. Один из простейших способов ускорить обработку данных — разбить дейта-фрейм на отдельные части и затем, используя модуль multiprocessing, применить метод apply() и собрать дейта-фрейм обратно.

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

Контрольный список для Python-разработчика

Перед тем, как взяться за создание проекта, который планируется распространять, стоит удостовериться, что соблюдены основные моменты, связанные с процессом разработки. Статья рассказывает, на что стоит обратить внимание. Рекомендации будут полезны для большинства проектов.

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