Fork me on GitHub

Сентябрь 18–19

PyCon Russia 2015

Рус Eng

Александр Козловский, Алексей Малашкевич, авторы объектно-реляционного маппера Pony ORM.

Разработка одностраничных веб-приложений с использованием PonyORM и ReactJS

ReactJS — современная популярная библиотека для построения Single Page Application. ReactJS позволяет создавать понятную и масштабируемую архитектуру веб-приложений, разбивать страницы на независимые компоненты, а также обеспечивает высокую скорость рендеринга. В то же время, ReactJS не описывает, каким образом должен выглядеть уровень «моделей» паттерна MVC и как должно быть организовано взаимодействие с бэкендом.

PonyORM — это объектно-реляционный маппер на языке Python, который позволяет описать модели сущностей и удобно работать с ними на бэкенде. Теперь, в дополнение к PonyORM, появилась библиотека PonyJS, которая позволяет автоматически генерировать аналогичные модели на фронтенде и работать с ними из языка JavaScript. Теперь вы можете написать запрос с помощью PonyORM, автоматически сериализовать данные в JSON, передать их на фронтенд и работать с ними как с полноценными объектами, а затем передать изменения обратно и сохранить их в базе данных.

В докладе будет рассказано, как можно создать одностраничное приложение на ReactJS, использующее объекты PonyORM/PonyJS в качестве моделей.

Видео и презентация →

Александр Сибиряков, Python-разработчик в Scrapinghub.

Frontera: распределенный робот для обхода интернета в больших объемах

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

Фреймворк предлагает: настраиваемое хранилище URL документов (RDBMS или Key Value), управление стратегиями обхода, абстракцию транспортного уровня, абстракцию модуля загрузки. Помимо описания фреймворка и системных требований, я расскажу о нашем опыте скачивания испанского интернета с помощью Fronter'ы и представлю небольшую статистику.

Видео и презентация →

Сергей Матвеенко, Senior Python Developer компании DataArt.

«Вещи» на Python

Одним из факторов популярности Python является его применение в самых разных областях информационных технологий.

«Internet of Things» («Интернет вещей») — одно из популярнейших и активно развивающихся сейчас направлений ИТ. Ожидаемо, в IoT тоже используется Python. Я немного расскажу о доступных способах снизить порог входа в IoT, расскажу о возможностях протокола «alljoyn», одного из самых популярных протоколов IoT и покажу на примере натоящего устройства, как с помощью DeviceHive D-Bus Framework можно создавать из любых управляемых устройств, которые у вас есть под рукой, устройства, работающие по протоколу «alljoyn».

Видео и презентация →

Александр Швец, компания Marilyn, директор по продукту.

Секреты здорового питания: полезные рецепты с Celery

  • Секретный состав сельдерея или неформальное введение в архитектуру Celery
  • Подбираем ингредиенты на пробу. Как правильно логировать и отлаживать очередей
  • Заботимся о долгом послевкусии. Как обеспечить стабильную работу очередей без простоя и потери задач
  • Готовимся к кулинарному состязанию. Как избежать гонок при выполнении задач
  • Несколько профессиональных рецептов шеф-повара по настройке Celery для больших проектов

Видео и презентация →

Gael Varoquaux, core developer of scikit-learn, joblib, Mayavi and nilearn, a nominated member of the PSF

Building a cutting-edge data processing environment on a budget

As a penniless academic I wanted to do "big data" for science. Open source, Python, and simple patterns were the way forward. Staying on top of todays growing datasets is an arm race. Data analytics machinery —clusters, NOSQL, visualization, Hadoop, machine learning, ...— can spread a team's resources thin. Focusing on simple patterns, lightweight technologies, and a good understanding of the applications gets us most of the way for a fraction of the cost. These patterns appear underline the design of Mayavi, for interactive 3D visualization, scikit-learn, for easy machine learning, and joblib for out-of-core and parallel computing.

I will present a personal perspective on ten years of scientific data processing with Python. What are the emerging patterns in data processing? How can modern data-mining ideas be used without a big engineering team? What constraints and design trade-offs govern software projects like scikit-learn, Mayavi, or joblib? How can we make the most out of distributed hardware with simple framework-less code?

Видео и презентация →

Екатерина Тузова, разработчик PyCharm.

Numpy: векторизация

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

Видео и презентация →

Андрей Солдатенко, Python Backend Developer и QA Automation Lead в Wargaming.NET.

Погружение в полнотекстовый поиск, используя Python

В наши дни мир тонет в текстовой информации. Все эти годы существующие технологии были сфокусированы на хранении и структурировании данных. Но что же делать, если нам необходимо принимать решение в режиме реального времени, используя эти данные? Я с радостью поделюсь накопленным опытом разработки веб-приложений, использующих полнотекстовый поиск, которые написаны на Python с использованием Django-фреймворка, а также расскажу о результатах исследования разных поисковых движков и интеграции веб-приложений с haystack и elasticsearch. Также поговорим о будущем полнотекстового поиска в контексте Django 1.9 и Python.

