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

Собрали в одном месте самые важные ссылки
и сделали Тренажер IT-инцидентов для DevOps/SRE

     16.12.2015       Выпуск 104 (14.12.2015 - 20.12.2015)       Статьи

Django. Знакомство с ElasticSearch

Понадобилось на одном из своих проектов установить FTS сервис. Я достаточно долгое время пользовался SphinxSearch, но решил поинтересоваться у общественности (тут итут) какой сейчас инструмент более популярен и отвечает следующим требованиям:

     16.12.2015       Выпуск 104 (14.12.2015 - 20.12.2015)       Статьи

Selenium для Python. Глава 6. Объекты Страницы

Продолжение перевода неофициальной документации Selenium для Python.
Оригинал можно найти здесь.

     16.12.2015       Выпуск 104 (14.12.2015 - 20.12.2015)       Статьи

Парсинг формул в 50 строк на Python

Вдохновение — задача с собеседования Яндекса и статья «Парсинг формул в 40 строк». Моей целью было посмотреть, как будет выглядеть «pythonic» решение этой задачи. Хотелось, чтобы решение было простым, код читаемым и разделённым. В итоге ещё получился и пример применения цепочки генераторов (generators pipeline). 

     16.12.2015       Выпуск 104 (14.12.2015 - 20.12.2015)       Статьи

Изучаем граф-ориентированную СУБД Neo4j на примере лексической базы Wordnet

СУБД Neo4j — это NoSQL база данных, ориентированная на хранение графов. Изюминкой продукта является декларативный язык запросов Cypher.

Cypher позаимствовал ключевые слова типа WHERE, ORDER BY из SQL; синтаксис из таких разных языков как Python, Haskell, SPARQL; и в результате появился язык, позволяющий делать запросы к графам в визуальной форме наподобие ASCII art. Например, заголовок данной статьи я бы представил в виде графа (Neo4j) — [изучаем] -> (Wordnet). И это почти готовый запрос к базе данных!

     16.12.2015       Выпуск 104 (14.12.2015 - 20.12.2015)       Статьи

Как сделать Python таким же быстрым, как Julia

Статья рассказывает об оптимизации Python кода на примере задач-число дробилок. Применяются Numpy, Numbu, Cython

     15.12.2015       Выпуск 104 (14.12.2015 - 20.12.2015)       Статьи

Проверка теории шести рукопожатий

Формулировка задачи: визуализировать все связи между двумя пользователями внутри одной социальной сети. При этом связи не должны дублироваться, например если Ваня знает Петю через Олю, то Оля в дальнейших итерациях по поиску общих друзей не участвует. Чтобы попрактиковаться в API, я выбрал “Вконтакте”.

     15.12.2015       Выпуск 104 (14.12.2015 - 20.12.2015)       Статьи

PyLOO — Библиотека для генерации отчетов, счетов Libre/Open Office на Python

 

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

Проекты, в которых возникала данная задача:
 

  • складской учет
  • учет объектов недвижимости
  • документооборот

     14.12.2015       Выпуск 104 (14.12.2015 - 20.12.2015)       Статьи

Selenium для Python. Глава 5. Ожидания

В наши дни большинство веб-приложений используют AJAX технологии. Когда страница загружена в браузере, элементы на этой странице могут подгружаться с различными временными интервалами. Это затрудняет поиск элементов, если элемент не присутствует в DOM, возникает исключение ElementNotVisibleException. Используя ожидания, мы можем решить эту проблему. Ожидание дает некий временной интервал между произведенными действиями — поиске элемента или любой другой операции с элементом.

Selenium WebDriver предоставляет два типа ожиданий — неявное (implicit) и явное (explicit). Явное ожидание заставляет WebDriver ожидать возникновение определенного условия до произведения действий. Неявное ожидание заставляет WebDriver опрашивать DOM определенное количество времени, когда пытается найти элемент.

     14.12.2015       Выпуск 104 (14.12.2015 - 20.12.2015)       Статьи

