вторник, 23 апреля 2013 г.

Новый набор на курсы Learn Python

Объявляем набор участников на наши новые потоки курсов о Python: Aсинхронное программирование, Создание эффективных веб-приложений и Оптимизация Python кода. В этот раз потоки будут длиться по 6 занятий. Планируемая дата начала занятий: июнь 2013 года.


Асинхронное программирование


Сетевые библиотеки, например 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 версии не будет. Ни в каком виде.

22 комментария:

  1. А здесь будут какие-то посты про Tulip?

    ОтветитьУдалить
    Ответы
    1. Наверное, да. Уверен, будут. Мне захочется об этом не только рассказать а еще и написать.
      Сейчас я еще не созрел.
      Можете составить список вопросов по tulip?
      Мне это сильно поможет.

      У меня будет два практически одинаковых доклада о tulip на hotcode.org и devconf.ru.

      После этих событий, наверное, будут статьи. Тема очень большая и сложная, раскрыть сразу её нелегко.

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

      Удалить
    3. Сфера применения такая же как и у twisted/tornado. Не WSGI одним строится интернет. Лучше, потому что запись на yield from проще чем использование callback chain

      Удалить
    4. для websockets и long polling можно использовать, ну wsgi в tulip тоже есть. да и вообще можно исползовать tulip везде где есть IO-bound задачи.

      Удалить
  2. Ответы
    1. Я просто не представляю как это будет выглядеть.

      Сейчас всё происходит так: есть проектор, на котором показываются слайды. Их немного и они совсем не полные.

      У меня одновременно доска на всю стену. Где я рисую мелом схемки, рассказываю-показываю и одновременно (это очень важно) отвечаю на вопросы. Опять таки что-то дорисовывая и объясняя.

      Часто разговор заходит вообще в сторону, и приходится рисовать и объяснять слушателям те вещи, которые я вообще не собирался затрагивать.

      В этом контексте я не представляю пока как сделать так чтобы вам удобно было в этом участвовать.

      Простые варианты типа: записал себя любимого на камеру, все посмотрели и заплатили деньги — мне не по душе.

      Я вижу, что не все желающие могут посещать offline занятия в Киеве.
      Спрос на online курсы растёт.

      Подскажите, как это сделать удобным мне и одновременно полезным для обучающихся.

      Наверное, я совсем в online learning ничего не понимаю. Предлагайте свои идеи, обсудим.

      Удалить
    2. Приведу один пример. Есть одна конференция она проводится онлайн очень хорошие темы и так уже 5 лет если не ошибаюсь. Как она проходит локально как и обычная а те кто онлайн те конектится один еркан слайды другой екран аудитория с выступающим денег за онлайн меньше конечно а задавали вопросы по твит ленте либо по lync. Я в ней брал учатсие онлайн и 2й год очень удобно в приципе было..

      Удалить
    3. много раз аудитория заходила с вопросами не туда и было еще интересней (допустим доклад должен был быть по best practice in entity framework orm а все ушло в какой orm выбрать и если ли жизнь без orm.:) на конференции кстати чаще больше онлайн участиников чем локально так как сама она проводится в небольшом городе где то в Росси..

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

      Удалить
  3. подреживаю по сети. просто приехать в киев не получается к сожалению в июне..

    ОтветитьУдалить
  4. Как-раз приходится по работе писать расширения для питоньего кода на С++, пока использую Boost.Python интересно было бы послушать про альтернативные подходы.

    ОтветитьУдалить
    Ответы
    1. Кирилл, если тебе нужен именно С++ то boost.python — лучший выбор.
      Для С рекомендую Cython.

      Удалить
  5. Во первых, всемерно поддерживаю идею об онлайн-курсах. Как то же они получаются у всяких массачусетских университетиков ? :-) Могу познакомить с ребятами, профессионально занимающимися онлайн-обучением.

    Во вторых, меня посетил философский вопрос, даже два (соответственно вопросы предельно чайниковские, но что уже есть) :-)

    1) А зачем народ пишет сетевые библиотеки и сервера на питоне ? Вроде ж неподходящий инструмент то ? Так как писать всё равно много и тяжко, а скорость работы получившего продукта критически важна...
    2) А зачем их столько написано то? Сетевых библиотек этих, в том числе на питоне? Чего добиться хотят авторы?

    ОтветитьУдалить
    Ответы
    1. Всякие разные MIT делают online обучение на профессиональной основе.
      Для меня эта штука новая и неизвестная. Я не только не имею опыта online преподавания а даже ни разу не обучался на online курсах.
      Если есть знакомые ребята, которые уже это делают и готовы рассказать как они организовали работу — мне было бы интересно пообщаться.

      По сетевым библиотекам. Причина та же, как и для использования django/pyramid/flask для web servers. Писать на Python легче чем на C/C++.
      Скорость работы — понятие условное. Это и так IO bound задача, т.е. затык не в CPU.
      Хорошая библиотека не будет сильно тормозить, критический код можно сделать в виде Python C Extensions. Пользователь получает удобный инструмент для работы.

      Библиотек много, лидеров на данный момент несколько: twisted, tornado, gevent.
      У каждой библиотеки есть свои преимущества и недостатки.
      Главное — нет единого стандарта (сейчас я участвую в его создании). Это будет называться tulip и войдёт в python 3.4.
      Ожидаю, что потом те кто смогут подтянутся, остальные будут продолжать идти своей дорогой. Плюс появится несколько библиотек, которые будут реализовывать стандарт по своему. Сейчас уже есть rose, она совместима со стандартом но использует внутри libuv, написанный на C. Эта библиотека никогда не войдёт в python но сможет использовать библиотеки написанные для tulip без проблем.

      Удалить
  6. Поддерживаю реквест онлайн курсов.

    ОтветитьУдалить
  7. Также очень хотел бы увидеть Ваши курсы онлайн.

    ОтветитьУдалить
  8. К тому же курсы очень интересные. Мб хоть кратко как-то выложить содержимое?

    ОтветитьУдалить
  9. Андрей, а есть где-то приблизительное расписание курсов -- когда и где они будут идти?

    ОтветитьУдалить
    Ответы
    1. Проходить скорее всего будет в Часописе (30 м от метро «пл. Льва Толстого»).
      Web будет идти вечером в один из рабочих дней. Асинхронное программирование и Оптимизация будут по суббатам. В 11.00 и 13.30 соответственно. Иногда по предварительному объявлению дата будет переноситься на воскресенье или на следующую субботу.
      Ближе к моменту старта будет известно окончательное расписание.

      Удалить