Online обучение на Python‑разработчика включает в себя 5 модулей с лекциями, практикой и итоговыми проектами (от новичка до уровня Middle-разработчика), а также финальный проект.
Основы программирования на Python
- Знакомство с ИТ-индустрией. Устройство ИТ-компаний и разработка продукта.
- Настройка среды разработки. Установка и работа в PyCharm. Создание первого проекта. Знакомство с Python и основы Scrum.
- Основы синтаксиса Python. Переменные, операторы и ввод данных. Условные конструкции if/else. Циклы for и while.
- Типы данных в Python: числовые, вещественные, логические. Преобразование типов. Создание функций, параметры, return и области видимости переменных.
- Коллекции: списки (List) и кортежи (Tuple). Работа с элементами: добавление, удаление, срезы. Циклы и генераторы списков.
- Коллекции: множества (Set). Операции над множествами. Продвинутая работа со строками, срезы и escape-символы.
- Коллекции: словари (Dictionary) и неизменяемые множества (frozenset). Работа с парами ключ-значение. Циклы и генераторы словарей.
- Расширенные возможности функций: лямбды, замыкания, генераторы и декораторы. Работа со встроенными библиотеками. Модуль datetime.
- Основы ООП. Классы и объекты, инициализаторы. Наследование, полиморфизм, множественное наследование и порядок разрешения методов (MRO).
- Ошибки и исключения. Обработка исключений с помощью try-except. Создание собственных исключений. Отладка программ в PyCharm.
- Модули и пакеты. Импорт и создание собственных модулей. Пакетные менеджеры. Итераторы и перегрузка операторов.
- Работа с файлами: чтение, запись, оператор with. Работа с файловой системой и директориями. Сериализация объектов с помощью модуля pickle.
- Формат JSON и его применение. Работа с сетью: HttpClient, Proxy, сокеты. Взаимодействие с публичными и AI API.
- Основы асинхронного программирования. Многопоточность и модуль threading. Библиотека asyncio: Event Loop, задачи (Task) и Future.
- Работа с системой контроля версий Git и GitHub. Практическое освоение GUI в PyCharm: Commit, Push, Branch. Настройка файла .gitignore.
Итоговый проект
- Создание многофункционального Telegram-бота с интеграцией ChatGPT
Работа с сетью
- Основы устройства сети: модель OSI, принципы работы подсетей, DNS, NAT и VPN.
- Изучение протокола HTTP: клиент-серверная архитектура, структура URL, HTTP-методы, коды ответов, заголовки и введение в REST.
Инструменты для данных: работа с Excel и веб-скрейпингом
- Автоматизация работы с данными в Excel с помощью Python и pandas. Изучение чтения, записи, фильтрации, сортировки и группировки данных. Объединение, очистка таблиц, создание сводных отчетов и их экспорт.
- Изучение основ HTML: структура документа, базовые теги, списки, таблицы и формы. Введение в CSS: способы подключения, основные, комбинированные и атрибутные селекторы для стилизации элементов.
- Введение в веб-скрейпинг: установка requests и BeautifulSoup, парсинг HTML. Изучение методов поиска (find, find_all, select) по тегам, атрибутам и CSS-селекторам. Извлечение текста и атрибутов из таблиц и списков.
- Продвинутые техники веб-скрейпинга: обход ограничений с помощью user-agent, cookies, прокси и обход CAPTCHA. Работа с динамическим JavaScript-контентом, пагинацией и сложными HTML-структурами. Использование API, настройка ретраев, таймаутов и кэширования для создания устойчивых и производительных скрейперов.
- Освоение Selenium для автоматизации браузера: настройка драйвера, поиск элементов по ID, class, XPath и CSS. Взаимодействие с формами, кнопками и динамическими элементами, извлечение данных, прокрутка и навигация.
- Разработка и оптимизация устойчивых скриптов: планирование, структурирование кода, логирование, обработка ошибок, обход пагинации и тестирование.
Docker
- Основы Linux. Изучение командной строки, навигация по файловой системе, работа с файлами и директориями.
- Администрирование Linux. Управление пользователями и группами, настройка прав доступа к файлам, мониторинг и управление системными процессами.
- Введение в Docker. Сравнение контейнеров и виртуальных машин. Установка, основные команды и знакомство с Docker Hub.
- Основы работы с Docker. Создание и управление контейнерами, работа с логами, перенаправление портов и монтирование томов для постоянного хранения данных.
- Работа с Docker-образами. Создание образов с помощью Dockerfile, изучение основных инструкций, управление образами, их оптимизация и публикация в Docker Hub.
- Docker Compose. Введение в оркестровку контейнеров. Создание docker-compose.yml для управления многоконтейнерными приложениями, настройка сетей, томов и масштабирование сервисов.
Проект: сервер картинок 1.0
- Разработать простой и эффективный сервис для хостинга изображений. Пользователи могут загружать свои изображения через веб-интерфейс, а взамен получать прямую ссылку для их просмотра или публикации в интернете. Технологии: Python, Nginx, Docker.
Основы SQL и PostgreSQL
- Изучение реляционной модели данных и синтаксиса SELECT. Фильтрация данных с помощью WHERE, сортировка с ORDER BY, ограничение вывода через LIMIT и OFFSET для пагинации, а также извлечение уникальных значений с DISTINCT.
- Агрегирование и группировка данных. Применение агрегатных функций (COUNT, SUM, AVG, MIN, MAX), группировка результатов с GROUP BY и фильтрация групп с HAVING. Обзор основных числовых и временных типов данных.
- Понимание и обработка NULL значений с помощью IS NULL, COALESCE и CASE WHEN. Использование подзапросов для сложной фильтрации данных с операторами IN и EXISTS.
- Объединение таблиц: освоение INNER JOIN и LEFT JOIN для связывания данных из нескольких таблиц. Изучение концепции внешних ключей и моделирование связей ONE-TO-MANY и MANY-TO-MANY.
- Создание и изменение таблиц с помощью CREATE и ALTER TABLE с использованием ограничений. Вставка, обновление и удаление данных командами INSERT, UPDATE, DELETE.
Проект: сервер картинок 2.0
- Это развитие и усложнение первоначальной версии сервиса. Ключевое нововведение — интеграция с базой данных PostgreSQL. Вся архитектура по-прежнему строится на Docker и Docker Compose, но теперь включает в себя три взаимосвязанных сервиса: бэкенд на Python, веб-сервер Nginx и базу данных PostgreSQL.
Бекенд на Django
- Знакомство с Django, архитектура проекта и базовые компоненты
- Настройка окружения: виртуальные среды, установка зависимостей, файлы настроек, конфигурация БД, статические файлы.
- Работа с представлениями (Views) и маршрутизацией (URLConf): создание функций-представлений, связывание URL, динамические URL, обработка параметров.
- Классовые представления (Class-Based Views): отличия от FBV, базовые CBV, TemplateView, ListView, DetailView, переопределение методов.
- HTML и шаблоны Django: контекст, наследование (base.html), теги (include, extends, block), фильтры, статические файлы.
- Создание приложений (Apps): структура, регистрация, маршрутизация на уровне приложений, организация кода в приложении.
- Основы Django ORM: модели, типы полей, миграции, работа с БД через shell, CRUD-операции.
- QuerySets и CRUD: создание, чтение, фильтрация, обновление и удаление данных. Ленивая загрузка, пагинация.
- Связи между моделями: OneToOne, ForeignKey, ManyToMany, работа со связанными объектами, оптимизация запросов.
- Агрегации, аннотации и фильтрация данных: aggregate(), annotate(), Sum, Avg, Count, Q-объекты, F-объекты.
- Django Admin: регистрация моделей, кастомизация отображения, ModelAdmin, фильтры, поиск, действия.
- Django Forms: создание, обработка и валидация форм, встроенные валидаторы, виджеты, отображение ошибок.
- ModelForms: создание форм на основе моделей, сохранение данных, кастомизация полей и методов.
- Message Framework: уведомления пользователя, типы сообщений (success, error, info), отображение в шаблонах.
- Аутентификация в Django: User модель, страницы регистрации, входа и выхода, ограничение доступа.
- Введение в Django REST Framework: установка, настройка, сериализаторы, маршрутизация API, обработка HTTP-методов.
- Сериализация данных с DRF: Serializers, ModelSerializers, настройка полей, вложенные и связанные сериализаторы, валидация.
- Аутентификация и разрешения в DRF: токены, JWT, настройка, использование разрешений.
- Пагинация и фильтрация данных в API: базовые настройки, DjangoFilterBackend, поиск, упорядочивание данных.
- ViewSets и Routers: ViewSets, ModelViewSet, GenericViewSet, SimpleRouter, DefaultRouter, кастомизация маршрутов.
- Кастомизация разрешений и безопасность API: IsAuthenticated, IsAdminUser, создание кастомных разрешений, CORS, HTTPS.
- Тестирование API: pytest-django, DRF тест-клиент, тестирование сериализаторов, представлений, Mock-тестирование.
- Документирование API: drf-yasg для Swagger и Redoc, генерация документации, Swagger UI.
- Введение в GraphQL с Django: Graphene-Django, создание API, определение схемы, запросы, мутации, Apollo Client.
- Сложные GraphQL запросы и оптимизация: вложенные запросы, DataLoader, пагинация, фильтрация, обработка ошибок.
Управление проектом на удаленном сервере
- Работа с сервером. Настройка подключения, работа в терминале linux, установка и настройка веб- и прокси-сервера, настройка SGI
- Деплой веб-приложения на сервер. Мониторинг работы приложений
- Работа с контейнерами. Автоматизация деплоя. CI/CD
- Дополнительные инструменты. PostgreSQL, Docker Hub, GitHub Actions
- Работа с облаками. Настройка и конфигурация виртуальных машин
- Работа с AWS. Работа с Azure. Google Cloud
Итоговый проект: интернет-магазин на Django/DRF
- Создание полноценного интернет-магазина, который трансформирует готовый статический дизайн в динамическое веб-приложение.
- Разработка будет вестись с упором на создание двух основных интерфейсов: традиционного веб-интерфейса для пользователей (с сессионной аутентификацией) и REST API для внешних клиентов (с JWT-авторизацией). Вся инфраструктура будет контейнеризирована с использованием Docker Compose и PostgreSQL.
Основы FastAPI и создание API
- Введение в FastAPI: сравнение с другими фреймворками, установка, создание первого API, маршрутизация, параметры запросов, ответы JSON, встроенная документация Swagger.
- Создание асинхронного REST API с FastAPI: async/await, CRUD-операции (GET, POST, PUT, DELETE), параметры пути и запросов, обработка ошибок и исключений.
- Валидация данных с Pydantic: создание моделей для валидации входных и выходных данных, использование Field, вложенные модели, кастомизация сообщений об ошибках.
- Аутентификация и авторизация с OAuth2 и JWT: концепции OAuth2 и JWT, генерация и проверка токенов, защита эндпоинтов, настройка рефреш-токенов.
- Тестирование FastAPI-приложений с Pytest: установка Pytest, тестирование GET/POST запросов с TestClient, мокирование внешних API, тестирование аутентификации, фикстуры.
Управление базами данных (SQL/NoSQL) и кэширование
- Работа с SQLAlchemy: основы ORM, создание моделей данных, выполнение CRUD-операций, реляционные модели, интеграция с FastAPI и Django.
- Миграции с Alembic: роль Alembic, создание и откат миграций, управление версиями БД, интеграция с FastAPI и Django, синхронизация миграций.
- Введение в NoSQL базы данных (MongoDB): особенности, установка, CRUD-операции, интеграция с FastAPI (motor), асинхронные запросы, работа с коллекциями.
- Кэширование с Redis: зачем нужно кэширование, принципы работы Redis, установка, подключение к FastAPI, кэширование запросов и сессий, оптимизация производительности.
- Сравнение SQL и NoSQL баз данных: когда использовать каждый тип, примеры гибридных решений, управление данными в различных базах.
- Оптимизация работы с SQLAlchemy: транзакции, связи (OneToOne, ManyToMany), оптимизация запросов, индексы, агрегации, подзапросы, профилирование.
Асинхронные задачи и очереди сообщений
- Асинхронное взаимодействие с RabbitMQ: очереди сообщений, продюсеры, консьюмеры, асинхронная работа с FastAPI, постоянные очереди.
- Celery для фоновых задач: установка, настройка, выполнение фоновых задач, интеграция с RabbitMQ, отслеживание статуса задач, Celery Beat для планирования.
- Параллельная обработка задач: настройка в Celery, использование нескольких воркеров, оптимизация очередей с Celery и RabbitMQ, балансировка нагрузки.
- Обработка ошибок и повторная отправка сообщений: обработка ошибок в RabbitMQ и Celery, retry-механизмы, dead-letter queues (DLQ), логирование, управление таймаутами.
Интеграция с внешними сервисами и безопасность API
- Интеграция FastAPI с внешними API: httpx для асинхронных запросов (GET, POST), валидация данных, обработка ошибок, примеры интеграции (OpenWeatherMap, GraphQL).
- Работа с Google API: Google Cloud Console, OAuth2, Google Sheets API, Google Drive API, Google Maps API, асинхронная обработка запросов, лимиты.
- Создание Telegram-бота с FastAPI: основы Telegram-ботов, python-telegram-bot, Webhooks, асинхронная обработка сообщений, команды, логирование, интеграция с внешними API.
- Работа с Telethon и Telegram API: Telethon, создание Telegram-клиента, получение данных из каналов/чатов, асинхронное чтение/отправка сообщений, обработка событий, интеграция с FastAPI.
- Обработка ошибок и исключений в FastAPI: стандартные HTTP-ошибки, пользовательские ошибки, кастомные обработчики, логирование, middleware для ошибок, глобальный обработчик.
- Настройка CORS и безопасность API: Cross-Origin Resource Sharing (CORS), настройка в FastAPI, защита API токенами безопасности, SSL, кросс-доменные запросы.
Итоговый проект
- Проект направлен на создание автоматизированного сервиса для агрегации и распространения новостей. Основная задача — собирать актуальные новости из различных источников, фильтровать их по заданным критериям и публиковать в указанный канал.
- Сервис будет работать по расписанию, использовать фоновые задачи для обработки данных и предоставлять программный интерфейс для управления настройками и просмотра последних обновлений
Порождающие паттерны
- Singleton
- Factory Method
- Abstract Factory
- Prototype
- Builder
- Lazy Initialization
- Object pool
Структурные паттерны
- Adapter
- Decorator
- Proxy
- Bridge
- Facade
- Composite
- Flyweight
Поведенческие паттерны
- Iterator
- Command
- Observer
- Visitor
- Mediator
- State
- Strategy
- Template Method
- Chain of Responsibility
- Memento
- Interpreter
Антипаттерны
- Магические числа и строки
- Класс бога
- Преждевременная оптимизация
- Изобретение велосипеда
Алгоритмы и структуры данных
- Знакомство с алгоритмами. Линейный и бинарный поиск. Алгоритмические задачи
- Структуры данных. Графы. Оперативная память и представление данных, массивы постоянного размера, динамические массивы, связные списки, хеш-функции и другие структуры данных
- Рекурсия и сортировки. Рекурсивный и базовый случаи, рекурсивный бинарный поиск, алгоритмы сортировки, выбор алгоритма сортировки и их сравнение
- Сложность алгоритмов. Временная и пространственная сложность алгоритмов, нотация Big O
- Методы решения задач. Наивные методы, метод двух указателей, метод скользящего окна и т.д.




