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

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


Новый материал в ленте
  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 Дайджест. Выпуск 102

(30.11.2015 - 06.12.2015)

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

Новости

  Django 1.9

 

После 10 с половиной месяцев труда разработчики наконец-то выпустили релизную версию Django 1.9.

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

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

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

Питонисты Новосибирска, приглашаем вас на встречу сообщества Python сообщества — PyNSK. 

12-го декабря (суббота) состоится пятая встреча. Она пройдет в новом для нас месте — Культурный Центр «Этаж» и начнется 13-00.
На встрече вас ждет море общения и 2 доклада

Статьи

  История одной оптимизации: передача и обработка результатов боя

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

  Если бы я проектировал механизм импорта с нуля

Статья описывает соображения про систему импорта. 

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

  Emacs - лучший Python редактор?

Статья описывает применение Emacs в качестве редактора для Python

  Строим конвейер вычислений на asyncio и Python 3

Статья описывает как реализовать конвейер вычислений. На подобии этого:

  Визуальное объяснение List Comprehensions

Статья описывает конструкцию list comprehensions в Python

  Анализ данных: волны для серфинга на восточном побережье Ирландии

Статья рассказывает применение анализа данных для вычисления удачных дней для сервфинга

Видео

  Пишем web-проекты: Гексагональная архитектура в приложениях Django

Видео со свежего Moscow Python митапа. Как не превратить свой проект в груду урлов? Как не потерять расширяемость с ростом кодовой базы? Как писать поддерживаемый код? Об этих проблемах и их возможных решениях на примере Django расскажет и покажет Малышев Артем.

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

  Методические материалы для обучения Python

Список актуальных учебных материалов для обучения студентов. 

Есть как полные курсы, так и отдельные уроки.

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

  Интересные концепции: опциональная статическая типизация

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

В русскоязычном Python Андрей Власовских из Jetbrains наиболее часто говорит об этой концепции. Представляю сборку материалов от этого докладчика:

  Python на службе народа: оповещения в Linux

Оповещения - это зло для продуктивности, но без них тяжело. Сервер упал - как узнать об этом мгновенно? СМС, письмо на email, оповещение на рабочем столе.

К сожалению, без Qt, Wx и других фреймворков кроссплатформенные оповещения не сделать. Поэтому рассмотрим только Linux. Для linux есть библиотека libnotify и обязка для нее python-notify

  Полезные инструменты: sandman - админка над базой + REST за пару секунд

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

  Таинство стандартной библиотеки: asyncio в Python. Как устроено и зачем нужно?

Видео со свежего Moscow Python митапа. В python 3.4 появился asyncio. До сих пор многие разработчики не знают, что это такое, как реализуется асинхронность в Python и в чем её сильные и слабые места. Повторим пройденное и заглянем под капот.

  API всему голова: gitter api - пишем в чат от своего лица

Gitter - это система для создания чатов для пользователей Github. Чаты бесплатны, есть интеграция с Github, есть API - что еще для небольшого чата надо?

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

  Синтаксис Python: lambda-функции

Python поддерживает интересный синтаксис, позволяющий определять небольшие однострочные функции на лету. Позаимствованные из Lisp, так называемые lambda-функции могут быть использованы везде, где требуется функция.

  Пишем web-проекты: django сигналы

Хочется поделиться ссылкой на статью - https://zxmd.wordpress.com/2013/05/23/django_signals/

Что такое сигнал в Django Framework ?

На бытовом уровне это система (диспетчер сигналов) которая обрабатывает некоторые виды событий которые генерирует система. По сути система сигналов разделяется на два компонента:

sender — компонент посылающий сигнал;

receiver — компонент отвечающий за обработку сигнала. ...

  Python на службе народа: добавляем водяной знак на изображение

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

В качестве наложения слоев хочется привести удачно позаимствованный пример наложения водяного знака на изображение

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

  django-mongolog - логгер в mongo

LOGGING = {
    'handler': {
        'mongolog': {
            'level': 'WARN',
            'class': 'mongolog.MongoLogHandler',
            'connection': 'mongodb://localhost:27017/'
        },
    },
    'loggers': {
        'django': {
            'handlers': ['console', 'mongolog'],
            'level': 'DEBUG',
            'propagate': True
        },
    },
}

  qtarmsim - графический интерфейс на Qt для ARMSim

