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

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


Новый материал в ленте
  django-tinymce - 4.0.0

Интеграция редактора TinyMCE в админ панель Django. Скачать можно по ссылке: https://pypi.python.org/pypi/django-tinymce/


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/