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

Собрали в одном месте самые важные ссылки
и сделали Тренажер IT-инцидентов для DevOps/SRE

     16.07.2019       Выпуск 291 (15.07.2019 - 21.07.2019)       Видео
     16.07.2019       Выпуск 291 (15.07.2019 - 21.07.2019)       Статьи

Рецепты для ELFов

На русском языке довольно мало информации про то, как работать с ELF-файлами (Executable and Linkable Format — основной формат исполняемых файлов Linux и многих Unix-систем). Не претендуем на полное покрытие всех возможных сценариев работы с эльфами, но надеемся, что информация будет полезна в виде справочника и сборника рецептов для программистов и реверс-инженеров.

 

Подразумевается, что читатель на базовом уровне знаком с форматом ELF (в противном случае рекомендуем цикл статей Executable and Linkable Format 101).

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

     16.07.2019       Выпуск 291 (15.07.2019 - 21.07.2019)       Статьи

Автоматизация импортов в Python

Так получилось, что аж с 2012 года я разрабатываю open source браузерку, являясь единственным программистом. На Python само собой. Браузерка — штука не самая простая, сейчас в основной части проекта больше 1000 модулей и более 120 000 строк кода на Python. В сумме же с проектами-спутниками будет раза в полтора больше.

     16.07.2019       Выпуск 291 (15.07.2019 - 21.07.2019)       Статьи

Модуль dis в Python и свертка констант

Недавно я очень удивился, когда обнаружил, что

 

>>> pow(3,89)

работает медленнее, чем

>>> 3**89

Я пытался придумать какое-либо приемлемое объяснение, но не смог. Я засек время выполнения этих двух выражений, используя модуль timeit из Python 3:

     15.07.2019       Выпуск 291 (15.07.2019 - 21.07.2019)       Статьи

Сравнение BDD фреймворков Python: плюсы и минусы

Почти все основные языки программирования имеют фреймворки для BDD тестирования, и Python не исключение. И по факту, у него их несколько! Итак, как их сравнить и какой из них лучший? Попробуем разобраться.

     15.07.2019       Выпуск 291 (15.07.2019 - 21.07.2019)       Статьи

Нейросети и глубокое обучение, глава 3, ч.2: почему регуляризация помогает уменьшать переобучение?

Эмпирически мы увидели, что регуляризация помогает уменьшать переобучение. Это вдохновляет – но, к сожалению, не очевидно, почему регуляризация помогает. Обычно люди объясняют это как-то так: в каком-то смысле, менее крупные веса имеют меньшую сложность, что обеспечивает более простое и действенное объяснение данных, поэтому им надо отдавать предпочтение. Однако это слишком краткое объяснение, а некоторые его части могут показаться сомнительными или загадочными. Давайте-ка развернём эту историю и изучим её критическим взглядом.

     14.07.2019       Выпуск 290 (08.07.2019 - 14.07.2019)       Статьи

Пример простой нейросети, как результат разобраться что к чему

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

В конечном итоге, как мне показалось, нет лучше способа разобраться, чем просто взять и создать свой маленький проект.

Можно прочитать лирическую предысторию, разворачивая текст, а можно это пропустить и перейти непосредственно к описанию нейросети.

     13.07.2019       Выпуск 290 (08.07.2019 - 14.07.2019)       Статьи

Визуализация столбца из DataFrame с помощью библиотеки Seaborn

Попробуем визуализировать данные по рекламным кампаниям, которые храняться в DataFrame.

     11.07.2019       Выпуск 290 (08.07.2019 - 14.07.2019)       Статьи

Настройка Django Settings: лучшие практики

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

     11.07.2019       Выпуск 290 (08.07.2019 - 14.07.2019)       Статьи

Подчеркивание в Python

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

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

     11.07.2019       Выпуск 290 (08.07.2019 - 14.07.2019)       Статьи

Мелкая питонячая радость #7: три штуки по цене одной — консольная анимация, алгоритмы и отладка

На этой неделе достаточно крупных малких радостей не нашлось, зато нашлись 3 совсем мелкие мелкие радости.

     10.07.2019       Выпуск 290 (08.07.2019 - 14.07.2019)       Статьи

Объяснение задачи на Python с собеседования

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

     10.07.2019       Выпуск 290 (08.07.2019 - 14.07.2019)       Статьи

Прогнозирование результатов футбольных матчей

Модель машинного обучения на Python c использованием библиотеки Scikit-learn, для прогнозирования результатов футбольных матчей Российской Премьер Лиги (РПЛ).

     09.07.2019       Выпуск 290 (08.07.2019 - 14.07.2019)       Статьи

Как студенты из Перми попали в финал международного чемпионата по анализу данных Data Mining Cup 2019

В этой статье я расскажу о нашем опыте участия в соревновании по анализу данных Data Mining Cup 2019 (DMC) и о том, как нам удалось войти в ТОП-10 команд и принять участие в очном финале чемпионата в Берлине.

     08.07.2019       Выпуск 290 (08.07.2019 - 14.07.2019)       Статьи

XLNet против BERT

В конце июня коллектив из Carnegie Mellon University показал нам XLNet, сразу выложив публикацию, код и готовую модель (XLNet-Large, Cased: 24-layer, 1024-hidden, 16-heads). Это предобученная модель для решения разных задач обработки естественного языка.

В публикации они сразу же обозначили сравнение своей модели с гугловым BERT-ом. Они пишут, что XLNet превосходит BERT в большом количестве задач. И показывает в 18 задачах state-of-the-art результаты.

     08.07.2019       Выпуск 290 (08.07.2019 - 14.07.2019)       Статьи

Внедрение Airflow для управления Spark-джобами в ivi: надежды и костыли

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

Мы уже писали про первую итерацию рефакторинга рекомендательной системы онлайн-кинотеатра ivi. За прошедший год мы почти не дорабатывали архитектуру приложения (из глобального — только перезд с устаревших python 2.7 и python 3.4 на «свежий» python 3.6), зато добавили несколько новых ML моделей и сразу столкнулись с проблемой выкатывания новых алгоритмов в продакшн. В статье я расскажу про наш опыт внедрения такого инструмента управления потоками выполнения задач как Apache Airflow: почему у команды возникла эта необходимость, чем не устраивало существующее решение, какие костыли пришлось запилить по дороге и что из этого получилось.

     08.07.2019       Выпуск 290 (08.07.2019 - 14.07.2019)       Статьи

Нейросети и глубокое обучение, глава 3, ч.1: улучшение способа обучения нейросетей

Когда человек учится играть в гольф, большую часть времени он обычно проводит за постановкой базового удара. К другим ударам он подходит потом, постепенно, изучая те или иные хитрости, основываясь на базовом ударе и развивая его. Сходным образом мы пока что фокусировались на понимании алгоритма обратного распространения. Это наш «базовый удар», основа для обучения для большей части работы с нейросетями (НС). В этой главе я расскажу о наборе техник, которые можно использовать для улучшения нашей простейшей реализации обратного распространения, и улучшить способ обучения НС.