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

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

     14.01.2019       Выпуск 265 (14.01.2019 - 20.01.2019)       Статьи

Как не продолбать пароли в Python скриптах

Хранение паролей всегда было головной болью. В классическом варианте у вас есть пользователь, который очень старается не забыть жутко секретный «qwerty123» и информационная система, которая хранит хеш от этого пароля. Хорошая система еще и заботливо солит хеши, чтобы отравить жизнь нехорошим людям, которые могут украсть базу с хешированными паролями. Тут все понятно. Какие-то пароли храним в голове, а какие-то засовываем в зашифрованном виде в keepass.

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

     14.01.2019       Выпуск 265 (14.01.2019 - 20.01.2019)       Статьи

DIY тепловизор на Raspberry PI или «Кажется теперь я знаю, чем займусь этим летом»

Пришла зима, а с ней и задача проверить теплоизолирующие свойства построек загородной резиденции дачи. А тут ещё оказалось, что на известном китайском сайте появились вполне доступные тепловизионные модули. Не собрать ли себе экзотическую и, возможно, даже полезную вещь — самодельный тепловизор? Почему бы и нет, вроде и Raspberry где-то валялась… Что из этого вышло — расскажу под катом.

     13.01.2019       Выпуск 264 (07.01.2019 - 13.01.2019)       Статьи

«Теория Большого взрыва» и практика применения Python

В последнее время активно изучаю язык программирования Python. Особенно меня заинтересовало использование Python в распознавании и классификации лиц. В статье я попробую применить распознавание лиц для сериала «Теория Большого взрыва».

     10.01.2019       Выпуск 264 (07.01.2019 - 13.01.2019)       Статьи

Довериться Кодду или своим объектам?

В июне 2020 года ровно 50 лет табличным хранилищам данных или говоря формально — реляционной модели данных. Вот официальный документ – та самая знаменитая статья. За что говорим огромное спасибо доктору Эдгару Фрэнку Кодду. И, между прочим, реляционная модель данных входит в список важнейших мировых инноваций последних 100 лет по версии Форбса.

С другой стороны, как ни странно, Кодд считал реляционные базы данных и язык SQL искаженной реализацией своей теории. В качестве ориентира, он даже разработал 12 правил, которым должна удовлетворять каждая система управления реляционными базами данных (на самом деле это 13 правил). И, по правде говоря, на сегодня, в мире не найти СУБД удовлетворяющих хотя бы «Правилу 0» Кодда и, следовательно, никто не может называть свою СУБД на 100% реляционной :) Может есть исключения, подскажите?
 

     09.01.2019       Выпуск 264 (07.01.2019 - 13.01.2019)       Статьи

Data Science: книги для начального уровня

Data Science — наука о данных, возникшая на стыке нескольких обширных направлений: программирования, математики и машинного обучения. Этим обусловлен высокий порог вхождения в профессию и необходимость постоянно получать новые знания.

Ключевыми навыками для начинающих специалистов являются:

 

  • умение писать код (Python);
  • способность визуализировать свои результаты;
  • понимание того, что происходит «под капотом».
На эти три категории разделены книги, которые специалисты Plarium Krasnodar подобрали для читателей с начальными знаниями в Data Science.

     09.01.2019       Выпуск 264 (07.01.2019 - 13.01.2019)       Статьи

Анализ результатов 2018 Kaggle ML & DS Survey

Kaggle — не просто площадка для соревнований, там также можно публиковать исследования данных или решения соревнований (они называются кернелы и похожи на Jupyter Notebook), поэтому датасет с результатами опроса был выложен в открытый доступ, и было организовано соревнование на лучшее исследование этих данных. Я тоже принимал участие и пусть денежный приз не получил, но мой кернел занял шестое место по количеству голосов. Я хотел бы поделиться результатами моего анализа.

     08.01.2019       Выпуск 264 (07.01.2019 - 13.01.2019)       Статьи

Удалённое управление эмулятором Fceux с помощью Python

В статье я опишу, как сделать эмулятор NES управляемым удалённо, и сервер для удалённой отправки команд на него.

     08.01.2019       Выпуск 264 (07.01.2019 - 13.01.2019)       Статьи

Бессерверный REST API «на коленке за 5 минут»

Сегодня продолжим разговор о возможностях, которые предоставляет нам Amazon Web Services и о том, как эти возможности использовать в решении прикладных задач.

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

Интересно? Тогда заходим под кат!

     07.01.2019       Выпуск 264 (07.01.2019 - 13.01.2019)       Статьи

