Web-технологии

Осень 2019

Цель курса — всестороннее изучение устройства и принципа работы современных web приложений и сети WWW в целом, а также получение практических навыков web разработки. Акцент в курсе сделан на разработку серверного ПО, т.е. backend разработку.

По завершению курса студенты научатся разрабатывать web приложений на языке python, научаться использовать MVC фреймворки, получат опыт верстки HTML страниц с использованием CSS фреймворка Bootstrap. Помимо разработки студенты научатся устанавливать и настраивать web-сервера, проектировать модель данных с помощью ORM, получат навык отладки web приложений на всех этапах исполнения.

Подробнее

Курс web-технологии посвящен разработке web-приложений среднего масшатаба, иначе говоря сайтов. Курс является в большой мере обзорным и знакомит будущих web-разработчиков с широким спектром технологий и общими принципами работы web-приложений. По сути курс нужен для того, чтобы “погрузить” студентов в тематику web разработки и позволить им в дальнейшем сконцентрироваться на конкретных технологиях, не теряя из вида общую архитектуру.

Курс состоит из 8 лекционных и 7 семинарских занятий. Для успешной сдачи курса студентам необходимо самостоятельно разработать и сдать небольшой web-проект. Техническое задание выдается в начале курса. Заранее перед каждым семинаром студентам выдается домашнее задание. Каждое домашнее задание сопровождается описанием необходимых работ и разбалловкой.

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

Для успешной аттестации по данному курсу студентам необходимо набрать пороговый рейтинг — 40 баллов. При пересчете баллов студенты могут получить итоговую оценку: 0–39 неудовлетворительно, 40–59 удовлетворительно, 60–79 хорошо, 80–100 отлично.

Подробнее

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

Динар Сабитов Динар Сабитов

Выпускник Технопарка. Руководитель группы разработки игровой платформы my.games

Савва Демиденко Савва Демиденко

Выпускник Технопарка. Программист группы разработки игровой платформы my.games.


...


Подробнее

Николай Мелешенко Николай Мелешенко

Инженер-программист, занимаюсь разработкой games.mail.ru и games.my.com, а так же сопутствующих в...


Подробнее

Программа

занятие Часы в ауд. + сам. работа

Лекция №1: Архитектура Web-приложений. HTML.   + ДЗ №1

Понятие URL и документа. Абсолютные и относительные URL. Клиент-серверная архитектура. Основы HTML разметки.
Домашнее задание №1: Статическая верстка
Сверстать главную страницу проекта и страницу регистрации в статическом виде с использованием Twitter Bootstrap.
4 часа + 3 часа СР

Семинар №1: CSS. Верстка с использованием Bootstrap.  

CSS селекторы и стили. Приоритеты стилей и каскадирование. Позиционирование элементов. Использование Twitter Bootstrap. Разбор ДЗ1.
4 часа + 2 часа СР

Лекция №2: Сетевые протоколы. HTTP.  

DNS, TCP, TSL. Синтаксис HTTP запросов и ответов. Методы и коды ответа HTTP. Заголовки HTTP
4 часа + 3 часа СР

Лекция №3: Внутренняя архитектура web-сервера.   + ДЗ №2

Файлы и процессы сервера. Внутренняя архитектура сервера. Примеры конфигурации. Понятие location. Методы обработки сетевых соединений. Архитектура frontend - backend. Application сервера. Протоколы CGI, FastCGI, WSGI.
Домашнее задание №2: Обработка HTTP запросов
Спроектировать систему URL. Разработать необходимые view и шаблоны для отображения основных страниц. Реализовать логику входа и регистрации.
4 часа + 4 часа СР

Семинар №2: Routing и шаблонизация с использованием Django.  

Контроллеры в Django. Объекты HttpRequest и HttpResponse. Работа с HTTP заголовками в Django. Декораторы. Шаблонизация в Django. Разбор ДЗ2. Прием ДЗ1.
4 часа + 2 часа СР

Лекция №4: MVC Фреймворки.  