ARMSim - эмулятор ARM7TDMI под Windows

  cinje - шаблон движка DSL

Движок позволяет очень просто писать свои DSL

  musicbot - Telegram бот для сохранения музыки

musicbot - позволяет сохранять музыку в Telegram, а затем прослушивать с других Telegram-клиентов

Screenshot Screenshot

  pyriscope - скачиваем Periscope видео с помощью Python

Инструмент позволяет скачивать видео с сервиса Periscope

  article-date-extractor - извлекаем дату из статей

Модуль позволяет извлечь дату из html страниц. Работает на регулярке и мелких эвристиках. Результативность не очень высокая.

  kobin - простой web фреймворк

Простой web-фреймворк. Фреймворк написан на голом Python и подходит для изучения строения подобных проектов.

  numpngw - экспортируем массив numpy в виде PNG файлов

import numpy as np
from numpngw import write_png


# Example 1
#
# Create an 8-bit RGB image.

img = np.zeros((80, 128, 3), dtype=np.uint8)

grad = np.linspace(0, 255, img.shape[1])

img[:16, :, :] = 127
img[16:32, :, 0] = grad
img[32:48, :, 1] = grad[::-1]
img[48:64, :, 2] = grad
img[64:, :, :] = 127

write_png('example1.png', img)

  Движок интернет магазина на django

Первое впечатление намного лучше чем от django-oscar

  Confit - система конфигурации на YAML

Confit - предоставляет общий API для конфигов. Конфиги можно комбинировать из нескольких файлов. 

  wavio - чтение, запись 24-битный WAV файлов с помощью numpy arrays

import numpy as np
import wavio

rate = 22050  # samples per second
T = 3         # sample duration (seconds)
f = 440.0     # sound frequency (Hz)
t = np.linspace(0, T, T*rate, endpoint=False)
x = np.sin(2*np.pi * f * t)
wavio.write("sine24.wav", x, rate, sampwidth=3)

  aiotg - фреймворк на основе asyncio для создания Telegram ботов

import os
from aiotg import TgBot

bot = TgBot(os.environ["API_TOKEN"])

@bot.command(r"/echo (.+)")
def echo(chat, match):
    return chat.reply(match.group(1))

if __name__ == '__main__':
    bot.run()

  testinfra - тестируем инфраструктуру (настройки серверов)

Проект добавляет синтаксический сахар для упрощения тестирования конфигов, уровней доступа и других параметров на ваших серверах.

  prwlock - многопоточный reader-writer lock

from prwlock.prwlock import RWLock

rwlock = RWLock()
from __future__ import print_function

import os
import time

from multiprocessing import Pool
from prwlock.prwlock import RWLock
def f(rwlock):
    for i in range(2):
        print(os.getpid(), 'Acquiring read lock')
        rwlock.acquire_read()
        print(os.getpid(), 'Sleeping for a while')
        time.sleep(1)
        print(os.getpid(), 'Releasing lock')
        rwlock.release()
        time.sleep(.1)

r = RWLock()
children = 20
pool = Pool(processes=children)
for child in range(children):
    pool.apply_async(f, [r])

  auditok - модуль для Audio/Acoustic Activity Detection

Модуль позволяет обнаруживать в аудио-дорожке сегменты с необходимыми параметрами.

Релизы

  django-rosetta - 0.7.8

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

  pex - 1.1.1

Библиотека и утилита для генерации .pex (Python EXecutable) файлов. Изменения описаны по ссылке https://allmychanges.com/p/python/pex/#1.1.1. Скачать можно по ссылке: https://pypi.python.org/pypi/pex

  supervisor - 3.2.0

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

  django-phonenumber-field - 1.0.0

Добавляет в модели Django дополнительное поле PhoneNumberField которое будет автоматически валидировать телефонный номер.. Изменения описаны по ссылке https://allmychanges.com/p/python/django-phonenumber-field/#1.0.0. Скачать можно по ссылке: https://pypi.python.org/pypi/django-phonenumber-field/