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

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


Новый материал в ленте
  Topological Sort

A Directed Acyclic Graph (DAG) is a common data structure used to contain a series of related items that must have certain order or dependency. Topological sorting is used to help find where you might start processing to get in order handling of the items in a DAG.


Python Дайджест. Выпуск 99

(09.11.2015 - 15.11.2015)

поделиться выпуском 
pythondigest.ru: Выпуск 99

Конференции, события, встречи разработчиков

  PyNSK #4 — четвертая встреча Новосибирского Python сообщества

Прошел месяц с прошлой встречи и вот, организуем новые посиделки для любителей Python в Новосибирске. 15-го ноября (воскресенье) состоится четвертая встреча. Она пройдет в анти-кафе «Самовар» и начнется 13-00. На встрече вас ждет море общения и 3 доклада

Статьи

  Асинхронный Python 3.5 и Mongodb

Это достаточно вольный перевод статьи об основных новшествах асинхронного драйвера для mongodb используемого в tornado. Основной мотив, который послужил для написания этого перевода — новшества, появившиеся в этой версии, такие как поддержкаasyncio, async, await и Python 3.5. Сама статья не сколько перечисление новшеств, сколько лаконичные примеры асинхронной работы с MongoDB. 

  Использование библиотеки Matplotlib. Как рисовать линии и геометрические фигуры на графике

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

  Некоторые репозитории в помощь изучающим и преподающим Python и машинное обучение

Я Юрий Кашницкий, раньше делал здесь обзор некоторых MOOC по компьютерным наукам и искал «выбросы» среди моделей Playboy.

Сейчас я преподаю Python и машинное обучение на факультете компьютерных наук НИУ ВШЭ и в онлайн-курсе сообщества по анализу данных MLClass, а также машинное обучение и анализ больших данных в школе данных одного из российских телеком-операторов. 

Почему бы воскресным вечером не поделиться с сообществом материалами по Python и обзором репозиториев по машинному обучению… В первой части будет описание репозитория GitHub с тетрадками IPython по программированию на языке Python. Во второй — пример материала курса «Машинное обучение с помощью Python». В третьей части покажу один из трюков, применяемый участниками соревнований Kaggle, конкретно, Станиславом Семеновым (4 место в текущем мировом рейтинге Kaggle). Наконец, сделаю обзор попавшихся мне классных репозиториев GitHub по программированию, анализу данных и машинному обучению на Python.

  Подсчет элементов в Python: история

Иногда питоновский путь решения проблем со временем меняется. Например, подсчет элементов. В статье будет рассмотрено несколько способов подсчета элементов в списке и как в связи с этим менялся Pythonic-way. О производительности задумаемся позже

  Настраиваем Flask Response Class

Знали что класс Response в Flask можно переоределить? А что эта операция вполне стандартна? И можно все преобразования ответа не дубликовать от функции к функции, а записать все в одном классе? Тогда эта статья будет интересна

from flask import Flask, Response
 
class MyResponse(Response):
    pass
 
app = Flask(__name__)
app.response_class = MyResponse

  uvloop -- альтернатива стандартному asyncio loop

В последнее время Юра Селиванов (ага, тот самый автор PEP-492 aka async/await и MagicPython) работал над тем чтобы сделать asyncio побыстрее.

Он взял libuv и построил с её помощью uvloop -- asyncio совместимый event loop.

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

Получается, что uvloop в 3.5 раза быстрее стандартного и в 1.25 раза обгоняет gevent.
Т.е. абсолютный победитель по скорости в мире Python.

Библиотека пока еще не имеет стабильной версии, скоро всё будет.

  Бюджетная рассылка СМС

Один из двух примеров работающих на raspberry pi, модуле SIM 900 и 3g-modem huawei e-линейки - с примерами кода на Python

  Создаем интерактивный Dashboard на Jupyter

Это вторая часть из цикла статей "Advanced Jupyter Notebook Tricks."  В этой статье вы познакомитесь с возможностью Jupyter как создание интерактивных виджетов.

  Играем в Pacman c помощью жестов: Python+OpenCV

Статья описывает как реализовать обработку жестов на Python. В качестве примера была выбрана игра Pacman. Автор с помощью жестов поиграл в нее

  Сигнализируем о проходе МКС с помощью Redis-Queue и Twilio Copilot

Статья описывает пример использования Twillo для оповещения о событиях. В качестве события выбран проход МКС над пользователем.

  Тестируем Django используя RAM (оперативную память)

Статья описывает возможность использовать RAM в качестве хранилища для базы данных PostgreSQL. Что в свою очередь повышает скорость тестирования

  Простой консольный мессенджер для VK на Python

Как-то меня осенила мысль: «Зачем на работе постоянно прятать вкладку браузера с ВК от начальства, если можно ее замаскировать?»

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

Учебные материалы

  Python Playground: Geeky Projects for the Curious Programmer

Python Playground представляет собой сборник задач, проектов, которые будут вдохновлять вас использовать Python, чтобы создавать музыку, имитацию реальных явлений, а также взаимодействовать с аппаратным вроде Arduino и Raspberry Pi. Вы узнаете, как использовать общеизвестные библиотеки, такие как NumPy, Matplotlib и Pygame

  Django: практика создания Web-сайтов на Python

