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

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

     17.03.2016       Выпуск 117 (14.03.2016 - 20.03.2016)       Статьи

Модули расширения Python на Rust

“Absolute statements are the root of all evil.
The key is balance. There are no answers, only questions.”
????


Когда говорят про оптимизацию в контектсте программного обеспечения, то при этом часто подразумевают оптимизацию производительности программиста и/или оптимизацию самого программного обеспечения.

Исходя из YAGNI принципа, Python позволяет программисту сосредоточиться на реализации ПО, избавив его от необходимости заботиться о низкоуровневых вещах таких как регионых памяти, в которых выделяются объекты, об её освобождении или о соглашениях о вызовах. 

На обратную проблему в одной из его лекций о Haskell указал Саймон Джонс. У него был слайд, на котором была нарисована стрелка, закрашенная градиентом: в начале было написано “no types”, посередине — “Haskell”, в конце — “Coq”. При этом, когда он указал на Coq, он сказал такую фразу: “This stresses power over usability. Right?! You need a PhD here!”[1]. Несмотря на то, что это была шутка, мантара Python – одна из любимых программистами особенностей этого языка. И из моего опыта, это то, что позволяет выпускать готовый продукт несколько быстрее.

     17.03.2016       Выпуск 117 (14.03.2016 - 20.03.2016)       Статьи

Что есть в Visual Studio 2015 для разработчика на Python

С версией Visual Studio 2015 Community компания Microsoft впервые предложила разработчикам совершенно бесплатно пользоваться полнофункциональной версией своего мощного инструмента для разработки. Напомню, что функционал Visual Studio 2015 Community почти полностью предоставляет функционал версии Professional, но имеет некоторые лицензионные ограничения по использованию в коммерческой разработке.

Visual Studio 2015 Community так же, как и остальные версии инструмента, расширяема, благодаря Visual Studio Marketplace и всем официальным обновлениям инструмента. То есть огромное, постоянно увеличивающееся количество функционала доступно разработчикам совершенно бесплатно. Это касается и инструментов для разработки на языке Python.

Поддержка Python станет доступна, если отметить соответствующий пункт при установке среды. Это касается и CPython, PyPy, IronPython, поддержки IntelliSense, интерактивной отладки, интеграции и других возможностей Visual Studio для Python

     17.03.2016       Выпуск 117 (14.03.2016 - 20.03.2016)       Статьи

Линейные модели: простая регрессия

В прошлый раз мы подробно рассмотрели многообразие линейных моделей. Теперь перейдем от теории к практике и построим самую простую, но все же полезную модель, которую вы легко сможете адаптировать к своим задачам. Модель будет проиллюстрирована кодом на R и Python, причем сразу в трех ароматах: scikit-learn, statsmodels и Patsy.

     14.03.2016       Выпуск 117 (14.03.2016 - 20.03.2016)       Статьи

Pandasql vs Pandas для решения задач анализа данных

В этой статье я бы хотела рассказать о применении python-библиотеки Pandasql. 

Многие люди, сталкивающиеся с задачами анализа данных, уже, скорее всего, знакомы с библиотекой Pandas. Pandas позволяет быстро и удобно работать с табличными данными: фильтровать, группировать, делать join над данными; строить сводные таблицы и даже рисовать графики (для простых визуализации достаточно функции plot(), а если хочется чего-то позаковыристее, то поможет библиотека matplotlib). На Хабре не раз рассказывали о применении этой библиотеки для работы с данными: раз, два, три.

Но по моему опыту далеко не все знают о библиотеке Pandasql, которая позволяет работать с Pandas DataFrames как с таблицами и обращаться к ним, используя язык SQL. В некоторых задачах проще выразить желаемое с помощью декларативного языка SQL, поэтому я считаю, что людям, работающим с данными, полезно знать о наличии такой функциональности. Если говорить о реальных задачах, то я использовала эту библиотеку для решения задачи join'a таблиц по нечетким условиям (необходимо было объединить записи о событиях из разных систем по примерно совпадающему времени, разрыв порядка 5 секунд).

Рассмотрим использование этой библиотеки на конкретных примерах.

     09.03.2016       Выпуск 116 (07.03.2016 - 13.03.2016)       Статьи

Как можно упростить себе жизнь с помощью Telegram-бота

