Geekbrains

Python-разработчик PRO

  • Начальный уровень
  • Наставник: Есть
  • Сертификат: Есть
  • Формат: Online
  • Рассрочка: Есть
  • Язык: Русский
  • Осталось мест: Неограничено
Записаться

Python-разработчик PRO

6-месячный курс для практикующих специалистов. Вы получите новый опыт разработки: освоите Django REST Framework и различные архитектуры приложений, создадите чат со своим клиентом и сервером, потренируете разработку в команде.

Python — это востребованный и популярный язык: на нём разработчики создают бэкенд сайтов и проектируют взаимодействие с другими сервисами. А ещё это перспективный язык: зарплата у middle- и senior-разработчиков больше на 50%, чем у junior-специалистов. Мы поможем вам получить новый грейд и повысить доход.

Для кого этот курс?
  • Специалистам с опытом работы на Python
    Вы уверенно программируете на Python. Поможем отточить навыки и получить новый опыт разработки.
  • Junior-разработчикам на Python
    Программируете на Python и самостоятельно его изучаете. Поможем систематизировать знания и перейти на новый грейд.
  • Разработчикам и DevOps-специалистам
    Освоите новую профессию и перейдёте в интересное IT-направление.
Программа обучения
DRF — Django REST framework
  • Введение в REST и DRF — Django REST framework

    Узнаете назначение каждого REST-запроса. Сможете подключать DRF к проекту и создавать API для простой модели данных.

  • Введение в React. Компонентный подход

    Создадите страницу на React и разделите её на небольшие компоненты. Научитесь подключать frontend на React к проекту. Узнаете, как получать данные из API на стороне клиента.

  • Serializers. Renderers. Routers

    Познакомитесь с видами serializers, renderers, routers и научитесь настраивать их под задачу. Сможете выбирать и создавать serializers для различных типов связей в моделях.

  • Введение в REST и DRF — Django REST framework

    Узнаете назначение каждого REST-запроса. Сможете подключать DRF к проекту и создавать API для простой модели данных.

  • Views. Filtering. Pagination

    Познакомитесь с видами views и научитесь настраивать их под задачу. Сможете добавить фильтрацию и постраничный вывод в API.

  • Routing. SPA

    Научитесь создавать Single Page Applications на React и использовать react-router-dom для настройки маршрутизации на стороне клиента.

  • Авторизация. Система прав

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

  • Авторизация на стороне клиента

    Узнаете, как настроить авторизацию на стороне клиента и где хранить токен. Сможете прикладывать токен к запросу на сервер и сохранять его в localstorage и cookies.

  • Тестирование API. Фабрики данных

    Научитесь писать различные варианты тестов для API. Сможете генерировать тестовые данные с помощью mixer.

  • Система версий API. Документация для API

    Узнаете, зачем нужна система версий API и как она формируется. Сможете создавать и поддерживать несколько версий API в своём проекте. Создадите документацию к API с помощью swagger-библиотек.

  • GraphQl-схемы

    Узнаете, зачем использовать GraphQl в проектах, и научитесь создавать схемы для гибких запросов к нескольким моделям данных.

  • Сборка проекта для продакшна и работа с формами

    Познакомитесь с вариантами сборки проекта и научитесь работать с формами на React. Реализуете поиск данных и страницы для post-, put- и delete-запросов.

  • Развёртывание проекта с помощью docker и docker-compose

    Познакомитесь с вариантами развёртывания проекта в docker. Научитесь разворачивать проект, используя несколько контейнеров.

Курс 2. Архитектура и шаблоны проектирования
  • Паттерны веб-представления

    Познакомитесь с паттернами MVC, Page Controller, Front Controller. Узнаете, зачем нужен WSGI-сервер, и научитесь его создавать с применением паттернов.

  • Архитектура Python-приложений

    Узнаете, как архитектура помогает разрабатывать бизнес-системы. Разберёте основные виды архитектуры и критерии хорошей бизнес-системы.

  • Принципы проектирования

    Освоите принципы проектирования: DRY, KISS, SOLID, GRASP.

  • Порождающие паттерны

    Это первая категория GoF-паттернов. Вы научитесь применять порождающие шаблоны в своём коде.

  • Структурные паттерны

    Это вторая категория GoF-паттернов. Вы научитесь применять структурные шаблоны в своём коде.

  • Поведенческие паттерны

    Это третья, последняя категория GoF-паттернов. Вы научитесь применять поведенческие шаблоны в своём коде.

  • Архитектурные системные паттерны

    Познакомитесь с базовыми и объектно-реляционными паттернами. Научитесь применять архитектурные системные паттерны и взаимодействовать с базой данных с помощью Data Mapper и Unit Of Work.

  • Антипаттерны

    Познакомитесь с популярными антипаттернами и научитесь находить их в системе.

  • Микросервисная архитектура

    Узнаете разницу между синхронными и асинхронными системами. Научитесь работать с брокерами сообщений и применять DDD и REST.

