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

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

     18.01.2016       Выпуск 109 (18.01.2016 - 24.01.2016)       Колонка автора

Пишем простые проекты. Проект #1. Часть #1

Замечено, что новичкам трудно перейти от теории к практике - заставить себя писать, а не только читать. Чтобы помочь мы постоянно публикуем различный материал и указываем как применить эти знания на практике.

В этот раз решили написать 2 небольших проекта:

  • Первый - страница со статистикой отжимания. Будет показано, как с помощью flask + google chart's сделать проект для сохранения и визуализации количества отжиманий.
  • Второй - vk2rss - сервис для преобразования стен групп ВКонтакте в RSS. Будет рассмотрен парсинг, работа с VK API, создание простого GUI.

     03.01.2016       Выпуск 106 (28.12.2015 - 03.01.2016)       Колонка автора

Синтаксис Python: объект среза как объект или встроенный метод slice

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

     03.01.2016       Выпуск 106 (28.12.2015 - 03.01.2016)       Колонка автора

Примеры кода: click - инструмент для создания CLI приложений

Начинаем новую рубрику - "Примеры кода". В данной категории постов мы будем публиковать небольшие(или большие) куски кода. Это могут быть как решение определенных задач/вопросов так и небольшие примеры кода с применением инструментов.

     03.01.2016       Выпуск 106 (28.12.2015 - 03.01.2016)       Колонка автора

Полезные библиотеки: где брать модули для django?

Django - самый популярный web-фреймворк для Python. Этому доказательство - количество библиотек расширяющих возможности.

От этого множество авторов пишут статьи с названиями "Мой топ 10 django-модулей", мы не исключение и будем такие писать.

     03.01.2016       Выпуск 106 (28.12.2015 - 03.01.2016)       Колонка автора

Примеры кода: скрипт поздравления всех друзей с НГ в vk.com

В посте http://pynsk.ru/posts/2015/Nov/26/api-vsemu-golova-vkontakte-ot-nachala-do-otpravki-soobshcheniia-drugu/ было рассказано как начать работать с VK API.

НГ совсем близко. Python хорошо подходит для автоматизации. Поэтому в этот раз рубрика "Примеры кода"пополняется скриптом поздравления друзей с Новым Годом:

     03.01.2016       Выпуск 106 (28.12.2015 - 03.01.2016)       Колонка автора

API всему голова: Feedly API - разбираемся с RSS сервисом

Сегодня хочу описать как работать с Feedly через их API в языке Python.

Для начала ссылки, которые точно понадобятся:

     03.01.2016       Выпуск 106 (28.12.2015 - 03.01.2016)       Колонка автора

Полезные библиотеки: freezegun - замораживаем время

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

Вот только такой код оттестировать не всегда просто - иногда надо чтобы now() возвращал конкретное время. Для этого случая есть freezegun:

     25.12.2015       Выпуск 105 (21.12.2015 - 27.12.2015)       Колонка автора

Полезные инструменты: clonedigger - поиск дубликатов кода

Количество кода - это некоторый критерий для ПО. Практика показывает, что чем больше кода - тем сложнее поддерживать и развивать продукт. А если в этом коде много copy-past'ы, то совсем плохо.

Для выявления повторяющихся кусков кода существуют различные инструменты. Один из них CloneDigger. Это старая разработка (еще в 2008 году автор выступал на EuroPython), однако, работает хорошо и на данный момент.

     25.12.2015       Выпуск 105 (21.12.2015 - 27.12.2015)       Колонка автора

Синтаксис Python: all и any

Коротко: all и any - встроенные методы, которые позволяют проверять все элементов списка на выполнение условия.

При валидации данных часто возникает задача проверить структуру на корректность. Например, пускай есть список словарей:

     25.12.2015       Выпуск 105 (21.12.2015 - 27.12.2015)       Колонка автора

Синтаксис Python: __slots__

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

Но что если хочется максимально уменьшить размер объектов (а в python все объекты) и при этом не потерять в функциональности? Для примера возьмем плоскость. На плоскости, пускай, надо разместить миллион точек (что не так много). При этом надо иметь возможность красить точку в разные цвета, расстояния подсчитывать и прочие действия.

     25.12.2015       Выпуск 105 (21.12.2015 - 27.12.2015)       Колонка автора

Практические задачи: Задача #003 - система генерации описаний

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

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

     25.12.2015       Выпуск 105 (21.12.2015 - 27.12.2015)       Колонка автора

Пишем web-проекты: исправляем битый HTML с помощью Tidy

При парсинге возникают совсем странные ошибки - одна из них - не валидный HTML. Т.е. с ошибками. Верстальщик забыл закрыть таблицу или body. Еще бывает что вставляют HTML из Word, а там тааккккооооой код.

Чтобы очистить HTML от мусора можно применять инструмент Tidy.

     25.12.2015       Выпуск 105 (21.12.2015 - 27.12.2015)       Колонка автора

Полезные инструменты: virtualenv + pip

Опыт показывает, что каждый проект обладает своими зависимостями (библиотеками), а если и одинаковыми, то версии не совпадают. Чтобы упростить запуск и настройку проекта разработчики пишутINSTALL.md, README.md, make-файлы и что более важно - requirements.txt.

Файл requirements.txt - это правило хорошего тона для Python проектов. Файл содержит список необходимых библиотек для запуска с указанием версий:

     25.12.2015       Выпуск 105 (21.12.2015 - 27.12.2015)       Колонка автора

Таинство стандартной библиотеки: пути до файлов

Python прикладывает множество усилий чтобы скрыть все различия операционных систем. Если смотреть на файлы, а точнее на пути файлов, то легко можно заметить различия между Linux и Windows:

C:\Program Files (x86)

/home/user/documents

     13.12.2015       Выпуск 103 (07.12.2015 - 13.12.2015)       Колонка автора

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

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

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

     10.12.2015       Выпуск 103 (07.12.2015 - 13.12.2015)       Колонка автора

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

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

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

     10.12.2015       Выпуск 103 (07.12.2015 - 13.12.2015)       Колонка автора

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

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

     09.12.2015       Выпуск 103 (07.12.2015 - 13.12.2015)       Колонка автора

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

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

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

     08.12.2015       Выпуск 103 (07.12.2015 - 13.12.2015)       Колонка автора

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

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

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

     08.12.2015       Выпуск 103 (07.12.2015 - 13.12.2015)       Колонка автора