Сниппеты против Клевера – обыгрываем популярнейшую викторину в реальном времени

Апрель 2018-го года. Мне было 14. Мы с друзьями играли в тогда очень популярную онлайн-викторину «Клевер» от ВКонтакте. Один из нас (обычно я) всегда был за ноутбуком, чтобы пытаться быстро гуглить вопросы и глазами искать в поисковой выдаче правильный ответ. Но вдруг я понял, что каждый раз выполняю одно и то же действие, и решил попробовать написать это на частично известном мне тогда Python 3.

     07.01.2019       Выпуск 264 (07.01.2019 - 13.01.2019)       Статьи

Как я марс спасал или небольшой квест на питоне

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

     06.01.2019       Выпуск 263 (31.12.2018 - 06.01.2019)       Статьи

template tags для формирования breadcrumb с поддержкой shema.org

Делюсь своей реализацией built-in тегов для формирования breadcrumbs с поддержкой разметки schema.org, а также поддержкой bootstrap css.

     06.01.2019       Выпуск 263 (31.12.2018 - 06.01.2019)       Статьи

Кэширование шаблонов для различных типов контента

В статье "Различные шаблоны для рендеринга разных типов контента в поисковой выдаче" было показано, как сделать рендеринг различных шаблонов в зависимости от того, какой тип контента отрисовывается в поисковой выдаче на сайте. При этом ключевым моментом являлось то, что не приходилось делать проверочные условия для выбор шаблона. Информация о шбалоне хранилась в переменной TEMPLATE_PREVIEW, через которую шаблон подставлялся в include тег в шаблоне Django. В данном способе есть один большой недостаток. Дело в том, что тег include при каждом своём вызове ищет шаблон. Его необходимо было как-то кэшировать, что и решается в данной статье.

     04.01.2019       Выпуск 263 (31.12.2018 - 06.01.2019)       Статьи

Катаемся на Xiaomi Vacuum Cleaner

Вот и пришли новогодние праздники, а с ними и куча свободного времени, да еще и умный пылесос угодил ко мне в руки. Как только я увидел в приложении MiHome ручное управление, я сразу понял, что хочу сделать: будем управлять пылесосом с помощью геймпада Dualshock v4!

     30.12.2018       Выпуск 262 (24.12.2018 - 30.12.2018)       Статьи

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

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

     29.12.2018       Выпуск 262 (24.12.2018 - 30.12.2018)       Релизы

pytest-stub 0.1.0 - плагин для подмены пакетов, модулей, атрибутов

О новом подключаемом расширении для pytest, позволяющем подменять различные сущности в зависимостях.

     28.12.2018       Выпуск 262 (24.12.2018 - 30.12.2018)       Статьи

[Перевод] Обучение с подкреплением на языке Python

В последней публикации уходящего года мы хотели упомянуть о Reinforcement Learning — теме, книгу на которую мы уже переводим.

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

     28.12.2018       Выпуск 262 (24.12.2018 - 30.12.2018)       Статьи

Замер скорости вариантов форматирования строк

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

     28.12.2018       Выпуск 262 (24.12.2018 - 30.12.2018)       Статьи

Без ансамбля

Решили мы однажды заняться автоматизацией наших рутинных рабочих моментов. Создать у себя ансамбль(ansible) или что-нибудь в этом роде. Я полез на сайт ансамбля, посмотрел как он работает … подключается к удаленному серверу через ssh и выполняет какие-то там скрипты... Стоп, подумал я, разве для этого нужен ансамбль? Я и без ансамбля, сам ..., один… могу это сделать! А чтобы не только лишь я это мог, решил написать вэб приложение. Приложение назвали Update Server, сокращенно UpS.

     27.12.2018       Выпуск 262 (24.12.2018 - 30.12.2018)       Статьи

Коротко о работе с RabbitMQ из Python

Так повелось, что в процессе работы в МегаФоне, приходится сталкиваться с однотипными задачами при работе с RabbitMQ. Закономерно возникает вопрос: «Как упростить и автоматизировать выполнение таких задач?»

 

Первое решение, которое приходит в голову, использовать интерфейс HTTP, и, безусловно, из коробки RabbitMQ обладает хорошим веб-интерфейсом и HTTP API. Тем не менее, использование HTTP API не всегда удобно, а иногда и вообще невозможно (допустим у вас недостаточно прав доступа, а опубликовать сообщение ну очень хочется) в такие моменты возникает необходимость работы именно по протоколу AMQP