Асинхронное программирование
Сетевые библиотеки, например twisted, tornado, gevent, tulip — при кажущейся разнице в подходах имеют очень похожее ядро, называемое reactor, io loop, hub, event loop соответственно. Именно созданием этого ядра с нуля своими руками мы и займемся.
Цель курса: дать знания о том, как происходит работа с сетевыми подключениями (сокетами) на примере создания собственной библиотеки.
Требования к участникам: знание Python на достаточно приличном уровне. Введения в программирование не будет, с другой стороны создаваемый код не потребует чего-то сложного. Все сложности будут в работе с сетью а не в создании хитрых питоновских конструкций.
Потребуется Python 3.3. Хотя код мало зависит от версии языка, всё же в Python 3.3 появились некоторые удобные штуки которыми мы воспользуемся.
Операционная система: Linux, MacOS X или FreeBSD на выбор. Если есть сильное желание писать на Windows — тоже можно.
Коротко о чём будут занятия:
- Написание примитивного клиент-серверного кода на потоках.
- Объяснение почему производительные программы такой подход не используют. Нужно делать на epoll или kqueue, в крайнем случае select. Создание своего event loop. Сначала для обработки отложенных событий. Что это такое и какой должен быть интерфейс — расскажу по ходу дела.
- Описание того, как работает select/epoll/kqueue. Добавляем к event loop работу с TCP сокетами, основанную на обратных вызовах. Правильная обработка ошибок.
- Добавляем понятия транспорта-протокола.
- Строим поверх этого удобный интерфейс для пользовательского кода. На yeild from или greenlets — по желанию.
- Окончательный разбор результатов, ответы на возникшие вопросы.
Получившийся код в целом будет в основе следовать дизайну tulip в сильно упрощённом виде.
Курс состоит из шести занятий. Лектор: Андрей Светлов
Каждое занятие длится 2 часа.
Стоимость занятия: 300 грн.
Создание эффективных web-приложений
В 2013м году никого не удивишь веб-приложением, построенным при помощи Django, Pyramid или даже Flask. Однако куда сложнее удивить грамотным и эффективным web-приложением, способным одинаково успешно справлятся с нагрузкой реального мира и оставаться простым и легким для разработки.
Поэтому главной целью курса будет показать, как создавать высоконагруженные приложения, какие инструменты помогут в этом, при чем при здесь тестирование, профайлинг, деплоймент и изначально правильно выбранная архитектура и откуда приходят основные ошибки.
На протяжении всего курса мы будем создавать веб-приложение, ориентированное на работу на ARM микро-компьютере Raspberry PI.
Требования к участникам: опыт в создании сайтов или проектов при помощи Python и популярных фреймворков. Учить создавать сайты с нуля не буду, буду помогать перейти на новый уровень и избегать довольно популярных и тем не менее назойливых ошибок.
Краткое содержания курса:
- Архитектура высоконагруженного приложения, разделение проекта на бэкенд и фронтэнд, удаленное выполнение задач
- Оптимизация архитектуры и оптимизация кода, что идет за чем
- Тестирование как двигатель разработки, а не наоборот
- Непрерывная интеграция и непрерывный деплоймент, сравнение мест для развертки проектов
- Откуда берутся основные ошибки веб-приложений, зачем мы наступаем на одни и те же грабли
Курс состоит из шести занятий. Лектор: Игорь Давыденко
Каждое занятие длится 2 часа с перерывом в 15 минут.
Стоимость занятия: 200 грн, стоимость полного курса: 1000 грн.
Оптимизация Python кода
Чтобы делать высокоэффективный код нужно уметь пользоваться профайлером, читать байткод, выполнять алгоритмическую оптимизацию и писать Python C Extensions если алгоритмически выжать уже ничего не получается.
Всем этим мы и займемся.
Требования к участникам: уметь программировать на Python и C. Последнее очень желательно хотя бы на уровне остаточных знаний из институтского курса — половина рассматриваемого кода будет на С.
Python 3.3, операционная система любая.
Краткое содержание курса:
- Профилирование через cProfile и timeit, анализ измеренных результатов. Рассматриваем из чего состоит функция с точки зрения Python и добираемся до байткода. Несколько простых вариантов оптимизации.
- Создаём простейший модуль Python C Extension.
- Учимся делать Python классы на C.
- Теперь пишем на Cython и радуемся как легко всё получается. В нагрузку ctypes.
- Показываю, как устроена виртуальная CPython машина изнутри. Интерпретаторы, потоки, стек. GIL. Как PyEval_EvalFrameEx исполняет байткод.
Курс состоит из пяти занятий. Лектор: Андрей Светлов.
Каждое занятие длится 2 часа.
Стоимость занятия: 300 грн.
UPD. Для тех кто ещё не понял: online версии не будет. Ни в каком виде.