Программа курса web-программирование в Python.

Полная программа курса.

Целью курса является ознакомление студентов с основами программирования на языке Python в среде web-разработки. Обучение приемам написания консольных приложений и серверных программ для сети Интернет.

Курс охватывает работу в операционной системе на базе Linux как более предпочтительную и дружелюбную для данного языка программирования.

Курс дает базовые знания и навыки использования основных библиотек и фреймворков для web.

Так же дает представления о следующем:

  • программных алгоритмах и шаблонах проектирования сложных систем;

  • функциональное и объектное программирование;

  • типах структур данных и работе с коллекциями данных;

  • синхронном и асинхронном программировании;

  • использования баз данных СУБД, язык SQL и объектный подход;

  • системой отложенных задач;

  • консольной работе с командным интерпретатором BASH;

  • работа с системой контроля версий git;

  • принципы построения REST API сервисов;

  • монолитные и микро сервисные архитектуры;

  • приемы серверного администрирования, работа по протоколу ssh;

  • базовые команды BASH;

  • модульное тестирование и система непрерывной интеграции и т.д.

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

Научится использовать такие инструменты как Django, Flask, celery, Tornado, redis, PostgreSQL, REST API многие прикладные библиотеки по работе с разного рода мультимедийными данными.

Курс дает основные понятия клиент-серверного взаимодействия по web протоколам HTTP, FTP, WebSocket, SSH.

Так же дается общее представление о языке разметки HTML и применении каскадных таблиц CSS.

Введение.

Почему полезно знать Python.

Компиляторы и интерпретаторы.

Возможности языка.

Установка Python.

Установка и настройка VSCode.

Основы работы с консолью. Запуск скриптов.

Вывод на экран. Программа Hello World.

Основы синтаксиса языка.

Операции присваивания и сравнения.

Арифметические операции.

Математические операции.

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

Циклические и условные операторы.

Простые типы данных. Логика, числа, строки. Их основные методы.

Динамическая типизация. Преобразование типов.

Работа с ошибками и исключениями.

Понятие объекта, его свойств и методов.

Понятие пакета и модуля.

Приемы импорта внутренних и внешних библиотек.

Установщик пакетов pip.

Понятие виртуального окружения и его использование. Файл requirements.txt

Библиотеки sys и os.

Работа с аргументами командной строки.

  • Работа с путями.

  • Файлы и каталоги. Файловая система. Создание, запись, чтение и удаление файлов.

Библиотека pdb для дебаггинга.

Библиотека для сериализации pickle.

Приемы коллективной разработки.

Система контроля версий GIT. Установка.

Основные команды GIT.

Создание и клонирование репозитория.

Внесение изменений.

Откат изменений.

Работа с ветками.

Работа с pull request-ами.

Работа с форками.

Приемы построения безопасного git-flow процесса разработки.

Обзор GUI клиентов.

Программирование для консоли.

Потоки ввода вывода и ошибок. Управление и манипуляции потоками через конвейерное программирование на языке BASH.

Запуск программ в интерактивном режиме.

Запуск программ в фоновом режиме.

Запуск программ в скринах.

Использование переменной name, main.py и init.py.

Управление процессами. Поиск, остановка и запуск процессов, их жизненный цикл в среде Linux.

Библиотеки для логирования.

Сложные типы данных. Списки и словари. Их свойства и методы.

Формат JSON . Модуль json. Серилизация и десерилизация.

Архивирование, сжатие и восстановление. Библиотка tarfile.

Кроссплатформенное программирование.

Функции.

Понятие функции и ее аргументов.

Создание и импорт функций. Область видимости функций.

Вложенные функции. Возврат функций и использования их в качестве аргументов.

Разворачивающие операторы * и **.

Декорирование функций. Шаблон декоратора.

Лямбда-функции.

Функции -генераторы.

Классы.

Понятие абстракции в виде классов.

Создание классов и их импорт.

Создание экземпляров классов.

Свойства и методы объектов.

Наследование.

Множественное наследование. Миксины.

Полиморфизм.

Инкапсуляция.

Приватные методы и свойства.

Регулярные выражения.

ООП. И шаблоны проектирования для web.

Фабричные методы.

Шаблон наблюдатель.

Шаблон декоратор.

Шаблон итератор и генератор.

Шаблон стратегия.

Шаблон адаптер.

Шаблон одиночка.

Процессы и многозадачность.

Потоковое программирование с модулем subprocess.

Использование программы Supervisor.

Модуль processing.

Программирование для браузера.

Понятие сокет соединения. Объекты HTTP запроса и ответа. Их структура.

Инспектирование сетевых взаимодействий в консоле браузера.

Понятие кук и сессий.

Делаем свой блог за 5 мин с библиотекой Pelican.

Простейший веб сервер на базе web.py.

Простейший веб сервер на базе Flask.

Простейший веб сервер на базе Tornado.

Простейший веб сервер на базе Twisted.

Простейший веб сервер на базе Django.

Работа с консолью браузера.

Основные HTML теги и таблицы стилей.

Табличная, блочная и эластичная (flex) компоновка элементов на странице.

Понятие форм. POST и GET запросы.

Передача данных JSON. Запросы HEAD OPTIONS PUT DELETE PATCH.

Базы данных.

Соединение с СУБД PostgreSQL и MySQL.

Работа сырыми SQL запросами, их преимущества и недостатки.

Типы связей один-к-одному, один-ко-многим, многие-ко-многим.

Работа с объектной проекцией баз данных. Django ORM.

Модель данных. Менеджеры модели. CRUD операции.

  • Перегрузка методов.

  • Сигналы модели.

