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

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


Новый материал в ленте
  aiohttp - 3.11.7

http клиент/сервер для asyncio. Скачать можно по ссылке: https://pypi.python.org/pypi/aiohttp


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

(07.12.2015 - 13.12.2015)

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

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

  Python Meetup октябрь: Deliberate Practice и десктоп-приложения на Penta.by

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

Под катом вы найдете доклады:

  • Deliberate Practice: Coding Dojo, Code Kata and Coderetreat / Сергей Сергиенко
  • Быстрая разработка десктоп-приложений с Penta.by / Андрей Пучко
  • WRK: Modern HTTP benchmarking tool / Алексей Романов

Статьи

  Разбираемся с бинарными данными на Python

Статья содержит довольно подробный вводный материал для работы с бинарными данными. Рассказывается про Bytearray, как читать бинарные данные, как конвертировать между типами данных, как использовать struct

  Поднимаем сложный проект на Django с использованием Docker

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

Исходные данные у нас такие: начинается разработка проекта, в которой планируется «тонкий бэкенд». Т.е. бэк у нас состоит из закешированных страниц (рендерятся любым шаблонизатором), объёмных моделей с сопутствующей логикой (ORM) и REST API, выполняющего роль контроллера. Фактически, View в такой системе редуцировано и вынесено в JS, благо есть разные реакты, ангуляры и прочие вещи, которые позволяют фронтендщикам считать себя «белыми людьми».

  Django: Как быстро получить ненужные дубликаты в простом QuerySet

Только что обнаружил интересный баг (баг с точки зрения человеческой логики, но не машины), и решил им поделиться с сообществом. Программирую на django уже довольно долго, но с таким поведением столкнулся впервые, так что, думаю, кому-нибудь да пригодится. Что ж, к делу!

  Используем JSON Schema для валидации JSON данных

Статья описывает использование JSON Schema для валидации JSON данных на Python

Аналогичный подход можно применять для валидации XML данных.

  Введение в Chainer: Нейронные сети на Python

Статья описывает библиотеку Chainer

  Улучшаем Excel таблицы с помощью Python

Статья описывает применение Python для создания более мощных и удобных excel таблиц. Рассказывается о применении VBA, pandas

  Программируем GUI Python

Эта предназначена для тех разработчиков, кто уже знаком с Python, но не знаком с GUI программированием. У меня две цели. Показать примеры и продемонстрировать, что создание GUI не так бессмысленно. А вторая - предоставить готовых набор виджетов под разное применение.

  Визуализация ASTs для лучшего понимания Python

Автор статьи берет небольшой пример: 

# Python code
def main():
    name = "Python"
    print("{0} is great".format(name))

и рассматривает как ээтот код выглядит при исполнении

  Local Binary Patterns на Python & OpenCV

Этот пост покажет вам, как использовать оператор Local Binary Patterns, чтобы автоматически классифицировать и идентифицировать текстуры и структуры в образах

  Нейросеть на Python, часть 2: градиентный спуск

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

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

  Простой метапоисковый алгоритм на Python

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

В данной статье речь пойдет не о решении задачи классификации конкретно, а о попытке автоматизировать наиболее скучный этап разработки рубрикатора — создание обучающей выборки.

  Калибровка Kinect v2 с помощью OpenCV на Python

Не так давно мы начали пару проектов, в которых необходима оптическая система с каналом дальности, и решили для этого использовать Kinect v2. Поскольку проекты реализуются на Python, то для начала нужно было заставить работать Kinect из Python, а затем откалибровать его, так как Kinect из коробки вносит некоторые геометрические искажения в кадры и дает сантиметровые ошибки в определении глубины.

До этого я никогда не имел дела ни с компьютерным зрением, ни с OpenCV, ни с Kinect. Исчерпывающую инструкцию, как со всем этим хозяйством работать, мне найти тоже не удалось, так что в итоге пришлось порядком повозиться. И я решил, что будет не лишним систематизировать полученный опыт в этой статье. Быть может, она окажется небесполезной для какого-нибудь страждущего, а еще нам нужна популярная статья для галочки в отчетности.

  Временные зоны в Pytz и Django

Проблемы с временными зонами возникают неожиданно. И вылезают наружу при использовании ПО. Статья описывает применение канонического модуля временных поясов Pytz в вашем ПО

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

  Таинство стандартной библиотеки: shelve - база данных для объектов

Модуль shelve из стандартной библиотекой можно описать одной фразой - "pickle + anydbm".

shelve позволяет сериализовать объект (прям как pickle), а потом сохранить его в виде похожем на БД (интерфейс anydbm).

  Синтаксис Python: менеджер контекста (with) - подборка интересных ссылок

Менеджеры контекста — это механизм стоящий за ключевым словом with.

Ключевое слово with появилось еще в Python 2.5 (через __future__). Такая конструкция пришла на смену концепту setup..try..except..finally

  Синтаксис Python: strip, rstrip, lstrip

Не редко возникает задача убрать лишние пробелы с начала/конца строки. Например

a = 'Доброе утро, Иван'
message, name = a.split(',') 
print(name)
> ' Иван' # (лишний пробел сначала строки)

  Практические задачи: Задача #002 - собрать данные о погоде в одном месте

Продолжаем предлагать различные задачи для практики. Кто заинтересуется решением этих задач, просим помогать друг-другу. Но при этом в течении недели не кидать ссылок на полностью готовое решение. А также, чтобы читать код было удобно - публикуйте его на https://gist.github.com/ или какой-то подобный сервис.

Описание задачи:

  API всему голова: twitter API - пишем твит с изображением

