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

Собрали в одном месте самые важные ссылки
консультируем про IT, Python

     10.06.2017       Выпуск 181 (05.06.2017 - 11.06.2017)       Статьи

Решение задач линейного программирования с использованием Python

Зачем решать экстремальные задачи На практике очень часто возникают задачи, для решения которых используются методы оптимизации. В обычной жизни при множественном выборе, например, подарков к новому годы мы интуитивно решаем задачу минимальных затрат при заданном качестве покупок. К сожалению, не всегда можно положиться на интуицию. Допустим Вы сотрудник коммерческой фирмы и отвечаете за рекламу. Затраты на рекламу в месяц не должны превышать 10 000 денежных единиц (д.е). Минута радиорекламы стоит 5 д.е., а телерекламы 90 д.е. Фирма намерена использовать радиорекламу в два раза чаще чем телерекламу. Практика показывает, что 1 минута телерекламы обеспечивает объём продаж в 30 раз больший чем 1 минута радиорекламы. Читать дальше →
На практике очень часто возникают задачи, для решения которых используются методы оптимизации. В обычной жизни при множественном выборе, например, подарков к новому годы мы интуитивно решаем задачу минимальных затрат при заданном качестве покупок.

К сожалению, не всегда можно положиться на интуицию. Допустим Вы сотрудник коммерческой фирмы и отвечаете за рекламу. Затраты на рекламу в месяц не должны превышать 10 000 денежных единиц (д.е). Минута радиорекламы стоит 5 д.е., а телерекламы 90 д.е. Фирма намерена использовать радиорекламу в два раза чаще чем телерекламу. Практика показывает, что 1 минута телерекламы обеспечивает объём продаж в 30 раз больший чем 1 минута радиорекламы. 

     09.06.2017       Выпуск 181 (05.06.2017 - 11.06.2017)       Статьи

Использование сторонних компонентов в DjangoCMS

Для DjangoCMS у каждого разработчика есть возможность написать свой плагин, который можно многократно использовать, но перед этим есть смысл посмотреть на готовые решения. В этой статье я расскажу какие есть сторонние компоненты для DjangoCMS и как их можно использовать в своём проекте.

     08.06.2017       Выпуск 181 (05.06.2017 - 11.06.2017)       Видео

The Memory Chronicles: A Tale of Two Pythons

MicroPython — самая микроскопическая полная реализация Python. Данная разновидность Питона, разработанная для микроконтроллеров, занимает менее 300 Кб памяти, сохраняя при этом наиболее популярные особенности языка. Так что же нужно для создания самого маленького Питона? Или даже: почему CPython потребляет много памяти? В ходе выступления, с упором на аспекты использования памяти, будут рассмотрены детали внутренней реализации MicroPython и сопоставлены с CPython. Мы рассмотрим разные объектные модели Питонов, мы затронем тему различий в конструкциях используемых ими компиляторов байткода и интерпретаторов.MicroPython — самая микроскопическая полная реализация Python. Данная разновидность Питона, разработанная для микроконтроллеров, занимает менее 300 Кб памяти, сохраняя при этом наиболее популярные особенности языка. 

Так что же нужно для создания самого маленького Питона? Или даже: почему CPython потребляет много памяти?

В ходе выступления, с упором на аспекты использования памяти, будут рассмотрены детали внутренней реализации MicroPython и сопоставлены с CPython. Мы рассмотрим разные объектные модели Питонов, мы затронем тему различий в конструкциях используемых ими компиляторов байткода и интерпретаторов.

     08.06.2017       Выпуск 181 (05.06.2017 - 11.06.2017)       Статьи

Генерируем произвольные последовательности на выводах платы Raspberry Pi

