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

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

     23.10.2015       Выпуск 96 (19.10.2015 - 25.10.2015)       Колонка автора

Таинство стандартной библиотеки: .pyi файлы - python stubs

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

Появился модуль typing, который в 3.5 есть по умолчанию, а начиная с 3.2 можно установить с PyPi Но что делать с кодом на 2.7? Хочется же больше ошибок вылавливать. Здесь на пользу приходят python stubs - .pyiфайлы.

     22.10.2015       Выпуск 96 (19.10.2015 - 25.10.2015)       Статьи

Celery: лучшие практики

Если вы работаете с Django, то на некотором этапе разработке вам может понадобиться фоновая обработка долго выполняющихся задач. Возможно, что для такого рода задач вы используете какой-либо инструмент для управления очередями задач. Celery — один из самых популярных проектов для решения подобных задач в мире python и Django на данный момент, но есть и другие проекты для этой цели. 

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

     22.10.2015       Выпуск 96 (19.10.2015 - 25.10.2015)       Колонка автора

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

Слышали фразу: "Если что-то выглядит как утка, плавает как утка и крякает как утка, то, вероятно, это утка"? Эта поговорка характеризует утиную типизацию == утипизацию

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

     21.10.2015       Выпуск 96 (19.10.2015 - 25.10.2015)       Колонка автора

Учебные материалы: познаем Django

Django - web-фреймворк. Обладает отличной документацией, которую можно читать долго и упорно. Есть даже тутроиал по созданию блога. Вот только есть "минус" - проходишь туториал с блогом и не знаешь где еще добыть структурированной информации. Да еще и актуальной.

     21.10.2015       Выпуск 96 (19.10.2015 - 25.10.2015)       Статьи

Создание .exe файла для авторизации и взаимодействия с VK API при помощи Python

 

В этой статье будет рассмотрен способ создать .exe файл, позволяющий пройти авторизацию ВК и выполнить определенные запросы к VK API. Установка Python не требуется.
 

Системные требования

 

     21.10.2015       Выпуск 96 (19.10.2015 - 25.10.2015)       Статьи

PYCON RUSSIA-2015: видео и презентации докладов

18-19 сентября в Екатеринбурге прошла третья международная конференция python-разработчиков PyCon Russia. 21 доклад, два мастер-класса, Lightning Talks — все это PyCon-2015. Под катом — отчет о прошедшей конференции, много видео и презентации докладов. Питонисты собрались из 25 городов, среди которых: Сан-Франциско, Париж, Прага, Бонн, Таллин, Минск, Киев, Москва, Санкт-Петербург, Казань, Уфа 

     21.10.2015       Выпуск 96 (19.10.2015 - 25.10.2015)       Статьи

Модуль SymPy. Пример символьных вычислений.

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

     20.10.2015       Выпуск 96 (19.10.2015 - 25.10.2015)       Статьи

Сервис для системного администратора. Часть 1

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

     19.10.2015       Выпуск 96 (19.10.2015 - 25.10.2015)       Колонка автора

Синтаксис Python: слайсы/срезы

Синтаксис Python легкий, читаемый. Хочется упомянуть массивы (как структура с последовательными элементами). В Python они бывают разные - list, tuple, строки Операции с массивами:

  • Получить копию
  • Получить первые/последние N элементов
  • Получить N элементом с позиции M
  • Получить каждый N элемент
  • Развернуть

     19.10.2015       Выпуск 96 (19.10.2015 - 25.10.2015)       Колонка автора

Синтаксис Python: переменная __all__

Вы наверное слышали фразу "wild import - зло". В коде это выглядит так

from my_super_module import *

Ответ почему это "зло" очень простой - вы импортируете всё - то что надо и то что не надо. А значит вы можете смело перегрузить какой-то метод. Как же быть? Можно импортировать только нужные переменные и функции/классы, что является правильным подходом. Но ведь должен быть альтернативный вариант.

     18.10.2015       Выпуск 95 (12.10.2015 - 18.10.2015)       Статьи

Удалённое исполнение системных команд по запросу через сокеты на Python 3. Протокол передачи данных

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

Так какими же недостатками обладает наше приложение?

  • Отсылается один единственный пакет, длина которого не может превышать заранее заданной границы в 1 Кбайт.
  • Приложение без проверки передаёт аргумент, принятый из сети, в оболочку (URL).
  • Недостаток функциональности. Мы не можем, например, скачать все изображения с Хабра, или скачать отдельный хаб.