О Twitter нечего писать, проект уже взрослый и известный. Через Твиттер продают, покупают, разыгрывают призы, консультируют, оказывают поддержку проектов, да даже используют как сервис оповещений. Twitter имеет открытый API, который сегодня и освоим. Мы научимся публиковать пост с изображением через Twitter API

  Таинство стандартной библиотеки: консольный GUI с помощью curses

Python отлично подходит для написания самых различных серверных утилит. Часто такие утилиты дополняют CLI (Command Line Interface), а иногда и целым GUI.

Но как его сделать? На сервере часто нет X сервера. нет Qt и чего-то такого, а Python есть. Возможно вы слышали про ncurses - библиотека для управления IO. Вот ее и можно использовать для такой задачи - стандартная библиотека содержит модуль curses.

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

  spotpy - утилита оптимизации параметров

Утилита позволяет провести подбор параметров модели

  terrabot - библиотека для созания Terraria ботов

from terrabot import TerraBot
from terrabot.events import Events

#Create a TerraBot object
bot = TerraBot('127.0.0.1')
event = bot.get_event_manager()

#Connect a function to an event using a decorator
@event.on_event(Events.Chat)
def chat(event_id, msg):
    #Do something with the message
    #In this case, stop the bot if the word "Stop" occurs
    print(msg)
    if "stop" in msg:
        bot.stop()

#Start the bot
bot.start()

#And wait
while bot.running:
pass

  nzbhydra - мета-поиск по NZB индексаторов

NZB - это XML формат для пересылки постов из Usenet'а

  robogif - простой Android screen recorder

Инструмент позволяет сделать снимой экрана для android 4.4+, или даже ряд снимков.

GIF example

  edutest - библиотека для проверки кода студентов

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

  Cyjson – быстрый и эффективный JSON парсер

Реализован как Cython обертка над C кодом

  pycachesim - симулятор иерархии кэша

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

  braindump - исходники органайзера заметок - https://braindump.pw/

Проект https://braindump.pw/ - это органайзер заметок

  django-advanced-filters - приложение с фильтрами

Инструмент расширяет возможности стандартных фильтров в админке. Можно фильтровать по вложенным объектам, комбинировать условия

  ZeroDB - база которая хранит данные в зашифрованном виде

База может располагаться на публичном хостинге, т.к. информация расшифровывается на клиенте. Основана на ZODB, позволяет хранить python объекты.

  twitter-ads - клиент для рекламного Twitter API

Библиотека позволяет управлять рекламыми компаниями из Python кода

from twitter_ads.client import Client
from twitter_ads.campaign import Campaign

CONSUMER_KEY = 'your consumer key'
CONSUMER_SECRET = 'your consumer secret'
ACCESS_TOKEN = 'access token'
ACCESS_TOKEN_SECRET = 'access token secret'
ACCOUNT_ID = 'account id'

# initialize the client
client = Client(
    CONSUMER_KEY, CONSUMER_SECRET, ACCESS_TOKEN, ACCESS_TOKEN_SECRET)

# load the advertiser account instance
account = client.accounts(id=ACCOUNT_ID)

# load and update a specific campaign
campaign = account.campaigns().next()
campaign.name = 'updated campaign name'
campaign.paused = True
campaign.save()

# iterate through campaigns
for campaign in account.campaigns():
    print(campaign.id)

  Pybind11 – бесшевно соединяем C++11 и Python

В репозитории вы найдете инструмент, который позволяет работать с C++ программами из Python

  py3njection - модуль для внедрение зависимостей используя аннотации

from py3njection import inject
from some_package import ClassToInject

class Demo:
    @inject
    def __init__(self, object_to_use: ClassToInject):
        self.dependency = object_to_use

demo = Demo()

  ping-me - система напоминалок в виде CLI

Модуль позволяет настроить напоминания о действиях. Например, "Позвонить Маме" и установить на конкретное время, по достижению этого времени на ваш телефон упадет смс.

  vycro - обертка над VBA для Microsoft Excel.

from vycro import MacroWrapper

mw = MacroWrapper()
wb_kwargs = {"ReadOnly":"True"}
m_args = ["arg1", "True", "111"]
with mw.open_workbook("/full/path/with.extension", **wb_kwargs):
    mw.run_macro("macro_name", *m_args)  # See declaration for function args

Релизы

  virtualenv - 0.8

Инструмент создания виртуального рабочего окружения. Изменения описаны по ссылке https://allmychanges.com/p/python/virtualenv/#0.8. Скачать можно по ссылке: http://pypi.python.org/pypi/virtualenv/

  redis - 2.10.5

Python клиент для Redis. Изменения описаны по ссылке https://allmychanges.com/p/python/redis/#2.10.5. Скачать можно по ссылке: http://pypi.python.org/pypi/redis/

  django-extensions - 1.5.8

Набор пользовательских расширений для Django-проектов. Изменения описаны по ссылке https://allmychanges.com/p/python/django-extensions/#1.5.8. Скачать можно по ссылке: https://pypi.python.org/pypi/django-extensions

  cffi - 1.3.1

Интерфейс для вызова C-кода. Изменения описаны по ссылке https://allmychanges.com/p/python/cffi/#1.3.1. Скачать можно по ссылке: http://pypi.python.org/pypi/cffi/

  django-taggit - 0.17.6

Приложение для поддержки тегов в Django. Приложение будет крайне полезно на сайте с новостями, которые необходимо помечать тегами, так же можно легко реализовать сортировку по тегам.. Изменения описаны по ссылке https://allmychanges.com/p/python/django-taggit/#0.17.6. Скачать можно по ссылке: https://pypi.python.org/pypi/django-taggit/

  kombu - 3.0.27

Фреймворк для работы с AMQP. Изменения описаны по ссылке https://allmychanges.com/p/python/kombu/#3.0.27. Скачать можно по ссылке: http://pypi.python.org/pypi/kombu/