Автор: Николай Хабаров, Embedded Expert DataArt, евангелист технологий умного дома. В этой статье я расскажу, как написать обычное user space-приложение на Python для современного ARM-процессора с ОС Linux для генерирования сложных последовательностей импульсов на выводах платы. Суть идеи — использовать DMA-модуль процессора для копирования из предварительно подготовленного буфера в памяти в GPIO с высокой точностью по времени. Когда речь заходит о необходимости сгенерировать сложную последовательность импульсов, например, для шаговых двигателей, обычно используют старые добрые простенькие микроконтроллеры с установленной специальной операционной системой реального времени или вообще без операционной системы. Реализация при этом, в лучшем случае, написана на C++. Сейчас процессоры шагнули далеко вперед и имеют массу преимуществ: производительность, возможность использования операционной системы Linux со всей инфраструктурой и ПО, а также высокоуровневых языков программирования, таких как Python. И все же современные микроконтроллеры для генерирования сложных последовательностей на выводах GPIO, как правило, не используют. Я реализовал генерацию импульсов для управления шаговыми двигателями проекта PyCNC — проекта контроллера машин с ЧПУ, станков, 3D-принтеров, полностью написанного на Python и запускаемого на современном ARM-процессоре на плате Raspberry Pi. Статья может быть полезна желающим реализовать генерацию сложных последовательностей установки уровней на выводах одного или нескольких GPIO на других высокоуровневых языках программирования, используя DMA-модули других процессоров. Читать дальше →
В этой статье я расскажу, как написать обычное user space-приложение на Python для современного ARM-процессора с ОС Linux для генерирования сложных последовательностей импульсов на выводах платы. Суть идеи — использовать DMA-модуль процессора для копирования из предварительно подготовленного буфера в памяти в GPIO с высокой точностью по времени.

     07.06.2017       Выпуск 181 (05.06.2017 - 11.06.2017)       Видео

Питонизация стартапа

Python хороший язык для бэкэнда. Но почему его нельзя применить и на frontend? Или можно? Я покажу как на практике можно писать Python код и на frontend (с Rapydscript) и на бэкэнд (Web.py).

     07.06.2017       Выпуск 181 (05.06.2017 - 11.06.2017)       Конференции, события, встречи разработчиков

Предварительная программа PyConRu-2017

Привет! 16-17 июля в 95 км от Москвы пройдет пятая конференция для python-разработчиков PyCon Russia. Видео прошлогодних докладов можно посмотреть на YouTube-канале. Программа PyCon-2017 получается отличной. На конференции выступят: Paul Hildebrandt (Walt Disney Animation Studios, США), Łukasz Langa (Facebook, США), Nina Zakharenko (Venmo, США), АПрограмма PyCon-2017 получается отличной. На конференции выступят: Paul Hildebrandt (Walt Disney Animation Studios, США), Łukasz Langa (Facebook, США), Nina Zakharenko (Venmo, США), Александр Кошкин (Positive Technologies), Кирилл Борисов (Яндекс), Елизавета Шашкова (JetBrains), Михаил Юматов (ЦИАН), Ольга Сентемова (Тинькофф Банк), Игорь Новиков (Scalr), Олег Чуркин (Rambler&Co) — и это не все. Подробности программы — под катом.

     06.06.2017       Выпуск 181 (05.06.2017 - 11.06.2017)       Видео

QaAPI или какое API нужно вашим тестировщикам

Жизнь тестировщика насыщена экспериментами и рутиной. Чем больше рутины и меньше экспериментов, тем тестировщик сильнее грустит. Как разработчики ПО мы можем сделать тестировщика счастливым — написать софт, который автоматизирует рутину. В докладе расскажу об инструменте QaAPI — реализации API для применения в тестировании. Поделюсь опытом разработки такого инструмента в Welltory.

     05.06.2017       Выпуск 181 (05.06.2017 - 11.06.2017)       Видео

Прицельная регрессия, или запускаем только релевантные автотесты

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

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

     03.06.2017       Выпуск 180 (29.05.2017 - 04.06.2017)       Видео

Создание desktop-приложений на Python

Евгений Ильин (МАИ, доцент, инженер)

"Создание GUI на Python".

Слайды: http://www.moscowpython.ru/meetup/45/sozdanie-desktop-prilozhenij-na-python/

     03.06.2017       Выпуск 180 (29.05.2017 - 04.06.2017)       Релизы

Выпуск torrt 0.6.0

