PyCon Russia 2016
В начале июля состоялась двухдневная конференция Pycon Russia 2016 в подмосковье. До этого 3 года подряд конференция проходила в Екб.
Мне очень понравилась как организация конфы, место проведения, так и сами доклады. Как начинающего питониста, меня порадовало разнообразие тем докладов: ядро CPython, тестирование, инфраструктура, machine learning, highload.
UPD: а вот и доклады https://www.youtube.com/watch?v=sEciSlAClL8&index=1&list=PLRdS-n5seLRqszBqVDF342RMlCWgOTm6q
Краткий конспект самых интересных докладов:
Thinking about Concurrency
Two first things to learn about multithreading are fear and respect.
Доклад от разработчика языка python Raymond Hettinger’а про многопоточность. В нём сравниваются потоки и процессы (threads versus processes).
У потоков есть общий state, что является и плюсом и минусом одновременно — возникает проблема разграничения доступа потоков к общим данным. Для этого могут использоваться блокировки (locks) и флаги. Но они порождают deadlock’и и race conditions.
У процессов нет общих данных, они запускаются независимо.
from multiprocessing import Pool n = 10 pool = Pool(processes=n) results = pool.map(complex_operation, [x for x in range(n)])
Theano
Екатерина Тузова из Jetbrains рассказывала про применение фреймворка нейронных сетей Theano как переводчик с языка математики в программирование. Постановка задачи такая, что к программистам приходят математики с моделью, которую просят запрограммировать. Тут на помощь приходит Theano, с помощью которого можно вычислять математические выражения, содержащие многомерные массивы. Презентация — https://speakerdeck.com/ktisha/theano-lets-build-a-net
Tensorflow and deep learning
Самый интересный доклад + воркшоп про создание нейросети на TensorFlow от Martin Gorner из Google. Про это отдельный пост — https://keen.nerevar.com/all/tensorflow-and-deep-learning-from-pycon-2016/
Docker:
От евангелиста докера был обзорный доклад технологии с примерами образа, настройками и конфигами. Как собрать образ с нуля по шагам, как разворачивать, куда его выкладывать. Как известно, любая команда в докере создаёт новый слой, который отдельно кешируется, скачивается, применяется, поэтому имеет смысл объединить похожие по смыслу действия в один слой. Так получаются всего несколько слоём: 1) установка python, окружения 2) установка проектных зависимостей 3) непосредственно запуск проекта.
Презентация — https://speakerdeck.com/satyrius/deliver-python-apps-with-docker, демо — https://github.com/satyrius/paid
Neo4j graph db
Программист-олимпиадник, который очень любит графы, рассказывал про промышленное использование баз данных для хранения графов. Например на тематике фильмов и актёров он получал все фильмы, в которых снимался определённый актёр (рёбра графа) или в социальной сети с разными типами дружбы — по пользователю выборку друзей, друзей друзей, друзей друзей друзей и т.д до 6 уровней рукопожатий. Так вот для простых запросов, где нужно выбрать друзей друзей, MySQL показывает хорошие результаты. Но с увеличением уровня сложности, количества join’ов, время выполнения запросов в мускуле растёт экспоненциально. И тут на помощь приходят graph databases, предназначенные для хранения графов и работы с ними. В таких db найти друзей друзей друзей — это всего лишь найти рёбра к соседним вершинам и выполняется за линейное время. Докладчик сравнил несколько баз данных и выбрал Neo4j, к ней надстройку Cypher Query Language с SQL-подобным синтаксисом и py2neo коннектором для питона.
Презентация — https://asoldatenko.com/pyconru2016.pdf
Знай и люби свой CPython
Доклад от разработчика из компании хакеров Positive Technologies про то, как устроен интерпретатор Питона и что можно сделать в его кишках. Как в C и ASM’е можно было работать с памятью напрямую, так и в докладе показаны примеры как менять значения переменных в памяти напрямую. В python, как известно, строки неизменяемы, а если писать напрямую в память — то на основе этого можно сделать класс MutableString. Значения любых переменных, свойства встроенных типов данных, действия операндов — всё можно менять. Для изучения как оно работает, поиграться — это интересно и познавательно. Только в production не рекомендуется использовать.
Презентация — https://clck.ru/9zuvF
User-centered open source projects
Доклад на английском от Jackie Kazil из Capital One про разработку и окружение open-source проекта.
Разных библиотек на гитхабе много, а хороших — нет. Jackie привела чеклист вещей, которые должны быть в любом хорошем проекте:
- Landing page
- «Getting Started»
- Install instructions (в идеале чтобы была одна строчка npm install или pip install)
- Contribution guide
- Responses < 24hrs
- Clear git workflow
- Labeled branches
- License
- Regular commits
- Project status, ownership
- Tests, test coverage and build result
- «Other users»
Презентация — http://www.slideshare.net/jackiekazil/usercentered-open-source