Эта статья — краткий рассказ о том, как с помощью подручных средств (Firefox) и Python можно осуществить успешную интеграцию Telegram-бота и внешнего сервиса.

Материал будет интересен тем, кто наслышан о Telegram'ных ботах, но не знает, как к ним подступиться и какие задачи с их помощью можно решать. Предполагается знание Python.

     03.03.2016       Выпуск 115 (29.02.2016 - 06.03.2016)       Статьи

Pomp — метафреймворк для парсинга сайтов

С поддержкой asyncio и вдохновленный Scrapy.

Зачем еще один?
В первую очередь как инструмент для сбора данных, применяемый в моем хобби проекте, который не давил бы своей мощью, сложностью и наследием. И да, кто же будет сознательно начинать что-то новое на python2.x?

В итоге появилось идея сделать простой фреймворк для современной экосистемы python3.x, но такой же элегантный как Scrapy.

     28.02.2016       Выпуск 114 (22.02.2016 - 28.02.2016)       Статьи

Как я переизобрел словари в Python

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

     26.02.2016       Выпуск 114 (22.02.2016 - 28.02.2016)       Статьи

Web файловый менеджер Sprut.IO в OpenSource

В Бегете мы долго и успешно занимаемся виртуальным хостингом, используем много OpenSource-решений, и теперь настало время поделиться с сообществом нашей разработкой: файловым менеджером Sprut.IO, который мы разрабатывали для наших пользователей и который используется у нас в панели управления. Приглашаем всех желающих присоединиться к его разработке. О том, как он разрабатывался и почему нас не устроили существующие аналоги, какие костыли технологии мы использовали и кому он может пригодиться, расскажем в этой статье. 

Сайт проекта:https://sprut.io
Демо доступно по ссылке: https://demo.sprut.io:9443
Исходный код: https://github.com/LTD-Beget/sprutio

     26.02.2016       Выпуск 114 (22.02.2016 - 28.02.2016)       Статьи

Хуки — это просто (часть 3)

Как-то так получилось, что я написал на Хабре уже несколько статей о библиотеках для хуков. Первая была об общих принципах и реализации на базе Detours, вторая — о более дешевой (но не менее функциональной) библиотеке madCodeHook. Сегодня я расскажу об ещё одном варианте — библиотеке Deviare от компании Nektra. «Ещё одна точно такая же библиотека для хуков?» — спросите вы. «Такая же, да не такая» — отвечу я. У Deviare есть несколько особенностей, отличающих её и от Detours и от madCodeHook и делающей её в некоторых случаях намного более полезной.

     25.02.2016       Выпуск 114 (22.02.2016 - 28.02.2016)       Статьи

Собственный модуль settings

Этот модуль родился в результате переосмысления (или недопонимания) мной вот этого пространного документа: Splitting up the settings file, размещённого на официальном сайте Django.

     25.02.2016       Выпуск 114 (22.02.2016 - 28.02.2016)       Статьи

Фоновое выполнение ячеек в IPython Notebook

Я много работаю с данными, поэтому практически все процессы у меня завязаны на Jupyter (IPython Notebook). Эта среда прекрасна и я её большой фанат. По сути, Jupyter — это обычная питоновая консоль и весь код там выполняется последовательно. Но иногда возникает желание запустить вычисления в ячейке и, не дожидаясь пока они закончатся, продолжить работу. Например, нужно скачать 1000 урлов и достать у них заголовки страниц. Хорошо бы запустить процесс скачивания и сразу начать отлаживать код для выделения заголовков.

     21.02.2016       Выпуск 113 (15.02.2016 - 21.02.2016)       Статьи

Пишем shell скрипты на Python и можно ли заменить им Bash

В этой небольшой статье речь пойдет о том, можно ли легко использовать Python для написания скриптов вместо Bash/Sh. Первый вопрос, который возникнет у читателя, пожалуй, а почему, собственно, не использовать Bash/Sh, которые специально были для этого созданы? Созданы они были достаточно давно и, на мой взгляд, имеют достаточно специфичный синтаксис, не сильно похожий на остальные языки, который достаточно сложно запомнить, если вы не администратор 50+ левела. Помните, ли вы навскидку как написать на нем простой if?

     21.02.2016       Выпуск 113 (15.02.2016 - 21.02.2016)       Статьи

Установка Django-проекта на VPS (centOS 7) [Для новичков]