О выпуске очередной версии автоматического обновлятора торрентов.

     02.06.2017       Выпуск 180 (29.05.2017 - 04.06.2017)       Видео

Promises and service worker for pythonist

Александр Хаёров

"Миры frontend и backend неразделимы и порой важно понимать ключевые вещи в смежных областях. В докладе поговорим о двух важных вещах из мира frontend — промисах и сервис воркерах. Чтобы было веселее — попробуем изучить эти штуки на примере аналогий".

Слайды: http://www.moscowpython.ru/meetup/45/promises-and-service-worker-for-pythonist/

     02.06.2017       Выпуск 180 (29.05.2017 - 04.06.2017)       Видео

Python Opcodes

Артём Апалько (RedMadRobot backend-dev)

"Обзорный доклад по опкодам в питоне. Изменения в Python 3.6 (изменение размера, оптимизация branch-prediction)".

Слайды: http://www.moscowpython.ru/meetup/45/python-opcodes/

     02.06.2017       Выпуск 180 (29.05.2017 - 04.06.2017)       Статьи

Да, Python медленный, но меня это не волнует

Разговоры о снижении производительности ради продуктивности.

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

     02.06.2017       Выпуск 180 (29.05.2017 - 04.06.2017)       Статьи

Именованные кортежи. Пишем код на Python чище

В стандартной библиотеке питона содержится специализированный тип "namedtuple", который, кажется, не получает того внимания, которое он заслуживает. Это одна из прекрасных фич в питоне, которая скрыта с первого взгляда.

     28.05.2017       Выпуск 179 (22.05.2017 - 28.05.2017)       Статьи

Анализ рынка недвижимости методом случайного леса

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

     26.05.2017       Выпуск 179 (22.05.2017 - 28.05.2017)       Статьи

Эксперименты с malloc и нейронными сетями

Больше года назад, когда я работал антиспамщиком в Mail.Ru Group, на меня накатило, и я написал про эксперименты с malloc. В то время я в свое удовольствие помогал проводить семинары по АКОСу на ФИВТе МФТИ, и шла тема про аллокацию памяти. Тема большая и очень интересная, при этом охватывает как низкий уровень ядра, так и вполне себе алгоритмоемкие структуры. Во всех учебниках написано, что одна из основных проблем динамического распределения памяти — это ее непредсказуемость. Как говорится, знал бы прикуп — жил бы в Сочи. Если бы оракул заранее рассказал весь план по которому будет выделяться и освобождаться память, то можно было составить оптимальную стратегию, минимизирующую фрагментацию кучи, пиковое потребление памяти и т.д. Отсюда пошла возня с ручными аллокаторами. В процессе раздумий я натолкнулся на отсутствие инструментов логирования malloc() и free(). Пришлось их написать! Как раз про это была статья (а ещe я изучал macOS). Были запланированы две части, однако жизнь круто повернулась и стало не до malloc(). Итак, пора восстановить справедливость и реализовать обещанное: ударить глубоким обучением по предсказанию работы с кучей.

     23.05.2017       Выпуск 179 (22.05.2017 - 28.05.2017)       Видео

Lightning Talk: Сергей Архипов - Правильная демонизация

Слайды: https://speakerdeck.com/9seconds/daemonize

Небольшой рассказ о том, как правильно демонизировались процессы до прихода systemd.

     23.05.2017       Выпуск 179 (22.05.2017 - 28.05.2017)       Видео

Lightning Talk: Никита Ладошкин - gRPC

Слайды: https://nikiladonya.github.io/#/4

Небольшой обзор gRPC как дополнение к докладу про Protocol Buffers.

     23.05.2017       Выпуск 179 (22.05.2017 - 28.05.2017)       Видео

Александр Мокров - Protobuf it!

Слайды: https://www.slideshare.net/AleksandrMokrov/protobuf-it

Поговорим о том, что за зверь этот Protocol Buffers и зачем он вообще нужен. Рассмотрим где он может быть полезен, что может дать и с какими проблемами может познакомить. Посравниваем с конкурентами.