Компоненты MVC. Структура Django проекта. Конфигурация проектов. Маршрутизация URL. Контроллеры в Django. Объекты HttpRequest и HttpResponse. Работа с HTTP заголовками в Django. Декораторы. Шаблонизация в Django.
4 часа + 3 часа СР

Семинар №3: Работа с базой данных.  

Проектирование баз данных. Загрузка данных из базы. Создание и изменение объектов. Разбор ДЗ3. Прием ДЗ2.
4 часа + 3 часа СР

Лекция №5: СУБД и Django models.   + ДЗ №3

Работа с СУБД в Python. Работа с СУБД в Django. QuerySet. ModelManagers. Миграции баз данных
Домашнее задание №3: Работа с базой данных
Спроектировать базу данных проекта и наполнить ее тестовыми записями. Разработать view для отображения данных из базы.
4 часа + 2 часа СР

Контрольное занятие №1: Промежуточный показ проекта.  

Промежуточный показ проекта, сдача ДЗ 1 - 3.
4 часа + 4 часа СР

Семинар №4: Добавление данных.  

Описание форм в Django. Типы полей в формах Django. Валидация данных. Использование форм в контроллерах и шаблонах. CSRF. Разбор ДЗ4.
4 часа + 3 часа СР

Лекция №6: Типичные сценарии. Формы. Авторизация.   + ДЗ №4

Отображение страницы объекта. 404-страницы. Отображение списка объектов. Постраничное отображение. Progressive loading. GET и POST формы. Общий сценарий обработки форм. Перенаправления в HTTP. Basic HTTP Authorization. Механизм Cookie. Авторизация с использованием cookie.
Домашнее задание №4: Авторизация, Обработка форм
Реализовать основную логику сайта: добавления вопросов и ответов, используя Django Views и Django Forms. Необходимо учесть обработку и отображения ошибок ввода данных.
4 часа + 2 часа СР

Семинар №5: Авторизация в Django. AJAX в jQuery.  

Стандартные модели авторизации Django. Расширение модели пользователя. Стандартные контроллеры авторизации Django. AJAX запросы с использованием jQuery. Разбор ДЗ5. Прием ДЗ4.
4 часа + 2 часа СР

Лекция №7: AJAX. Real-Time-Messages. Cron. Кеширование.   + ДЗ №5 + ДЗ №6 + ДЗ №7

Сценарий проверки сессии. AJAX на стоне клиента. Особенности контроллеров для AJAX. Polling. Long-polling (comet). Server-push. WebSocket. Механизм обновления (Upgrade) соединений. Распределенный кеш Memcached. Выполнение offline cкриптов с помощью Cron.
Домашнее задание №5: Изображения и AJAX
Реализовать загрузку и отображение картинок в проекте. Используя технологию AJAX реализовать дополнительные действия пользователя: "лайки" вопросов, установку "правильного" ответа.
Домашнее задание №6: Настройка серверов
Подготовить структуру директорий проекта. Настроить nginx для отдачи статических файлов и проксирования запросов. Создать простейший WSGI скрипт. Измерить производительность полученной конфигурации.
Домашнее задание №7: Дополнительные функции
Используя mod_push, разработать доставку real-time сообщений о новых ответах. Используя кеширование в memcached и запуск скриптов по cron, реализовать информационные блоки "лучшие вопросы" и "лучшие пользователи".
4 часа + 3 часа СР

Семинар №6: Web-сервера. Создание рабочего окружения.  

Создание рабочего окружения. Настройка сервера. Разбор ДЗ6. Прием ДЗ5.
4 часа + 3 часа СР

Семинар №7: Дополнительные темы.  

Настройка кеширование в Django. Management commands в Django. Разбор ДЗ7. Прием ДЗ6.
4 часа + 2 часа СР

Контрольное занятие №2: Итоговое занятие. Экзамен  

На итоговом занятии студентам предстоит продемонстрировать и защитить проект
4 часа + 2 часа СР

Контрольное занятие №3: Пересдача  

На пересдаче студенты могут сдать задолженности по курсу.
4 часа + 1 часа СР