Внутреннее устройство Python list

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

Эта статья описывает реализацию объекта списка в CPython, наиболее популярной реализации Python. Списки в Python — это мощный инструмент, и интересно узнать, как они устроены внутри. Взгляните на простой скрипт, который добавляет несколько целых значений в список и выводит их:

     14.12.2015       Выпуск 104 (14.12.2015 - 20.12.2015)       Статьи

Как я отлаживал python httplib и httplib2

Понадобилось мне однажды у себя в проекте реализовать работу с файловым хранилищем с использованием HTTP REST API. Проект разрабатывается на python, к тому же уже был реализован http-клиент с использованием библиотеки httplib2, поэтому было решено расширить функциональность http-клиента и работать с файловым хранилищем через туже библиотеку. Проблема возникла при загрузке файлов на сервер. Первый PUT запрос выполняется, далее все последующие запросы отказываются выполняться — 500Internal Server Error.

     13.12.2015       Выпуск 103 (07.12.2015 - 13.12.2015)       Статьи

Визуализация ASTs для лучшего понимания Python

Автор статьи берет небольшой пример: 

# Python code
def main():
    name = "Python"
    print("{0} is great".format(name))

и рассматривает как ээтот код выглядит при исполнении

     13.12.2015       Выпуск 103 (07.12.2015 - 13.12.2015)       Статьи

Временные зоны в Pytz и Django

Проблемы с временными зонами возникают неожиданно. И вылезают наружу при использовании ПО. Статья описывает применение канонического модуля временных поясов Pytz в вашем ПО

     13.12.2015       Выпуск 103 (07.12.2015 - 13.12.2015)       Статьи

Программируем GUI Python

Эта предназначена для тех разработчиков, кто уже знаком с Python, но не знаком с GUI программированием. У меня две цели. Показать примеры и продемонстрировать, что создание GUI не так бессмысленно. А вторая - предоставить готовых набор виджетов под разное применение.

     13.12.2015       Выпуск 103 (07.12.2015 - 13.12.2015)       Статьи

Улучшаем Excel таблицы с помощью Python

Статья описывает применение Python для создания более мощных и удобных excel таблиц. Рассказывается о применении VBA, pandas

     13.12.2015       Выпуск 103 (07.12.2015 - 13.12.2015)       Статьи

Local Binary Patterns на Python & OpenCV

Этот пост покажет вам, как использовать оператор Local Binary Patterns, чтобы автоматически классифицировать и идентифицировать текстуры и структуры в образах

     10.12.2015       Выпуск 103 (07.12.2015 - 13.12.2015)       Статьи

Введение в Chainer: Нейронные сети на Python

Статья описывает библиотеку Chainer

     10.12.2015       Выпуск 103 (07.12.2015 - 13.12.2015)       Статьи

Поднимаем сложный проект на Django с использованием Docker

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

Исходные данные у нас такие: начинается разработка проекта, в которой планируется «тонкий бэкенд». Т.е. бэк у нас состоит из закешированных страниц (рендерятся любым шаблонизатором), объёмных моделей с сопутствующей логикой (ORM) и REST API, выполняющего роль контроллера. Фактически, View в такой системе редуцировано и вынесено в JS, благо есть разные реакты, ангуляры и прочие вещи, которые позволяют фронтендщикам считать себя «белыми людьми».

     09.12.2015       Выпуск 103 (07.12.2015 - 13.12.2015)       Статьи

Простой метапоисковый алгоритм на Python

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

В данной статье речь пойдет не о решении задачи классификации конкретно, а о попытке автоматизировать наиболее скучный этап разработки рубрикатора — создание обучающей выборки.

     08.12.2015       Выпуск 103 (07.12.2015 - 13.12.2015)       Статьи

Нейросеть на Python, часть 2: градиентный спуск

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

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