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

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

     14.01.2016       Выпуск 108 (11.01.2016 - 17.01.2016)       Статьи

Проектирование сложных приложений в Flask

Данная статья, размещенная в репозитории Flask на GitHub, является плодом коллективного творчества небезразличных программистов, а изначальный её автор — Brice Leroy. Она представляет собой достаточно полезный для начинающих материал по Flask. Лично для меня он стал ответом на многие простые вопросы, основным из которых был «как структурировать проект».

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

Описанный пример протестирован на Python 3.5, Flask 0.10, Flask-SQLAlchemy 2.1, Flask-WTF 0.9.

     13.01.2016       Выпуск 108 (11.01.2016 - 17.01.2016)       Статьи

Мой подход к Class Based Views

Когда-то я писал о своей неприязни к Class Based Views (CBV) в Django. Их использование заметно усложняет код и увеличивает его объём, при этом CBV мешают применять некоторые достаточно распространённые шаблоны (скажем, когда две формы представлены в одном view). И судя по всему, я не единственный из разработчиков Django, придерживающийся такой точки зрения.

Но в этом посте я хочу рассказать об ином подходе, который я применил в одном из проектов. Этот подход можно охарактеризовать одной фразой: «Создавайте свой собственный базовый класс». 

     14.01.2016       Выпуск 108 (11.01.2016 - 17.01.2016)       Статьи

CPython для самых маленьких: объекты и их атрибуты

Продолжение обсуждения бекенда CPython - всего того, что стоит за транслятором текста в байткод

     12.01.2016       Выпуск 108 (11.01.2016 - 17.01.2016)       Статьи

Django Single Sign-On и Microsoft Active Directory

Однажды мне пришлось заняться разработкой Web-приложения для корпоративного использования на Python+Django. И самым первым вопросом, который пришлось решать — это прозрачная авторизация на сайте или Single Sign-On (SSO).

Хотя о вопросе реализации SSO для Django написано немало статей, однако для того, чтобы реализовать то, что мне было необходимо, пришлось затратить относительно много времени. Поэтому, чтобы избавить некоторых из вас от возможных долгих поисков информации и ее сборки в работающую схему, предлагаю вам свой мануал, как сделать прозрачную авторизацию в приложении Django с использованием учетных записей Active Directory.

     12.01.2016       Выпуск 108 (11.01.2016 - 17.01.2016)       Статьи

График счастья с python, pandas и matplotlib

Зима — это по истине прекрасное время года. Но именно зимой я всегда задумываюсь о том, что встаю и ухожу на работу, а затем и возвращаюсь с работы, не видя солнечного света. Сегодня мне захотелось визуализировать данные о восходе и заходе солнца и соотнести их со столь привычным для многих распорядком дня (рабочие часы и время бодрствования). Для работы мы будем использовать Python (pandas + matplotlib). Посмотрим, что из этого получилось. 

     12.01.2016       Выпуск 108 (11.01.2016 - 17.01.2016)       Статьи

Стандарты симметричного шифрования стран СНГ на Python

Первые недели нового года самое подходящее время для того, чтобы уютно устроившись у окошка, вспомнить что же нам принес год ушедший. 
А принес он нам два новых стандарта шифрования. Российский стандарт ГОСТ Р 34.12-2015 (блочный шифр Кузнечик). И украинский ДСТУ 7624:2014 (блочный шифр Калина). Холодными, зимними вечерами нельзя упускать такой удачный повод покодить. Под катом краткое описание алгоритмов и их реализация на Python. А чтобы новым шифрам было веселее, разбавим их общество белорусским СТБ 34.101.31-2007.

     11.01.2016       Выпуск 108 (11.01.2016 - 17.01.2016)       Статьи

Рекурентная нейронная сеть в 10 строчек кода оценила отзывы зрителей нового эпизода “Звездных войн”