Хочу поделиться практическим опытом по установке готового проекта на Django на VPS от Reg.ru. Данное руководство рассчитано на новичков, оно содержит ряд не самых лучших решений, но с ним вы сможете запустить своей проект на Django в течение часа.

Инструкция не содержит настроек безопасности. Она была создана на базе англоязычных инструкций и боли, много боли (ссылки в конце статьи). Инструкция актуальна для настроек: centOS 7, Django 1.9.2 и Python 3.4.3

     17.02.2016       Выпуск 113 (15.02.2016 - 21.02.2016)       Статьи

Реверс протокола СКУД RS485 от Perco. Берегите линии своих СКУД от вторжения

Участвуя последнее время в разных интересных проектах, возникла задачка альтернативного управления продуктом Perco Электронная проходная KT02.3. Данный продукт является законченным решением и не подразумевает использование в составе других систем СКУД, а также какого-либо вторжения в свою среду управления. Но, как говорится в поговорке, «Возможно все! На невозможное просто требуется больше времени» (С) Дэн Браун.

     17.02.2016       Выпуск 113 (15.02.2016 - 21.02.2016)       Статьи

Глубокое обучение в гараже — Возвращение смайлов

Фух, ну наконец, детекция лиц работает, можно учить сеть распознавания смайла. Только вот на чем учить? Открытых наборов данных нет. А из того, как долго в предыдущей части я добирался до, собственно, обучения моделей вы уже должны были понять, что в глубоком обучении данные решают все. И их нужно много.

     16.02.2016       Выпуск 113 (15.02.2016 - 21.02.2016)       Статьи

Глубокое обучение в гараже — Две сети

Это вторая статья из серии про определение смайла по выражению лица. Глубокое обучение в гараже — Братство данных Глубокое обучение в гараже — Две сети Калибрация Итак, с классификатором, разобрались, но вы наверняка уже заметили, что заоблачные 99% как-то не очень впечатляюще выглядят во время боевого теста на детекцию. Вот и я заметил. Дополнительно видно, что в последних двух примерах очень мелкий шаг движения окон, так в жизни работать не будет. В настоящем, реальном запуске шаг ожидается больше похожим на картинку для первой сети, а там хорошо видно неприятный факт: как бы хорошо сеть не искала лица, окна будут плохо выровнены к лицам. И уменьшение шага — явно не подходящее решение этой проблемы для продакшена. Как быть?

     15.02.2016       Выпуск 113 (15.02.2016 - 21.02.2016)       Статьи

Глубокое обучение в гараже — Братство данных

Продуктово все более или менее понятно: я хочу отправлять смайлы не выбирая их из списка, а, изображая их на лице. Итого, я хочу корчить рожу, фотографироваться, и система, в идеале, за меня должна понять, какой смайл я изображаю и вписать его в сообщение.Сразу разочарую: до прототипа в виде плагина к скайпу, вотсапу или хэнгауту так и не дошло (пока?), не хватает времени, доделал я только систему из сетей.

     10.02.2016       Выпуск 112 (08.02.2016 - 14.02.2016)       Статьи

Celery: начинаем правильно

Заметка с советами по работе с Celery в production.

     09.02.2016       Выпуск 112 (08.02.2016 - 14.02.2016)       Статьи

Сравниваем цены в книжных интернет магазинах c помощью python, pandas и matplotlib

Сегодня мы попробуем найти самый дешевый и самый дорогой интернет магазин книг.
Сравнивать будем бумажные книги, которые есть в наличии. В разных магазинах очень разное количество книг. Где-то менее 1000, а где-то более 200 000 книг. 

     08.02.2016       Выпуск 112 (08.02.2016 - 14.02.2016)       Статьи

Полноценный REST API для перфекционистов за 5 минут

Речь пойдёт об инструменте, который позволит вам построить полноценный и простой в использовании REST API за минимальное количество времени. Называется он – Python Eve.

К сожалению в Интернете очень много инструкций на эту тему, но все они вводят в заблуждение. Начинающие разработчики, начитавшись подобных статей, думают, что REST API это GET/POST/PUT/DELETE. Заказчики думают, что это дело пары часов. А когда они встречаются вместе, происходят магия в виде Express.js/Mongoose/Passport и ещё кучи хлама, который течёт и временами блокирует event-loop. Всё это запускается с помощью какого-нибудь supervisor, потому что иногда падает и надо как-то перезапускать.