IT-новости про Python, которые стоит знать

Собрали в одном месте самые важные ссылки
читайте авторский блог

     05.03.2020       Выпуск 324 (02.03.2020 - 08.03.2020)       Статьи

Методы Монте-Карло для марковских цепей (MCMC). Введение

Методы Монте-Карло для марковских цепей (MCMC) – это мощный класс методов для выборки из вероятностных распределений, известных лишь вплоть до некоторой (неизвестной) нормировочной константы.

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

     05.03.2020       Выпуск 324 (02.03.2020 - 08.03.2020)       Статьи

Trio – асинхронное программирование для людей

В Python существует библиотека Trio – библиотека асинхронного программирования. Знакомство с Trio в основном будет интересно тем, кто работает на Asyncio, потому что это хорошая альтернатива, позволяющая решать часть проблем, с которыми не может справиться Asyncio. В этом обзоре рассмотрим, что из себя представляет Trio и какие фичи она нам дает.

     04.03.2020       Выпуск 324 (02.03.2020 - 08.03.2020)       Статьи

Двойная проверка блокировки с Django ORM

Оригинальная статья: Luke PlantDouble-checked locking with Django ORM

Шаблон блокировки с двойной проверкой может быть полезен, когда:

  1. Вам необходимо ограничить доступ к определенному ресурсу, чтобы параллельные процессы не могли работать с ним одновременно.
  2. Другие доступные вам схемы блокировки сложны или медленные.

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

     03.03.2020       Выпуск 324 (02.03.2020 - 08.03.2020)       Статьи

Бесполезный REPL. Доклад Яндекса

REPL (read-eval-print loop) бесполезен в Python, даже если это волшебный IPython. Сегодня я предложу одно из возможных решений этой проблемы. В первую очередь доклад и мое расширение TheREPL будет полезны тем, кого интересует более быстрая и эффективная разработка, а также тем, кто пишет stateful-системы.

     03.03.2020       Выпуск 324 (02.03.2020 - 08.03.2020)       Статьи

Как заставить машину написать тесты из кода за тебя

Мы живем в неидеальном мире. Здесь код пишут люди, а люди по своей природе склонны совершать ошибки. Все бы ничего, ошибки можно отловить на этапе тестирования и не дать им никому навредить. Можно, если писать тесты. Чего люди делать почему-то не любят. Но возможно, есть надежда — автогенерация тестов из написанного кода.

     02.03.2020       Выпуск 324 (02.03.2020 - 08.03.2020)       Статьи

Задача для разработчика, или как мы без вендора ручные сканеры прошивали

Cегодня расскажем о своем опыте работы с USB-девайсами через Python PyUSB и немного о реверс-инжиниринге.

     29.02.2020       Выпуск 323 (24.02.2020 - 01.03.2020)       Статьи

Введение в архитектурный фреймворк для анализа данных Lena

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

 

Lena написана на популярном языке Python и работает с версиями Python 2, 3 и PyPy. Она опубликована под свободной лицензией Apache (версия 2) здесь. В данный момент она ещё разрабатывается, однако описываемое в данном руководстве уже используется, тестировано (общее покрытие всего фреймворка около 90%) и вряд ли будет изменено. Lena возникла при анализе данных экспериментов в физике нейтрино и названа в честь великой сибирской реки.

     28.02.2020       Выпуск 323 (24.02.2020 - 01.03.2020)       Статьи

Новостной агрегатор за две недели

18 ноября Telegram запустил соревнование по кластеризации данных: Data Clustering Contest. Нужно было за две недели сделать свой новостной агрегатор. Ограничения, которые были установлены в этом соревновании отпугнули кучу людей, но не меня и моих коллег. Я расскажу от том, каким путём мы прошли, какие выборы сделали и с какими сложностями столкнулись. Решение, которое мы заслали в соревнование обрабатывало 1000 документов за 3,5 секунды, занимало 150 Мб, заняло 6 место на публичном голосовании и 3 место в итоговых результатах. Мы допустили много ошибок, из-за которых не заняли место повыше, большинство из них сейчас исправлены. Весь код и все модели можно найти в репозитории. Все скрипты для обучения моделек перенесены на Colab.

     27.02.2020       Выпуск 323 (24.02.2020 - 01.03.2020)       Статьи

Оптимизация кода на Python с помощью ctypes

Я написал это руководство, поскольку не смог найти такого, которое будет объединять в себе все полезное о ctypes. Надеюсь, эта статья сделает чью-то жизнь намного легче.

     27.02.2020       Выпуск 323 (24.02.2020 - 01.03.2020)       Статьи

Подсчет запросов: Базовое тестирование производительности на Django

Очень часто можно услышать о методах тестирования, таких как TDD, и о том, как тестировать бизнес-логику приложения. Однако тестирование производительности приложения – это совсем другая задача. Есть много разных способов, но самым общим подходом считается создание среды, в которой можно проводить DDoS-атаку на свое приложение и наблюдать за его поведением. Это очень интересная тема, но это не то, о чем я хочу сегодня поговорить. Сегодня мы рассмотрим более простой тест, тот, который вы можете сделать с использованием юнит-тестов Django по умолчанию: то есть тестирование количество обращений вашего приложения к базе данных.

     27.02.2020       Выпуск 323 (24.02.2020 - 01.03.2020)       Статьи

Анализ качества работы чат-бота в IBM Watson Assistant

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

За счет постоянного совершенствования продукта команда IBM Watson Assistant старается сделать процесс создания и запуска виртуального ассистента максимально простым. Сегодня мы расскажем о Dialog Skill Analysis Notebook — фреймворк для Python, который позволяет в кратчайшие сроки разработать высококачественного ИИ ассистента в IBM Watson.

     26.02.2020       Выпуск 323 (24.02.2020 - 01.03.2020)       Статьи

