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

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

     18.02.2016       Выпуск 113 (15.02.2016 - 21.02.2016)       Конференции, события, встречи разработчиков

Доклад: JSON-RPC или когда REST неудобен

Доклад: JSON-RPC или когда REST неудобен

Докладчик: Александр Кацко

Описание:

Как только речь заходит про создание API, особенно для веб или мобильных приложений, то многие, не задумываясь, выбирают принцип REST. Но всегда ли это правильный выбор? В докладе рассмотрим случаи, для которых хорошо подходит JSON-RPC, посмотрим примеры реализации на Django.

     17.02.2016       Выпуск 113 (15.02.2016 - 21.02.2016)       Статьи

Реверс протокола СКУД RS485 от Perco. Берегите линии своих СКУД от вторжения

Участвуя последнее время в разных интересных проектах, возникла задачка альтернативного управления продуктом Perco Электронная проходная KT02.3. Данный продукт является законченным решением и не подразумевает использование в составе других систем СКУД, а также какого-либо вторжения в свою среду управления. Но, как говорится в поговорке, «Возможно все! На невозможное просто требуется больше времени» (С) Дэн Браун.

     17.02.2016       Выпуск 113 (15.02.2016 - 21.02.2016)       Статьи

Глубокое обучение в гараже — Возвращение смайлов

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

     16.02.2016       Выпуск 113 (15.02.2016 - 21.02.2016)       Статьи

Глубокое обучение в гараже — Две сети

Это вторая статья из серии про определение смайла по выражению лица. Глубокое обучение в гараже — Братство данных Глубокое обучение в гараже — Две сети Калибрация Итак, с классификатором, разобрались, но вы наверняка уже заметили, что заоблачные 99% как-то не очень впечатляюще выглядят во время боевого теста на детекцию. Вот и я заметил. Дополнительно видно, что в последних двух примерах очень мелкий шаг движения окон, так в жизни работать не будет. В настоящем, реальном запуске шаг ожидается больше похожим на картинку для первой сети, а там хорошо видно неприятный факт: как бы хорошо сеть не искала лица, окна будут плохо выровнены к лицам. И уменьшение шага — явно не подходящее решение этой проблемы для продакшена. Как быть?

     16.02.2016       Выпуск 113 (15.02.2016 - 21.02.2016)       Учебные материалы

Курс прикладного программирования на основе языка Python

Курс в начале немного будет о языке Питон (еще бы), но хочется проникнуть чуть дальше стандартного "это циклы, это условия, вот ООП, смотрите, стандартная библиотека. Ура! Вы знаете Питон". Сделать несколько попыток проникнуть именно в прикладное программирования, коснуться областей, для которых создаются программы. Ведь не бывает "просто программирования".

     15.02.2016       Выпуск 113 (15.02.2016 - 21.02.2016)       Колонка автора

Таинство стандартной библиотеки: модуль copy - копирование объектов

Оператор присваивания в Python не копирует объект, он создает ссылку между переменной и объектом. Для коллекций, которые могут изменяться или содержать изменяемые элементы это не всегда верная стратегия.

Например, набор данных (пускай список чисел) и N различных обработок этих данных (сортировки, срезы). Стоит задача - в конце обработки вывести все изменения данных по шагам. Для решения задачи необходимо хранить копии данных на каждом из этапов.

     15.02.2016       Выпуск 113 (15.02.2016 - 21.02.2016)       Статьи

Глубокое обучение в гараже — Братство данных

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

     13.02.2016       Выпуск 112 (08.02.2016 - 14.02.2016)       Колонка автора

Синтаксис Python: enum, перечисления

Программист время от времени сталкивается с необходимостью ограничить множество допустимых значений для некоторого типа данных. Например, день недели это 7 различных значений, а месяцев у нас 12. Для удобного хранения подобных данных придуманы перечисления - enum.

