Собрали в одном месте самые важные ссылки
консультируем про IT, Python
В мире Python за первую половину 2017 года произошло множество интересных событий: перенос репозитория проекта на github, интервью с Гвидо на подкасте “Talk Python”, выход новой версии Django и еще много всего. Краткую выжимку вы сможете послушать в нашем традиционном (второй раз — это уже традиция!) докладе на этом Moscow Python Meetup. Будьте в курсе всего нового!
Словари в Питоне удивительно хороши. На протяжении многих лет различные идеи дополняли друг друга, чтобы образовать современную реализацию в Питоне 3.6.
Этот рассказ в картинках и коде объяснит ключевые идеи и их развитие в течении времени, затронет темы разделяемых ключей, компактности и версионирования.
Различные оптимизации сделали Python 3.6 быстрее Python 3.5. Давайте разберём, что и как было сделано.
Python 3.6 превосходит любую другу версию во многих тестах производительности. Мы познакомимся с результатами тестов на Python 2.7, 3.5 и 3.6.
Формат байткода и инструкции вызова функций были изменены для ускорения его исполнения. Новое соглашение «быстрого вызова» для C было добавлено, чтобы избежать создания временных кортежей и словарей. Метод разбора аргументов был оптимизирован с использованием внутреннего кеша. Операции над байтами, а также кодировками типа UTF-8 были оптимизированы благодаря новому API для создания байтовых объектов. Некоторые части asyncio были переписаны на C, чтобы получить до 25% ускорения. Функция PyMem_Malloc() теперь использует быстрый распределитель pymalloc, также предлагая небольшое увеличение скорости.
MicroPython — самая микроскопическая полная реализация Python. Данная разновидность Питона, разработанная для микроконтроллеров, занимает менее 300 Кб памяти, сохраняя при этом наиболее популярные особенности языка. Так что же нужно для создания самого маленького Питона? Или даже: почему CPython потребляет много памяти? В ходе выступления, с упором на аспекты использования памяти, будут рассмотрены детали внутренней реализации MicroPython и сопоставлены с CPython. Мы рассмотрим разные объектные модели Питонов, мы затронем тему различий в конструкциях используемых ими компиляторов байткода и интерпретаторов.MicroPython — самая микроскопическая полная реализация Python. Данная разновидность Питона, разработанная для микроконтроллеров, занимает менее 300 Кб памяти, сохраняя при этом наиболее популярные особенности языка.
Так что же нужно для создания самого маленького Питона? Или даже: почему CPython потребляет много памяти?
В ходе выступления, с упором на аспекты использования памяти, будут рассмотрены детали внутренней реализации MicroPython и сопоставлены с CPython. Мы рассмотрим разные объектные модели Питонов, мы затронем тему различий в конструкциях используемых ими компиляторов байткода и интерпретаторов.
Python хороший язык для бэкэнда. Но почему его нельзя применить и на frontend? Или можно? Я покажу как на практике можно писать Python код и на frontend (с Rapydscript) и на бэкэнд (Web.py).
Жизнь тестировщика насыщена экспериментами и рутиной. Чем больше рутины и меньше экспериментов, тем тестировщик сильнее грустит. Как разработчики ПО мы можем сделать тестировщика счастливым — написать софт, который автоматизирует рутину. В докладе расскажу об инструменте QaAPI — реализации API для применения в тестировании. Поделюсь опытом разработки такого инструмента в Welltory.
Как известно, чем раньше найден баг, там дешевле его починить. Лучше всего, когда проблема обнаруживается юнит-тестами или статическим анализатором на самой ранней стадии. Иначе обстоят дела с проблемой, проникшей в общую ветку. В этом случае необходимо дождаться прохождения автоматической регрессии, формально описать баг, а после исправления — проверить, что в свежем билде его действительно больше нет. Всего этого мы могли бы избежать, запустив регрессию на dev-бранче перед коммитом в общую ветку. Но это тоже малоэффективно потому, что регрессия выполняется долго и не все тесты в ней имеют отношение к измененному коду Как с этим бороться? В докладе я расскажу про наш опыт автоматизации поиска тестов, покрывающих изменения в dev-бранче, с помощью информации о покрытии кода.
Как известно, чем раньше найден баг, там дешевле его починить. Лучше всего, когда проблема обнаруживается юнит-тестами или статическим анализатором на самой ранней стадии. Иначе обстоят дела с проблемой, проникшей в общую ветку. В этом случае необходимо дождаться прохождения автоматической регрессии, формально описать баг, а после исправления — проверить, что в свежем билде его действительно больше нет. Всего этого мы могли бы избежать, запустив регрессию на dev-бранче перед коммитом в общую ветку. Но это тоже малоэффективно потому, что регрессия выполняется долго и не все тесты в ней имеют отношение к измененному коду
Как с этим бороться? В докладе я расскажу про наш опыт автоматизации поиска тестов, покрывающих изменения в dev-бранче, с помощью информации о покрытии кода.
Евгений Ильин (МАИ, доцент, инженер)
"Создание GUI на Python".
Слайды: http://www.moscowpython.ru/meetup/45/sozdanie-desktop-prilozhenij-na-python/
Александр Хаёров
"Миры frontend и backend неразделимы и порой важно понимать ключевые вещи в смежных областях. В докладе поговорим о двух важных вещах из мира frontend — промисах и сервис воркерах. Чтобы было веселее — попробуем изучить эти штуки на примере аналогий".
Слайды: http://www.moscowpython.ru/meetup/45/promises-and-service-worker-for-pythonist/
Артём Апалько (RedMadRobot backend-dev)
"Обзорный доклад по опкодам в питоне. Изменения в Python 3.6 (изменение размера, оптимизация branch-prediction)".
Слайды: http://www.moscowpython.ru/meetup/45/python-opcodes/
Слайды: https://speakerdeck.com/9seconds/daemonize
Небольшой рассказ о том, как правильно демонизировались процессы до прихода systemd.
Слайды: https://nikiladonya.github.io/#/4
Небольшой обзор gRPC как дополнение к докладу про Protocol Buffers.
Слайды: https://www.slideshare.net/AleksandrMokrov/protobuf-it
Поговорим о том, что за зверь этот Protocol Buffers и зачем он вообще нужен. Рассмотрим где он может быть полезен, что может дать и с какими проблемами может познакомить. Посравниваем с конкурентами.
Слайды: https://proofit404.github.io/talks/graphql-is-coming/slides/
Уже очень давно стандартом де-факто для дизайна web API стал REST. Но вот GitHub и Facebook анонсировали поддержку GraphQL API. Зачем они это сделали? Стоит ли нам сделать тоже самое? Какие инструменты для этого предоставляет экосистема Python? Хорошо ли они спроектированы? REST уже всё? Ответы на эти вопросы и не только вы узнаете из моего доклада.
Слайды: https://speakerdeck.com/9seconds/own-mustache
Давайте просто возьмем и напишем свой игрушечный шаблонизатор Curly, который функционально примерно равен Mustache за 40 минут. За эти 40 минут я попытаюсь рассказать все-все детали так, чтобы люди, которые умеют строить регулярные выражения, поняли бы, как реализуются такие шаблонизаторы в принципе.
Павел Петлинский (Rambler&Co)
"В докладе мы разберемся, что за зверь такой эта "Монада", и где прекрасный чистый мир математики ломается об особенности языков программирования".
Слайды: http://www.moscowpython.ru/meetup/44/monady-eksplikacija/
Антон Егоров (Sabaka.io, CTO)
"Многие разработчики теряются, когда сталкиваются с таким, казалось бы простым, вопросом как авторизация. Все понятно, когда мы имеем дело с человеком на сайте, который вбивает свой логин и пароль. Но процедура становится в совсем другой, когда нужна аутентификация для API".
Слайды: http://www.moscowpython.ru/meetup/44/authentication-with-jwt/
Сергей Сундуков (Borlas Consulting Group, Ведущий консультант)
"Хочу рассказать об успешном опыте применения питона и опен-сорсных библиотек при решении реальных бизнес-задач планирования и оптимизации".
Слайды: http://www.moscowpython.ru/meetup/44/python-i-issledovanie-operacij/
Выпускник курсов Learn Python Юрий Половинкин рассказал о том, зачем он записался на курсы и что из этого получилось.
Сложно ли реализовать навигацию для сайта? Разместить на его страницах различного вида меню, навигационные цепочки, предоставить пользователю структурную карту. Давайте ознакомимся с подходом, использующемся в sitetree, который позволяет решать подобные задачи минимальными усилиями.