Строим Data Lake на Amazon Web Services

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

Инфографика ниже показывает масштабы этой дата-эпидемии.

     26.02.2020       Выпуск 323 (24.02.2020 - 01.03.2020)       Статьи

Все, что вы хотели узнать об LDPC кодах, но стеснялись спросить (наверное)

С кодами малой плотности проверок на чётность, которые дальше мы будем именовать коротко LDPC (Low-density parity-check codes), мне удалось познакомиться более или менее близко, работая над семестровым научным проектом в ТУ Ильменау (магистерская программа CSP). Моему научному руководителю направление было интересно в рамках педагогической деятельности (нужно было пополнить базу примеров, а также посмотреть в сторону недвоичных LDPC), а мне из-за того, что эти коды были плюс-минус на слуху на нашей кафедре. Не все удалось рассмотреть в том году, и поэтому исследование плавно перетекло в мое хобби… Так я набрал некоторое количество материала, которым сегодня и хочу поделиться!

     25.02.2020       Выпуск 323 (24.02.2020 - 01.03.2020)       Статьи

Интеграция Gitlab, Jira и Confluence на Python для автоматизации сборки релизов

Недавно на стендапе коллега внес рацпредложение: автоматизировать сборку релизов, взяв за основу готовые уже наработки по взаимодействию с Jira, написанные на Python.

Процесс деплоя у нас следующий: когда накапливается достаточное количество задач, прошедших тестирование из них собирается Релиз-кандидат (RC) в каждом проекте, затронутом задачами, затем задачи тестируются в составе RC. После этого RC заливается на стейджинг сервер, где в близком к боевому окружении все еще раз тестируется и проводится полный регресс. И затем, после необходимых деплойных действий свежий релиз заливается в мастер.

     25.02.2020       Выпуск 323 (24.02.2020 - 01.03.2020)       Статьи

Анализируем резюме юристов на hh.ru без api

Hh.ru — неплохой сайт, не нуждающийся в дополнительном представлении. Поиск вакансий на нем удобен и прозаичен. Однако, порой интереснее посмотреть со стороны работодателя:

 

  • как выглядит выдача резюме по целевому запросу,
  • как видно собственное резюме в выдаче,
  • как «проседает» резюме со временем, заодно собрать резюме коллег-юристов для построения мини-статистики.
Несмотря на то, что у hh есть собственное api и оно добротно задокументировано, доступ к нему тщательно оберегается.

     24.02.2020       Выпуск 323 (24.02.2020 - 01.03.2020)       Статьи

Сканирующее окно по массивам NumPy

Возможно сделать скользящее окно (rolling window, sliding window, moving window) по массивам NumPy на языке программирования Python без явных циклов. В данной статье рассматривается создание одно-, двух-, трех- и N-мерных скользящих окон по массивам NumPy. В результате скорость обработки данных увеличивается в несколько тысяч раз и сравнима по скорости с языком программирования С.

 

Cкользящее окно применяется в: обработке изображений, искусственных нейронных сетях, интернет протоколе TCP, обработке геномных данных, прогнозировании временных рядов и т.д.

     24.02.2020       Выпуск 323 (24.02.2020 - 01.03.2020)       Статьи

Изучаем английский с помощью Telegram бота

Нет, это не одна из сотен статей о том, как написать свой первый Hello World бот на Python. Здесь вы не найдете подробной инструкции, как получить API-токен в BotFather или запустить бота в облаке. Взамен я вам покажу как раскрутить всю мощь Python на максимум, чтобы добиться максимально эстетичного и красивого кода. Исполним песню про обращение сложных структур — станцуем и спляшем. Под катом асинхронность, собственная система сейвов, куча полезных декораторов и много красивого кода.

     24.02.2020       Выпуск 323 (24.02.2020 - 01.03.2020)       Статьи

Советы по настройке uWSGI в производственной среде

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

     24.02.2020       Выпуск 323 (24.02.2020 - 01.03.2020)       Статьи

Как сжать модель fastText в 100 раз

Модель fastText — одно из самых эффективных векторных представлений слов для русского языка. Однако её прикладная польза страдает из-за внушительных (несколько гигабайт) размеров модели. В этой статье мы показываем, как можно уменьшить модель fastText с 2.7 гигабайт до 28 мегабайт, не слишком потеряв в её качестве (3-4%). Спойлер: квантизация и отбор признаков работают хорошо, а матричные разложения — не очень. Также мы публикуем пакет на Python для этого сжатия и примеры компактной модели для русских слов.

     23.02.2020       Выпуск 322 (17.02.2020 - 23.02.2020)       Статьи

Сдруживаем Python и Bash: библиотеки smart-env и python-shell

На сегодняшний день Python является одним из наиболее используемых языков в сфере создания не только непосредственно программных продуктов, но также обеспечения их инфраструктуры. Вследствие этого многим девопсам, по их воле или против оной, пришлось учить новый язык для последующего использования в качестве дополнения к старым добрым Bash-скриптам. Однако Bash и Python исповедуют различные подходы к написанию кода и имеют определенные особенности, в виду чего портирование Bash-скриптов на «змеиный язык» иногда оказывается ёмкой и далеко не тривиальной задачей.

Чтобы упростить жизнь девопсам, создано и продолжает создаваться много полезных библиотек и утилит на Python. Данная статья описывает сразу две новых библиотеки, созданные автором сего поста — smart-env и python-shell — и призванные избавить девопса от необходимости уделять много внимания тонкостям работы с Python, оставляя простор для более интересных задач. Сфера деятельности библиотек — переменные окружения и запуск внешних утилит.