Стандартная реализация enum появилась в Python начиная с версии 3.4 ( PEP 435. До этого ее легко заменяли словарями. Реализация представлена модулем enum. Модуль содержит несколько классы Enum, IntEnum (константы могут иметь только тип int) и декоратор unique, который проверяет ваш набор констант на дубликаты.

     13.02.2016       Выпуск 112 (08.02.2016 - 14.02.2016)       Колонка автора

Полезные инструменты: GeoIP - определяем город пользователя по IP

Уже давно фраза "я тебя вычислю по IP" реальна.

Хочется представить очень простой инструмент для определения местоположения по IP - GeoIP. Рассматривать GeoIP стоит как базу данных соответствия интернет и физических адресов. Базы могут отличатся точностью - одна точно определяет страну, а друга может дать точность до улицы.

     11.02.2016       Выпуск 112 (08.02.2016 - 14.02.2016)       Колонка автора

Python уроки: тестирование с помощью unittest

unittest - инструмент для тестирования в Python. Это стандартный модуль для написания юнит-тестов на Python. Unittest это порт JUnit с Java. Иными словами, и в коде модуля, и при написании тестов легко прослеживается ООП стиль, что весьма удобно для тестирования процедур и классов.

Документация доступна по следующим ссылкам: python3python2

В данном инструменте много возможностей: проверки (assert*), декораторы, позволяющие пропустить отдельный тест (@skip, @skipIf) или обозначить сломанные тесты (@expectedFailure) и этим не заканчивается список. Использование assert'ов с лихвой покрывает нужды при написании тестов.

Полезная черта unittest - автоматизированное тестирование. Есть и другие:

  • можно собирать тесты в группы
  • собирать результаты выполнения тестов (например, для отчета)
  • ООП стиль позволяет уменьшить дублирование кода при схожих объектах тестирования

     10.02.2016       Выпуск 112 (08.02.2016 - 14.02.2016)       Статьи

Celery: начинаем правильно

Заметка с советами по работе с Celery в production.

     10.02.2016       Выпуск 112 (08.02.2016 - 14.02.2016)       Колонка автора

Python уроки: Введение в тестирование на Python

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

Тестирование программного обеспечения (Software Testing) - проверка соответствия между реальным и ожидаемым поведением программы, осуществляемая при конечном наборе тестов, выбранном определенным образом. [IEEE Guide to Software Engineering Body of Knowledge, SWEBOK, 2004]

     09.02.2016       Выпуск 112 (08.02.2016 - 14.02.2016)       Статьи

Сравниваем цены в книжных интернет магазинах c помощью python, pandas и matplotlib

Сегодня мы попробуем найти самый дешевый и самый дорогой интернет магазин книг.
Сравнивать будем бумажные книги, которые есть в наличии. В разных магазинах очень разное количество книг. Где-то менее 1000, а где-то более 200 000 книг. 

     08.02.2016       Выпуск 112 (08.02.2016 - 14.02.2016)       Статьи

Полноценный REST API для перфекционистов за 5 минут

Речь пойдёт об инструменте, который позволит вам построить полноценный и простой в использовании REST API за минимальное количество времени. Называется он – Python Eve.

К сожалению в Интернете очень много инструкций на эту тему, но все они вводят в заблуждение. Начинающие разработчики, начитавшись подобных статей, думают, что REST API это GET/POST/PUT/DELETE. Заказчики думают, что это дело пары часов. А когда они встречаются вместе, происходят магия в виде Express.js/Mongoose/Passport и ещё кучи хлама, который течёт и временами блокирует event-loop. Всё это запускается с помощью какого-нибудь supervisor, потому что иногда падает и надо как-то перезапускать. 

     08.02.2016       Выпуск 112 (08.02.2016 - 14.02.2016)       Колонка автора

Интересные концепции: REPL (Read-eval-print loop)

REPL (Read-eval-print loop) — простая интерактивная среда программирования.

В такой среде пользователь может вводить выражения, которые среда тут же будет вычислять, а результат вычисления отображать пользователю. Название read-eval-print loop происходит от имён примитивов языка Lisp, которые реализуют подобную функциональность

Зачем нужен REPL? Очевидно что REPL нужен для обучения, проверки каких-то идей/кода, чтобы вспомнить как работает какой-то метод, для замены калькулятора, иными словаи когда цикл "Написал код -> запустил -> посмотрел результат" должен быть минимальным по времени.

     07.02.2016       Выпуск 111 (01.02.2016 - 07.02.2016)       Статьи

Мониторинг выполнения задач в IPython Notebook

Хотел бы поделиться простым, но полезным инструментом. Когда много работаешь с данными, часто возникают примитивные, но долгие операции, например: «скачать 10 000 урлов», «прочитать файл на 2Гб, и что-то сделать с каждой строчкой», «распарсить 10 000 html-файлов и достать заголовки». Долго смотреть в зависший терминал тревожно, поэтому долгое время я использовал следующий гениальный код:

     06.02.2016       Выпуск 111 (01.02.2016 - 07.02.2016)       Колонка автора

Учебные материалы: A Byte of Python - отличная книга для начала

“A Byte of Python” – это свободная книга по программированию на языке Python. Она может служить учебным пособием или руководством по языку Python для начинающей аудитории. Если ваши знания о компьютере ограничиваются тем, как сохранять текстовые файлы, эта книга для вас.

Книга короткая - 150 страниц и рассказывает самые-самые важные аспекты для начала.

     04.02.2016       Выпуск 111 (01.02.2016 - 07.02.2016)       Колонка автора

Python для ARM. Мигание светодиода. Часть 1

В продолжение статьи про одноплатные компьютеры мы приступим к их рассмотрению и работы с ними более детально (примеры будут показаны на платах Raspberry Pi (RPi), OrangePi и PcDuino). Начнем с управления светодиодом. В этом и дальнейших материалах будут использоваться за основу давно существующие материалы и будут использованы для создания наших проектов.

Начнем мы с управления светодиодом. Будут представлены несколько методов управления и возможные варианты в дальнейших ваших разработках.

     04.02.2016       Выпуск 111 (01.02.2016 - 07.02.2016)       Статьи

Ускорение Python-скриптов без приложения умственных усилий

Одно из распространенных применений Python — небольшие скрипты для обработки данных (например, каких-нибудь логов). Мне часто приходилось заниматься такими задачами, скрипты обычно были написаны наспех. Вкупе с моим слабым знанием алгоритмов это приводило к тому, что код получался далеко не оптимальным. Это меня ничуть ни расстраивало: лишняя минута выполнения не сделает погоды.

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

     04.02.2016       Выпуск 111 (01.02.2016 - 07.02.2016)       Колонка автора

Python уроки: исключения (exceptions)

В этом уроке вы узнаете о важном средстве языка, без которого крупная программа не может обойтись. Речь пойдет об исключениях. Что это такое, как ими пользоваться и как создавать собственные?

Исключительные ситуации или исключения(exceptions) - это ошибки, обнаруженные при исполнении. Например, к чему приведет попытка чтения несуществующего файла? Или если файл был случайно удален пока программа работала? Такие ситуации обрабатываются при помощи исключений.

Если же Python не может понять, как обойти сложившуюся ситуацию, то ему не остается ничего кроме как поднять руки и сообщить, что обнаружил ошибку.

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