Вышла этой осенью новенькая книга "Django: практика создания Web-сайтов на Python" - Дронов Владимир

Колонка автора

  Математика в Python: Преобразование фурье

Осторожно, МАТАН!!!

По-простому, преобразование Фурье — разложение некоторого сигнала на гармонические (синусы или косинусы) колебания (спектр). 

Если вы осознанно употребляете слово "частота", вы уже хотя бы интуитивно представляете, что такое преобразование Фурье. Даже в наших ушах есть хардверный анализатор Фурье (улитка) (а также продвинутые драйвера в мозгу), благодаря которому мы различаем голоса, ноты, тембры... 

  Железный Python: Одноплатные компьютеры

Одноплатный компьютер представляет собой компьютер, собранный на одной печатной плате с набором необходимых компонентов для полноценной работы (микропроцессор, оперативная память, системы ввода-вывода и другие модули, необходимые для функционирования компьютера). 

Одноплатные компьютеры хорошо подходят для решения типовых задач, таких как:

- Медиа-центр для LCD-телевизора с поддержкой торрентов и видео из социальных сетей;
- Устройство для сбора данных датчиков по Ethernet;
- Выделенный веб-сервер, FTP или VPN-сервера;
- Сервер управления «умным домом»;
- Охранную систему с распознаванием лиц;
- Робота с компьютерным зрением;
- Недорогой бюджетный образовательный компьютер;

Интересные проекты, инструменты, библиотеки

  pipdeptree - рисуем дерево зависимостей для всех модулей

Модуль позволяет преобразовать вывод pip freeze в виде дерева зависимостей: 

$ pipdeptree
Warning!!! Possible confusing dependencies found:
* Mako==0.9.1 -> MarkupSafe [required: >=0.9.2, installed: 0.18]
  Jinja2==2.7.2 -> MarkupSafe [installed: 0.18]
------------------------------------------------------------------------
Lookupy==0.1
wsgiref==0.1.2
argparse==1.2.1
psycopg2==2.5.2
Flask-Script==0.6.6
  - Flask [installed: 0.10.1]
    - Werkzeug [required: >=0.7, installed: 0.9.4]
    - Jinja2 [required: >=2.4, installed: 2.7.2]
      - MarkupSafe [installed: 0.18]
    - itsdangerous [required: >=0.21, installed: 0.23]
alembic==0.6.2
  - SQLAlchemy [required: >=0.7.3, installed: 0.9.1]
  - Mako [installed: 0.9.1]
    - MarkupSafe [required: >=0.9.2, installed: 0.18]
ipython==2.0.0
slugify==0.0.1
redis==2.9.1

  pythran - конвертер Python в С++

Ускорение Python кода можно делать разными способами.

Для начала нужно определить какие куски кода наиболее тормозят. Для этого потребуется собрать статистику с помощью PyCharm или APM инструментов (например через Sentry). Вероятнее, "тормоза" будут связаны с базой данных или с не оптимальным алгоритмом. Если с кодом и алгоритм оптимален, то можно посмотреть на инструменты

  • Cython - и небольшую часть кода перевести на него
  • pythran - и конвертировать код в C++

Мы предоставляем консультации по оптимизации Python кода - обращайтесь в https://t.me/axsapronov. Подскажем как провести анализ кода, подскажем как оптимизировать

  tredify - визуализируем 2д и 3д данные из JSON

[
    {
        "DIRECTION": "y"
    },
    {
        "xs": [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19],
        "ys": [
            0.13637986,
            0.81848763,
            0.94809069,
            0.81352269,
            0.94943976,
            0.33354841,
            0.14769246,
            0.66518745,
            0.6922248,
            0.47103811,
            0.03248075,
            0.30346144,
            0.00491906,
            0.1544151,
            0.4929639,
            0.33019535,
            0.76123614,
            0.97240316,
            0.89122254,
            0.0263647
        ],
        "zs": 30
    }
]

  django-image-renderer - отображаем картинки в любом размере

{% load renderer %}
...
{% rendition master 42 42 %}
...

  paasta - распределенная платформа как сервис

paasta - это набор инструментов для написания, построения, деплоя, мониторинга проекта. Используется множество сторонних проектов, типа docker

  mps-youtube - проигрыватель YouTube в консоли

mps-youtube - позволяет проигрывать видео и музыку с Youtube. Также есть возможность скачать необходимый ролик

  Empire of Code

Новая игра-стратегия для программистов, в которую можно просто играть, а можно и решать задачи, развивая свой скилл. В игре 2 клана: Python и Java Script, давайте покажем, что наш клан лучше. Результаты и рейтинг кланов можно смотреть в Leader board

  AndroBugs_Framework - ищем баги в андройд приложениях

AndroBugs_Framework - это фреймворк (набор утилит в данном случае), который позволяет находить уязвимости в андройд приложениях. Можно использововать для отладки приложений.

  xkcd-dl - загружаем все комиксы с xkcd-dl

Это консольная утилита, которая позволяет работать с комиксами xkcd. Демо:

Usage

  toasyncio - Tornado+asyncio - вместе мы сила

Библиотека позволяет смешивать вызовы coroutine от tornado и asyncio в едином стиле. Также добавляет обработчики для тестирования в стиле Tornado. Только если вы пишите асинхронный WEB на python 3.4 или выше.