Видео и презентация →

Антон Патрушев, associate Information Systems Officer в UNFCCC.

Оптимизация: на грани и за

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

  • Жизнь без GC: как и зачем?
  • Выжмем ещё немного, не переписывая весь код: модификация AST при импорте;
  • Декораторы и байткод: пару процентов почти за просто так.

Видео и презентация →

Иван Савин, IPONWEB.

Как сделать логирование приятным в быстро развивающемся проекте

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

В докладе будут освещены следующие вопросы: - Каких ошибок можно избежать при проектировании логирования: способы конфигурации, антипаттерны; - Как не переписывать все вызовы записи в лог при изменении логики логирования (собственные адаптеры и фильтры); - Динамический контекст в логировании: как добавить в нужные записи только то, что хотелось бы потом увидеть; - Реальный и простой пример перехода к современному логированию и анализу логов: Logstash - ElasticSearch - Kibana.

Видео и презентация →

Benjamin Peterson, Developer of CPython. He also wrote the six Python 2/3 compatibility library and has contributed to numerous projects in the Python ecosystem including PyPy and py.tes.

Python Packaging Progress

Python packaging is infamous for being brittle and hard to use. Thankfully, a lot of progress has been made in recent years. This talk will explain some of the components and tools in modern Python packaging including pip, PyPI, virtualenv, and wheels.

I'd say the talk is for an intermediate to advanced audience. Ideally, attendees will leave with a clearer idea of how Python packaging works as well as an sense of optimism. :)

Видео и презентация →

Павел Петлинский, ведущий инженер-разработчик Python в Rambler&Co.

Making of external DSL for Django ORM

Рассказ пойдет о том, как мы реализовали в Django механизм такой же, как Advanced Searching в JIRA, о внутреннем устройстве подобных решений (написание DSL, разбор грамматик и т.п.), зачем и как мы их применяем на нашем проекте.

Видео и презентация →

Кирилл Борисов, разработчик в Яндексе.

Автоматизированные рефакторинги: AST, FST и все-все-все

Одна из самых неприятных вещей в работе программиста — рутина. К сожалению, её не избежать — работы по поддержке существующего кода заставляют нас вносить одинаковые изменения в несколько файлов разом. По мере роста проекта эта задача вырастает до десятков правок в сотнях файлов, заставляя даже самого терпеливого программиста задуматься о смысли бытия. Но что делать? Автоматизируйте это! В этом докладе мы расскажем о разных способах работать с исходным кодом из Python, и почему это весело. В докладе: - Всякую рутинную работу можно превратить в интересную задачу по автоматизации рутины; - В «батарейках» Python можно найти достаточно средств для самостоятельного анализа исходного кода; - Топорный подход с «find/replace» часто не подходит из-за необходимости учитывать контекст каждой конкретной правки, равно как и сохранять по возможности оформление исходного файла; - Регулярные выражения не подходят для разбора исходного кода на сложных языках программирования; - Любая достаточно продвинутая программа неотличима от магии.

Видео и презентация →

Дмитрий Вахрушев, web-разработчик, питонист, линуксоид.

Архитектура RESTful API на Pyramid — приемы проектирования

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

  • общей архитектуры Pyramid приложения;
  • проектирования слоя бизнес-логики в виде иерархии ресурсов;
  • использования траверсал-роутинга;
  • обработки ошибок;
  • управления правами доступа с использованием встроенного ACL;
  • тестирования;
  • интеграции с другими частями проекта.

Видео и презентация →

Андрей Светлов, Python Core Developer, инженер в DataRobot.

Aiohttp

Aiohttp — самая популярная asyncio-совместимая библиотека на сегодняшний день. В докладе мы рассмотрим: Web-клиент. Примитивный запрос. Использование авторизации и сессий. Web-сервер. Примитивный пример. Сложные routes. Web-sockets. Клиент и сервер. Обработка параллельных задач (asyncio.wait) Тестирование. Явный loop Базы данных. Redis, Postgres, Mongo. Сессии. Авторизация и права доступа. Debugtoolbar. * PEP 492

Доклад рассчитан на разработчиков, которые хотят попробовать asyncio подход, но не знают, с чего начать :)

Видео и презентация →

Андрей Власовских, Разработчик PyCharm и эмулятора Vim для сред программирования в JetBrains. Автор библиотеки funcparserlib для написания парсеров на Python в функциональном стиле.

Чем аннотации типов могут быть полезны для вас

PEP 484 вводит аннотации типов для Python 3. Аннотации типов могут улучшить читаемость кода как для людей, так и для инструментов анализа кода. Они делают код лучше и безопаснее. В этом докладе мы обсудим, почему это так.