Создание микросервисов на базе Flask.

Создание telegram бота с библиотекой telebot.

Создание telegram клиента с помощью telethon.

Работа с библиотекой pandas.

Сбор информации из сети.

Команда wget.

Библиотека requests. GET и POST запросы.

Использование куков и заголовков. Обходим защиты от ботов.

Парсим сайт с помощью BeautifulSoup.

Партим сайт с помощью scrapy

Создание вэб-приложений с использованием фреймворка Django.

Командный интерфейс.

Архитектура приложения. MVC. Роутинг. Представления. Шаблон.

Модель данных.

  • Типы полей.

  • Связи в таблицах.

  • Статические методы. Декоратор @staticmethod

  • Методы-свойства. Декоратор @property

  • Метод str.

Создание и использование миграций базы данных.

Создание собственных команд.

Система шаблонизации. Шаблонный синтаксис. Логика отображения.

Создание шаблонных тегов.

Создание фильтров.

  • Разделения проекта на приложения.

  • Примеры правильной архитектуры.

  • Обслуживание статических файлов.

Представления на базе функций.

Представления на базе классов.

Дженерики представлений. Классы CRUD операций их методы.

Передача данных методом POST и их обработка в представлении.

Формы. Их жизненный цикл, валидация. Наборы форм (formset).

Интернационализация уровня интерфейса (rosetta).

Интернационализация уровня СУБД (django-model-translator).

Командный интерфейс для интернационализации.

Библиотека gettext.

Работа с изображениями (django-thumbnail, sorl-thumbnail).

Фреймворк messages.

Фреймворк model types.

Работа с сессией.

Работа с куками.

Кастомизация админ-интерфейса.

Базовые возможности классов админ-интерфейса. Поиск, фильтр.

Пакет grapelli.

Разные шаблоны админ интерфейса.

Создание кастомных ссылок в списке.

Вывод изображений из полей модели.

Создание кастомных полей в форме.

Кастомизация и перегрузка шаблонов.

Кастомизация групповых действий.

Роли пользователей и кастомизация интерфейса по ролям.

База данных REDIS.

Назначение. Установка.

Извлечение, хранение и удаление данных.

Кэширование данных.

Создание терминального клинта.

Визуальный клиент.

Иерархические структуры данных на основе mptt.

Рендеринг дерева в шаблоне.

Решение типовых задач на Django.

Регистрация, авторизация.

Регистрация через соц. cети. Протокол oauth и инкапсуляция пакетом sotial-oauth

Активация через email. Пакет django-registration.

Редактирование профиля. Смена пароля.

Каталог товаров. Фильтр. Корзина пользователя.

Система коментариев.

Таггирование.

Система отложенных задач celery.

Уведомления на email.

Бекап данных.

Конвертирование изображений.

Конвертирование видео.

Конвертирование pdf документов.

Построение REST API на базе DRF (Django Rest Framework)

Стерилизаторы.

Роутинг.

Отображения на базе функций.

Отображения на базе классов модели.

Вьюсетты (наборы отображений для CRUD).

Парсеры.

Аутентификация по token. Пакет django-authtoken

Интерфейс swagger на базе библиотеки drf-yasg.

Решение типовых задач REST API:

авторизация, регистрация, доступы;

смена пароля;

интернационализация;

поиск;

сигналы;

логирование;

Тестирование.

Приемы эффективной разработки на Django.

Работа с локальным окружением проекта.

Использование миксинов моделей.

  • для связей;

  • для дат;

  • для мета тегов.

Пагинация списка записей.

Управление mime-type-ом.

Использование django-shell.

Использование классов middleware.

Отчеты об ошибках на email.

Использование cron для периодических задач.

Создание скрипта для автоматического деплоя при помощи fabric.

Работа с популярными форматами данных.

Обработка изображений с помощью Pillow и Imagemagic

Создание pdf документов.

Создание и чтение excel документов.

Создание документов Microfoft Word.

Обработка видео с библиотекой ffmpeg.

Работа с форматом csv.

Работа с форматом xml.

Работа с форматом json.

Работа с форматом yaml.

Работа по протоколу WebSocket.

Создание web-socket сервера на базе Tornado.

Библиотека socket.io.

Создание web-socket сервера на базе Django channels.

  • роутинг;

  • консьюмеры;

  • обработчики.

Решение типовых задач.

Отслеживание пользователей онлайн.

Создание многопользовательского чата.

Создание движка многопользовательской онлайн игры (шахматы, карты, аркада)

Приемы разработки клиентских сценариев на языке JavaScript.

Установка nodeJS и npm.

Основы синтаксиса JS и Typescript.

Манипуляция DOM с помощью библиотеки JQuery.

Построение компонентной структуры документа с помощью ReactJS.

AJAX запросы.

Сопутствующие технологии.

Контейнеризация приложений при помощи Doker.

Понятие образа и контейнера.

Сборка, настройка и запуск образа.

Создание образов для разных сервисов.

Управление образами.

Деплой образов.

Настройка удаленного сервера.

Работа с сервером по ssh протоколу.

Установка и настройка виртуального хоста nginx.

Установка и настройка Supervisor.

Установка ssl сертификата при помощи certbot.

Настройка доменного имени.

Управление поддоменами.

Бекап данных с помощью rsync.

Приемы разработки на основе тестирования TDD (Test Driven Development).

Модульное и функциональное тестирование.

Написание тестов для отображений.

Написание тестов для модели.

Написание тестов для шаблонов (selenium).

Тестовая загрузка данных

Включение тестов в интерфейс jenkins