Начало занятий 21 апреля

Web-разработчик на Python

Общая стоимость: 40 000 ₽
В месяц: 9 500 ₽
4 часа в неделю
5 месяцев
О курсе

Цель курса “WEB-разработка на Python” – подготовить специалиста, который сможет не только решать рядовые задачи бекенд-разработки, но и сделать с нуля современную фронтенд часть.

Чтобы получить опыт бекенд-разработки, мы будем не только решать типовые задачи, но и разбираться в том, как устроены основные средства, которыми мы пользуемся каждый день. Например, в рамках курса студенты реализуют свой небольшой uwsgi-совместимый веб-фреймворк и свою ORM. После таких упражнений у студентов будет куда меньше вопросов о том, зачем нужен werkzeug и как SQLAlchemy генерирует запросы.
Кроме этого мы поработаем с Flask и Django, посмотрим на различия Django ORM и SQLALchemy, поговорим о том, как правильно делать API и сделаем несколько примеров сами, с помощью Django REST Framework и GraphQL, научимся деплоить с помощью Fabric и заворачивать приложение в Docker-контейнеры, научимся писать тесты и изучим модули, которые сильно облегчают этот процесс, поговорим о TDD, научимся добавлять авторизацию через соц. сети, поработаем с менеджерами очередей (и напишем свой!), напишем бота для Telegram и изучим необходимый инфраструктурный минимум для взрослого проекта (InfluxDB, Grafana, Jenkins, Sentry).

Чтобы получить опыт фронтенд-разработки, мы рассмотрим ключевые особенности языка JavaScript, его окружение - браузеры и серверную платформу NodeJS. Мы разберем внутреннее устройство и понятия популярного фреймворка ReactJS, а также немного познакомимся с библиотекой для написания web-приложений VueJS.

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

Курс предназначен для тех, у кого уже есть опыт разработки или большой опыт участия в проектах с открытым исходным кодом: мы ждём от студентов знакомства с Python, понимания основ веб-разработки и знания самых азов JavaScript и html/css.

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

Дополнительные материалы:
Запись дня открытых дверей
Запись открытого урока
Открытый урок «Методы получения данных у Query в SQLAlchemy»
Открытый урок «Паттерн MVC и его реализация в Django»