Hello, Habr! Недавно мы получили от “Известий” заказ на проведение исследования общественного мнения по поводу фильма «Звёздные войны: Пробуждение Силы», премьера которого состоялась 17 декабря. Для этого мы решили провести анализ тональности российского сегмента Twitter по нескольким релевантным хэштегам. Результата от нас ждали всего через 3 дня (и это в самом конце года!), поэтому нам нужен был очень быстрый способ. В интернете мы нашли несколько подобных онлайн-сервисов (среди которых sentiment140 и tweet_viz), но оказалось, что они не работают с русским языком и по каким-то причинам анализируют только маленький процент твитов. Нам помог бы сервис AlchemyAPI, но ограничение в 1000 запросов в сутки нас также не устраивало. Тогда мы решили сделать свой анализатор тональности с блэк-джеком и всем остальным, создав простенькую рекурентную нейронную сеть с памятью. Результаты нашего исследования были использованы в статье “Известий”, опубликованной 3 января.

     11.01.2016       Выпуск 108 (11.01.2016 - 17.01.2016)       Статьи

Использование LSM-движка из SQLite 4 в качестве отдельной NoSQL базы данных с использованием Python

На сегодняшний день две мои самые любимые темы — SQLite и key-value базы данных. И в этот раз я пишу сразу про обе: этот пост посвящён Python-обёртке для используемого в SQLite 4 key-value хранилища на основе LSM.

Разобравшись с исходным кодом SQLite 4 и крохотным заголовочным файлом LSM, я написал python-lsm-db (документация).

     13.01.2016       Выпуск 108 (11.01.2016 - 17.01.2016)       Релизы

Вышел Ansible 2.0

Этот релиз в первую очередь является масштабным рефакторингом, направленным на устранение technical debt, накопившегося за три года бурного роста до 1000 участников. Обещают обратную совместимость на уровне плейбуков, но API плагинов претерпел значительные изменения. Инструкция по портированию прилагается.

     10.01.2016       Выпуск 107 (04.01.2016 - 10.01.2016)       Статьи

Автоматический запуск Libre/OpenOffice в режиме прослушивания из Python

Libre/Open Office предоставляют возможность работы с офисом через UNO API. Для того, чтобы можно было обратиться к офису необходимо запустить его в режиме прослушивания. Например: soffice --accept="socket,host=localhost,port=2002;urp;" Данный подход вполне логичен и понятен с точки зрения разработчиков офиса, но несет ряд неудобств. В частности, нужно самостоятельно запускать Libre/Open Office в режиме прослушивания. Лично мне не понятно, почему разработчики поленились и не предоставили функции запуска офиса. Ну да ладно, было бы все сделано, не нужны были бы программисты. Посему будем решать задачу своими силами. 

     06.01.2016       Выпуск 107 (04.01.2016 - 10.01.2016)       Статьи

Незаметные достоинства регулярных выражений в Python

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

Python — один из немногих динамических языков, в которых отсутствует встроенная поддержка регулярных выражений, но это компенсируется проработанной базовой системой (с точки зрения API). В то же время он весьма причудлив. К примеру, поведение написанного на Python парсера может вас удивить. Если вы попытаетесь в ходе импорта профилировать Python, то, скорее всего, 90% времени вы проведёте в работе с модулем re.

     04.01.2016       Выпуск 107 (04.01.2016 - 10.01.2016)       Статьи

Решение головоломки Галакуб на Питоне

На новый год купил племяннику головоломку Галакуб. Задача собрать из разных деталей куб размером 4х4х4. Суммарный объём деталей, как раз, 4х4х4. Прежде, чем дарить надо было собрать головоломку. Красивое симметричное решение нашлось достаточно быстро. Но стало интересно единственное это решение или нет. Интуиция подсказывала, что единственное, но хотелось проверить.

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

     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:

     30.12.2015       Выпуск 106 (28.12.2015 - 03.01.2016)       Статьи

Numpy и многопроцессорность

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

     28.12.2015       Выпуск 106 (28.12.2015 - 03.01.2016)       Статьи

Kaggle и Titanic — еще одно решение задачи с помощью Python

Хочу поделиться опытом работы с задачей известного конкурса по машинному обучению от Kaggle. Этот конкурс позиционируется как конкурс для начинающих, а у меня как раз не было почти никакого практического опыта в этой области. Я немного знал теорию, но с реальными данными дела почти не имел и с питоном плотно не работал. В итоге, потратив пару предновогодних вечеров, набрал 0.80383 (первая четверть рейтинга). В общем эта статья для еще начинающих от уже начавшего.