Сегодня я расскажу как решить первую проблему, а заодно и немного о TCP.

     17.10.2015       Выпуск 95 (12.10.2015 - 18.10.2015)       Статьи

Удалённое исполнение системных команд по запросу через сокеты на Python 3 или как я сайты скачивал

Не так давно качество мобильного интернета в моём городе стало постепенно ухудшаться из-за возрастающей на сети операторов нагрузки и некоторые сайты, требующие большое количество соединений (зависимые файлы страницы) стали загружаться ну ОЧЕНЬ медленно. По вечерам скорость опускается на столько, что некоторые сайты могут полностью загружаться в течении нескольких десятков секунд.

Есть несколько способов решения данной проблемы, но я решил выбрать немного необычный для нашего времени способ. Я решил скачивать сайты. Конечно, данных способ не подходит для крупных сайтов, вроде Хабра, тут разумнее использовать парсер, но можно скачать и отдельный хаб, список пользователей, или только свои публикации с помощью HTTrack Website Copier, применив фильтры. Например, чтобы скачать хаб Python с Хабра нужно применить фильтр "+habrahabr.ru/hub/python/*".
 

     17.10.2015       Выпуск 95 (12.10.2015 - 18.10.2015)       Колонка автора

Учебные материалы: сборник ООП паттернов

ООП преподают везде. В школе, в универе, в колледже, на курсах, упоминают в статьях, есть даже много книг на эту тему - например, банда четырех. Важным моментом ОО это паттерны. Это набор узаконенных хитростей и хаков, которые позволяют обходить недостатки самого ООП. По ссылкеhttps://github.com/faif/python-patterns вы сможете найти готовый код для множества паттернов.

     16.10.2015       Выпуск 95 (12.10.2015 - 18.10.2015)       Статьи

Событийно-ориентированный бэктестинг на Python шаг за шагом. Часть 4

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

     16.10.2015       Выпуск 95 (12.10.2015 - 18.10.2015)       Колонка автора

Опыт разработчиков: использование переменной _

Хорошие имена переменных - это признак хорошего кода. Для циклов часто используют одно-буквенные переменные, для временных переменных тоже короткие, для глобальных - ЗАГЛАВНЫЕ. Есть и другие рекомендации. Все они написаны кровью из глаз разработчиков.

Перейдем к заголовку и сразу пример: Пускай есть функция, которая возвращает 3 значения...

     15.10.2015       Выпуск 95 (12.10.2015 - 18.10.2015)       Колонка автора

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

Наверное, вы слышали про модуль Pickle, который умеет сериализовать объект в бинарный вид, который можно потом сохранить/загрузить в /из файл.

А модуль marshal сериализует объект в текстовый вид. Получив строку вы можете отправить ее другу по email, а уже из строки снова получить объект

     14.10.2015       Выпуск 95 (12.10.2015 - 18.10.2015)       Видео

Python + GPGPU: ожидания и реалии

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

     14.10.2015       Выпуск 95 (12.10.2015 - 18.10.2015)       Видео

Получаем текст веб-страниц из Python и как это работает

Мы рассмотрим python-библиотеку под названием readability-lxml (https://github.com/buriy/python-readability), её применение и механизм работы для задачи извлечения текстов новостных страниц.

     14.10.2015       Выпуск 95 (12.10.2015 - 18.10.2015)       Колонка автора

Интересные концепции: fuzzy-testing - тестирование грубой силой

Тестирование программ повышает уверенность в ее способности работать. Есть даже большие школы, которые говорят о тестах, например, TDD, BDD.

У ручных тестов есть недостаток, среди прочих - тесты пишет человек. В следствии этого - он не сможет проверить работу функции/класса/etc на всех данных. А когда нам быть уверенным что даже на самых невалидных данных работает корректно, то без случайных данных не обойтись.

     13.10.2015       Выпуск 95 (12.10.2015 - 18.10.2015)       Колонка автора

Полезные инструменты: fabric - автоматизируем рутину

Ситуация: написали web-проект, свой, домашний, а может и на работе. Надо его опубликовать в Интернет - задеплоить. Зашли на сервер, активировали venv, скачали новые исходники из репозитория, накатили миграции, обновили static-файлы, перезапустили, предположим, celery, перезапустили uwsgi.

И тут, поняли что забыли раскоментировать строчку в коде. Делаем коммит, снова заходим на сервер, активировали venv.... Зачем вся эта рутина с деплоем? Может есть способ проще? Мы же IT-шники, давайте напишем скрипт.