Курс 3. Асинхронный мессенджер
  • Клиентская часть проекта: desktop-приложение для обмена сообщениями

    Изучите технологии: socket, select, WebSocket, Tkinter, GIL и потоки, SQLite и SQLAlchemy для создания ORM базы данных.‍Создадите мессенджер, который сможет отправлять и принимать сообщения от сервера, используя API.

  • Серверная часть проекта: асинхронный сервер и база данных

    Создадите асинхронный сервер и спроектируете базу данных, чтобы хранить данные и переписку пользователей.‍Реализуете регистрацию и авторизацию пользователей, а также досылку сообщений в офлайне. Научитесь шифровать данные для отправки по каналам связи.

  • Принципы проектирования комплексных систем. Проектирование чата

    Узнаете, какие проблемы возникают при работе с длительными соединениями. Узнаете, какие задачи на взаимодействие не подходят для использования HTTP.

  • Первый простейший протокол обмена сообщениями

    Научитесь базовой работе с сокетами, создадите простейшие TCP-сервер и клиент, реализуете протокол передачи сообщений.

  • Работа сервера с множеством клиентов

    Научитесь работать с неблокирующими сокетами и познакомитесь с системным методом select.

  • Конкурентность. Кооперативная многозадачность. Генераторы

    Познакомитесь с понятиями «кооперативная многозадачность» и «сопрограммы». Научитесь обходить ловушки при проектировании многозадачных программ.

  • Конкурентность — часть 2. Многопоточность

    Узнаете, как работает многопоточность и чем она отличается от параллелизма. Разберётесь в специфике CPython при работе с потоками и научитесь работать с мьютексами.

  • Конкурентность — часть 3. Параллелизм

    Познакомитесь с библиотекой multiprocessing. Узнаете, как работает коммуникация процессов. Научитесь основным приёмам профилирования и оптимизации вычислений.

  • Конкурентность — часть 4. Итог

    Познакомитесь с понятиями task и future. Напишете простейший цикл событий. Улучшите клиент чата, который сможет принимать ввод пользователя одновременно с чтением сообщений от сервера.

  • Работа с высокоуровневым API Python asyncio

    Познакомитесь с библиотекой asyncio и узнаете, как она помогает решать проблемы с предыдущих занятий. Узнаете, чем отличается разработка с asyncio от работы с синхронным Python.

  • Перевод чата на WebSocket-протокол

    Познакомитесь с библиотекой aiohttp, научитесь использовать pytest в связке с asyncio, напишете сервер с использованием WebSocket-протокола и простую библиотеку для клиента.

  • Добавление функций для чата: комнаты, права, аутентификация и авторизация

    Узнаете о разнице между процессами аутентификации и авторизации. Разработаете протокол для доступа к ресурсам. Напишете метод аутентификации пользователей. Добавите комнаты для своего чата с возможностью разделять роли пользователей. Узнаете о способах отладки асинхронного кода и связанных с ними проблемах.

  • Работа с базами данных, асинхронные ORM

    Научитесь работе с асинхронными IO-драйверами. Узнаете, как подобрать IO-библиотеки для своего проекта, создадите БД и подключите её к приложению чата.

  • Расширение клиента. Оформление кода в виде библиотеки

    Превратите свой клиент с предыдущих занятий в библиотеку, узнаете о принципах оформления API-библиотеки, создадите CLI-интерфейс для клиента.

  • Введение в Tkinter и основные принципы создания графических интерфейсов

    Узнаете разные подходы к созданию графических интерфейсов и создадите прототип интерфейса для клиента.

  • Функциональный интерфейс. События Tkinter, взаимодействие элементов интерфейса

    Узнаете, как работают событийно-ориентированные интерфейсы, превратите прототип в почти функциональный фронтенд.

  • Рабочий клиент

    Научитесь соединять асинхронный код с синхронным, получите полностью функциональный GUI-клиент чата.

  • Подготовка сервера и клиента к распространению

    Научитесь работать с setuptools и оформлять клиент и сервер в готовый к установке пакет.

Курс 4. Командная разработка
  • Гибкие методологии (2 недели)

    Познакомитесь с Agile, Kanban, Scrum, Scrumban. Узнаете больше о работе по Scrum и подготовитесь к старту проекта.

  • Командная разработка по техническому заданию (8 недельных спринтов)

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

Знания и навыки, которые приобретете
  • Умение работать с чужим кодом
Инструменты и программы
  • REST API
  • DRF
  • Python Threads
  • Agile/Scrum

Преподаватели

  • Алексей Петренко

    Автор программы, Python-developer

    Разрабатывает IT-решения по автоматизации процессов учета наличия и движения людей и технических средств для Министерства обороны РФ. За 20 лет в IT писал программы на более чем 30 языках программирования.

  • Леонид Орлов

    Преподаватель, фрилансер

    Начал карьеру в «Прогнозе»: два года создавал проекты для правительства России. Знаком с командной разработкой и системой TFS, работал программистом биллинга на Oracle PL/SQL в «ЭР-Телекоме». Преподаёт с 2014 года, развивает собственные проекты на Python и Django.

  • Роман Зайруллин

    автор курса «Асинхронный чат»

    Backend-разработчик, IT-консультант и автор книги «Legacy Software. Как заставить чужой код работать».

  • Денис Романов

    преподаватель

    В коммерческой разработке с 2000 года. Участвовал в проектах промышленной автоматизации. Разрабатывал встраиваемые устройства, системы управления умным домом, системы электронного документооборота, медицинские системы.