Мы кратко рассмотрим, что такое аннотации типов и перейдём к практическим примерам того, где они могут быть полезны и что они дают. Далее мы обсудим ряд полезных советов по написанию и использованию аннотаций. Мы увидим, что в большинстве случаев простых аннотаций типов на основе классов и встроенных коллекций вполне достаточно для публичных API наших библиотек. Мы также обсудим, что могут дать аннотации типов для сторонних библиотек.

Видео и презентация →

Александр Щепановский, автор библиотек funcy, cacheops.

Никогда больше так не делай

Чтобы поддерживать свои стандарты как стиля кодирования, так и его семантики, мы часто используем линтеры. Однако, добавлять свои правила в них достаточно сложно. Поэтому в большинстве команд средства никак или почти никак не подстраиваются ни под конкретный проект, ни под команду в целом.
Ревью кода позволяет частично закрыть этот недостаток, однако, иногда хочется просто ткнуть пальцем и сказать «никогда больше так не делай». Я расскажу о своём проекте-исследовании того, как сделать автоматизацию таких ситуаций простой, а поэтому гибкой и практичной.

Видео и презентация →

Илья Беда, тимлидер bro.agency.

View как чистая функция от состояния базы данных

В большинстве WEB приложений мы так или иначе взаимодействуем с базой данных. Она хранит в себе информацию, а мы, как программисты, пишем код, преобразующий эти данные в html странички или API интерфейсы. И так как единой точкой правды является база данных, то и кэшировать WEB приложения нужно, основываясь на её состоянии. В своем докладе я расскажу про методы кэширования, основанные на ORM. О том, как можно кэшировать запросы к базе данных и функции, зависящие от них. И самое главное, о том, как такой кэш корректно инвалидировать.

Видео и презентация →

Константин Игнатов, программист в отделе исследований Qrator Labs.

Превращаем свалку проектов в экосистему при помощи setuptools

В докладе мы рассмотрим создание файлов setup.py и setup.cfg.

  • Используем edit-mode при установке пакетов
  • Простой setup.py для простого проекта
  • Устанавливаем дополнительные файлы
  • Строим расширения
  • Делаем сложные зависимости
  • Добавляем консольные скрипты
  • Включаем поддержку плагинов

Будет полезно всем, кто: разрабатывает >1 взаимодействующих друг с другом проектов, копирует в каждый новый проект папку с любимыми функциями, устанавливает проекты при помощи git clone, copy, rsync и тп, не пишет расширения из-за сложности развёртывания, пишет консольные скрипты при помощи def main()... if name == 'main'..., избегает пакетирования, потому что проекты слишком зависят друг от друга (изменения в одном приводят к изменениям везде).

Видео и презентация →

Григорий Петров, технический евангелист в VoxImplant.

50 оттенков кеширования: обзор актуальных батареек

Кеширование так же многообразно, как и варианты использования python. Создавая веб приложение на Django или программируя логику онлайн игры в embedded python, разработчик использует множество стратегий для ускорения работы своего кода. В обзорном докладе Григорий расскажет о современных подходах к кешированию в разных областях разработки на python, обрисует текущее состояние экосистемы и поделится интересными кейсами из практики.

Видео и презентация →

Валентин Синицын, разработчик сервиса Яндекс.Такси

Python: управление памятью

Программистам на Python не нужно задумываться об управлении памятью — за них все делает интерпретатор. Как правило, это все, что необходимо знать об управлении памятью в Python. Порой подобный «минимализм» приводит к неожиданным последствиям. Память начинает «течь», и понять, кто в этом виноват, оказывается непросто. В этом докладе мы сделаем обзор подсистемы управления памятью в самой популярной реализации Python — CPython. Будут рассмотрены процедуры выделения памяти и сборки мусора, способы взаимодействия с ними из Python-кода, а также типовые ошибки, которые могут помешать их нормальной работе. Мы также продемонстрируем серию простых экспериментов, доказывающих, что работа с памятью в Python действительно происходит именно так, а не иначе.

Видео и презентация →

Виталий Глибин, сооснователь сервиса для ведения вакансий Huntflow, руководитель frontend разработки в Программе ГлавБух.

Изоморфные приложения и Python

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

Как было раньше? Человек нажимает на фильтр, страница перезагружается с новым отфильтрованным списком товаров. Это было очень медленно, и появился AJAX, разработчики стали при изменении фильтра загружать с сервера только кусочек html с отфильтрованными товарами. Но и этого показалось мало, теперь с сервера мы получаем JSON, а на клиенте производим отрисовку нового списка товаров.

Что получаем в итоге? Есть некий шаблон, который отрисовывает список товаров на сервере, и есть шаблон, который делает это же на клиенте. Соответственно, разработчику часто необходимо поддерживать два шаблона, что может приводить к ошибкам при изменениях. Зато у клиента все быстро :)

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

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

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

Видео и презентация →