Программа курса
1
модуль
2
модуль
3
модуль
4
модуль
5
модуль
Занятие 1: Технические детали курса; декомпозиция; чистые функции; цикломатическая сложность; читаемость; фичеризм; поддерживаемость; статический анализ кода.
ДЗ
Рефакторинг существующего кода.. Отрефакторить и оформить в виде библиотеки на Гитхабе следующий код: https://gist.github.com/Melevir/5754a1b553eb11839238e43734d0eb79
Занятие 2: Объекты и переменные; структуры данных под капотом основных типов; list vs tuple; профилирование памяти; как работает сборщик мусора.
Занятие 3: Принципы ООП; mixins; class/instance variables; MRO; dict; slots; name mangling.
ДЗ
Добавление фич в скрипт для статического анализа кода..
Занятие 4: IP, TCP, HTTP; [u]WSGI.
ДЗ
Написать свой wsgi-совместимый веб-фреймворк..
Занятие 5: werkzeug; Flask.
ДЗ
Сделать демо интернет-магазина на Flask..
Занятие 6: ORM – зачем нужно; описание схемы данных; сессии; добавление/удаление/апдейт данных
ДЗ
Написать свою ORM для sqlite..
Занятие 7: Django apps; Django ORM; Django Class Based Views; Django common tools.
ДЗ
Сделать демо интернет-магазина на Django..
Занятие 8: Семинар. Реализуем свой WSGI-совместимый фреймворк.
Занятие 9: Django REST Framework. Django Configurations.
ДЗ
Реализуем базовый бекенд для сайта с курсами..
Занятие 10: API. GraphQL и его реализация в Python. GraphQL и Django.
ДЗ
Добавляем сущности и фичи для API сайта с курсами..
Занятие 11: Fabric. Развертывание проекта на сервере.
Занятие 12: Django шаблоны и немного Bootstrap 3. Делаем веб-интерфейс.
Занятие 13: Знакомство с Front-end частью курса. Основы HTML, CSS, методологии вёрстки. Немного Bootstrap 4.
ДЗ
Сделать вёрстку (HTML + CSS) главной страницы сайта для обучения..
Занятие 14: Django m2m, select_related/prefetch_related, django debug toolbar, factory_boy, faker.
Занятие 15: Основы JS: типы данных, операторы, объекты, работа с DOM и браузером
ДЗ
Добавление поведения к главной странице, страница курсов.
Занятие 16: Python social auth, django context processors.
Занятие 17: Продвинутый JS: ООП в JS, прототипирование, асинхронность.
ДЗ
Страница расписания занятий.
Занятие 18: Азы работы с очередями задач.
ДЗ
Добаляем асинхронную отправку электронной почты.
Занятие 19: ES6, NodeJS окружение, babel + webpack, транспайлинг, CSS препроцессоры
ДЗ
Сборка UI с помощью webpack, форма логина и регистрации, проксирование вызовов на back-end.
Занятие 20: Пишем свой менеджер очередей.
Занятие 21: fetch || axios || $.ajax для REST запросов, модульность
ДЗ
Загрузка списка курсов с сервера, логин страница, REST API для работы.
Занятие 22: Введение в автотесты.
ДЗ
Покрыть проект приёмочными тестами на 60%.
Занятие 23: Code review
ДЗ
Исправление недостатков в соответствии с code review.
Занятие 24: Введение в TDD.
Занятие 25: Основы React, JSX, компоненты React
ДЗ
Главная страница на React.
Занятие 26: Введение в pytest.
ДЗ
Переписать тесты на pytest и factory_boy.
Занятие 27: state и props, data-flow в React-компонентах
ДЗ
Страница логина, регистрации на React.
Занятие 28: InfluxDB, Grafana.
Занятие 29: Жизненный цикл React-компонент
ДЗ
Страница личного кабинета, отправка решения на сервер.
Занятие 30: Jenkins, Sentry.
ДЗ
Настроить логирование ошибок в Sentry..
Занятие 31: Состояние приложения. Flux & Redux
ДЗ
Блок успеваемости в личном кабинете, ведомость в кабинете преподавателя.
Занятие 32: python-telegram-bot
Занятие 33: Code review
ДЗ
Исправление недостатков в соответствии с code review.
Занятие 34: threading, multiprocessing, queue.
Занятие 35: Routing в React. SPA
ДЗ
Организация всего приложения в виде SPA..
Занятие 36: Введение в docker, docker-compose.
ДЗ
Завернуть проект в докер-контейнеры.
Занятие 37: Тестирование JS приложений
ДЗ
Написание unit-тестов для UI и back-end.
Занятие 38: asyncio
Занятие 39: Обзор Vue2
ДЗ
Landing page на Vue.
Занятие 40: QnA
Минимальные требования для прохождения курса

Чтобы начать заниматься на курсе, нужно знать:
- основы синтаксиса Python 3;
- основные модули стандартной библиотеки;
- основы написания поддерживаемого кода;
- основы SQL;
- понятие асимптотической сложности;
- как работать в консоли;
- как работать с git;
- как и зачем писать автотесты;
- основы html и css;
- основы JavaScript.

Вот ссылки, которые помогут овладеть или вспомнить некоторые из этих пунктов:
http://sql-ex.ru/
http://pythontutor.ru/
https://github.com/gregmalcolm/python_koans
http://try.github.io/
https://www.ozon.ru/context/detail/id/4523340/
https://www.ozon.ru/context/detail/id/5730448/
https://github.com/mrdavidlaing/javascript-koans
https://developer.mozilla.org/ru/docs/Learn/Getting_started_with_the_web/JavaScript_basics

Преподаватели
Юрий Дворжецкий
Ведущий разработчик в Luxoft, кандидат физико-математических наук.
Программирует с начальных классов.

Разрабатывает на разных платформах: большие и маленькие проекты, высоконагруженные и очень красивые, многим известные и совсем специфические.

Влюблён в элегантность и оригинальность JavaScript, как классического, так и современного, во всех его проявлениях.

Сейчас разрабатывает Web-приложения c UI на React и Angular*.
Илья Лебедев
Эксперт, консультант по архитектуре приложений. Специалист по разработке серверных решений на Python. Автор курсов по веб-разработке в МГТУ им. Баумана, ВШЭ. Соорганизатор курсов Learn Python и devman.org. Старший разработчик в Itcanfy и Ngenix.
9 лет опыта программирования на C++, Python, PHP и JavaScript. Участвовал в проектах разной сложности: от разработки небольших корпоративных сайтов до планирования и реализации высоконагруженных сервисов и использованием микросервисной архитектуры.
Работодатели