Skip to content
/ Web Public

Репозиторий курса Разработка Интернет Приложений

Notifications You must be signed in to change notification settings

iu5git/Web

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Разработка Интернет Приложений (РИП) 2023

Отчеты по лабораторным работам и ДЗ отправлять на почту aikanev@bmstu.ru

Образ виртуальной машины Linux Ubuntu 22.04 для выполнения заданий курса

Лекции

Лабораторные работы

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

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

Основной вариант лабораторных по бэкенду - это Django и Go. Но можно самостоятельно изучить и выполнять их на Java, C#, Rust и Node.js, но только при согласовании с лектором и при выполнении всех условий лабораторных работ. В этом случае обязательно требуется согласовать веб-фреймворк, шаблонизатор, ORM и способ авторизации. При развертывании выбирается один из двух вариантов: все три хранилища PostgreSQL, Minio, Redis разворачиваются через docker; либо вся серверная часть развернута в виртуальной машине Ubuntu 22.04. Для фронтенда один стек React+Redux+axios+React-Bootstrap.

Каждая лабораторная - это sprint, этап разработки по agile, под каждую отдельная именованная по теме ветка в git. Два обязательных репозитория у всех (бекенд и фронтенд) и еще два для дополнительных заданий ДЗ (мобильное приложение и асинхронный сервис). Каждая работа демонстрируется и защищается отдельно. При защите необходимо продемонстрировать работу приложения по своей теме, UML диаграмму из StarUML, репозиторий github с кодом и ответить на вопросы. По первому модулю необходимо также сделать ТЗ, а по второму отчет по курсу - РПЗ.

Лабораторные 2024

Лабораторная 1

  • Цель работы: выбор варианта-темы на весь курс, знакомство с разработкой бэкенда и разработка дизайна для 3 страниц
  • Порядок показа: Показать задание по вашей теме-варианту из списка внизу. Показать дизайн 3 страниц в Figma, показать что в приложении тоже самое. Показать сайт, откуда копировали дизайн, сказать, что скопировано и в CSS это перечислить. Показать три страницы приложения с поиском, при этом во вкладке Network для 3 запросов GET объяснить url: показать параметр фильтрации/поиска, а также id заявки и услуг. Для страницы списка услуг показать в HTML из Response: ид заявки, количество в корзине, url изображений из Minio. В коде показать где эти url в 3 шаблонах, и в 2 коллекциях. Показать роутинг: 3 url и три контроллера для них, объяснить реализацию фильтрации/поиска.
  • Контрольные вопросы: MVC, Django, шаблонизация, HTTP и модель OSI, Web, HTML
  • Задание: создание дизайна приложения в figma, базовая шаблонизация в Django (для Go просто HTML) для услуг, развертывание Minio

Требуется разработать дизайн трех страниц приложения в figma, повторив при этом стилистику уже существующего популярного ресурса, связанного с вашей темой. Данные по теме также нужно искать реальные.

Создание базового интерфейса, состоящего из трех страниц. Первая для просмотра списка услуг (отели, товары, рейсы и тд) в виде карточек (плиткой в 2-4 столбца) с наименованием, ценой и картинкой, а также отдельным элементом-карточкой текущей заявки (корзина) с указанием количества услуг в ней. Это количество вычисляется в контроллере-обработчике. При клике по карточке происходит переход на вторую страницу с подробной информацией об услуге (даты, описание и тд). А при нажатии на текущую заявку по ее id открывается страница просмотра состава заявки, в которой есть поля самой заявки, список карточек услуг в 1 широкий столбец и поле м-м для каждой из них. В header приложения добавить только кнопку/иконку Домой, она для навигации на страницу услуг.

Добавить поле input для фильтрации на сервере списка услуг по одному из полей (наименование, цена, дата события), отображаемых на странице (по умолчанию отображать все). Поле поиска должно сохраняться после запроса. Всего в приложении должно быть 3 GET запроса и две модели-коллекции. Все данные для обеих страниц нужно брать прямо из двух коллекций (массива услуг и словаря заявки), без использования БД. Никакого редактирования, только поиск и просмотр. Без JavaScript

В приложении должны быть использованы стили, для каждого элемента списка подгружается свое изображение. Изображения услуг отображатся на всех трех страницах. Изображения хранятся в Minio, наименование изображение совпадает с id услуги, но хранится в модели отдельным полем. Разработать стиль приложения, который будет применяться далее в последующих лабораторных по фронтенду. CSS вынести в отдельный файл.

Лабораторная 2

  • Цель работы: разработка структуры базы данных и ее подключение к бэкенду
  • Порядок показа: показать панель администратора Django/adminer, в которой добавить новую услугу, посмотреть данные через select в БД. Показать 3 страницы приложения: выполнить поиск, удалить заявку, добавить две услуги в заявку (изменение карточки корзины), содержимое заявки. Показать в БД запросом результаты логического удаления и новую заявку. В коде показать модели, составной уникальный ключ м-м, 4 контроллера через ORM, а удаление заявки через SQL UPDATE.
  • Контрольные вопросы: виды БД, SQL запросы, курсоры, ORM, модель и миграции, чистая архитектура
  • ER диаграмма: сделать в StarUML; таблицы, связи, столбцы, типы столбцов и их длина, первичные, внешние ключи
  • Задание: Создание базы данных PostgreSQL по теме работы, подключение БД к созданным трем шаблонам

Необходимо разработать структуру БД по выбранной теме и ее реализовать с учетом требований ниже. Использовать таблицу услуг в страницах разработанного приложения. Наполнить таблицы БД данными через админку Django или Adminer.

Получение и поиск услуг, добавление услуги в текущую заявку (статус черновик она же "корзина"), а также просмотр этой заявки сделать через ORM. Для страницы текущей заявки добавить кнопку логического удаления заявки (статус меняется на удален) с помощью выполнения SQL запроса UPDATE, без ORM. Всего пять HTTP методов: три GET и один POST добавления в заявку через ORM, еще один POST для удаления заявки через SQL.

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

Требования к БД:

Обязательно наличие 4 таблиц:

  • услуг (наименование, описание, статус удален/действует, url к изображению, поля по предметной области)
  • заявок (статус, дата создания datetime, дата формирования datetime, дата завершения datetime, создатель и модератор, поля по предметной области)
  • м-м заявки-услуги (составной уникальный ключ, дополнительные поля количества/порядка/главный/другое)
  • пользователей (для Django обязательно использовать системную таблицу, НЕ свою: логин, пароль, признак модератора)

Обязательно наличие 5 или более статусов заявок: черновик, удалён, сформирован, завершён, отклонён. У каждого пользователя не более одной заявки в статусе черновик. Названия таблиц и их полей должны соответствовать предметной области. Одно из доп. полей заявки или м-м рассчитывается при завершении заявки.

Лабораторная 3

  • Цель работы: создание веб-сервиса в бэкенде нашей системы для использования его в SPA
  • Порядок показа: Через insomnia/postman выполнить GET списка заявок (отфильтровать по дате формирования и статусу), выполнить GET списка услуг (с фильтром), удалить введенную заявку (если есть), добавить новую услугу с картинкой, добавить услугу в заявку, добавить другую услугу, список услуг с заявкой-черновиком, посмотреть заявку (из 2 услуг), подтвердить введенную заявку (показать ошибку), сформировать заявку, зарегистрировать нового пользователя. Показать измененные данные через select, объяснить модели, сериализаторы.
  • Контрольные вопросы: веб-сервис, REST, RPC, HTTP, OSI ISO
  • Диаграмма классов с детализацией бэкенда (домены методов по url с интерфейсами, перечислить все методы, модели, таблицы БД) + insomnia/postman. Связи у моделей сделать по коду, 3 варианта: методы используют разные модели, модели используют другие модели, модели используют несколько таблиц
  • Задание: Создание веб-сервиса со всей итоговой бизнес логикой (кроме авторизации), подключение его к БД и тестирование в insomnia/postman

Создание веб-сервиса для получения/редактирования данных из вашей БД. Требуется разработать все методы для реализации итоговой бизнес логики вашего приложения. Для изображений услуг использовать Minio.

Требования к веб-сервису

Методы и url в API должны соответствовать REST. Для списка услуг (как в 1 лабораторной) и заявок (по статусу и диапазону даты формирования) нужно предусмотреть фильтрацию на бэкенде. Взаимодействие с БД через ORM. Не делать POST заявки. Записи в статусе удален на клиент не передаются.

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

Домен услуги:

  • GET список. В списке услуг возвращается id заявки-черновика этого пользователя для страницы заявки в статусе черновик
  • GET одна запись
  • POST добавление
  • PUT изменение
  • DELETE удаление. Удаление изображения встроено в метод удаления услуги
  • POST добавления в заявку-черновик. Заявка создается пустой, указывается автоматически создатель, дата создания и статус, остальные поля указываются через PUT или смену статуса
  • POST добавление изображения. Добавление изображения по id услуги, старое изображение заменяется/удаляется

Домен заявки:

  • GET список (кроме удаленных и черновика, модератор и создатель через логины)
  • GET одна запись (поля заявки + ее услуги). При получении заявки возвращется список ее услуг с картинками
  • PUT изменение доп. полей заявки
  • PUT сформировать создателем. Происходит проверка на обязательные поля
  • PUT завершить/отклонить модератором. При завершить/отклонении заявки проставляется модератор и дата завершения. Одно из доп. полей заявки или м-м рассчитывается при завершении заявки (вычисление стоимости заказа, даты доставки в течении месяца, вычисления в м-м).
  • DELETE удаление

Домен м-м:

  • DELETE удаление из заявки
  • PUT изменение количества/порядка/значения в м-м

Домен пользователь:

  • POST регистрация
  • PUT пользователя (личный кабинет)
  • POST аутентификация
  • POST деавторизация

Лабораторная 4

  • Цель работы: Завершение бэкенда для SPA
  • Порядок показа: выполнить авторизацию через swagger в режиме инкогнито, получить список заявок в swagger; использовать содержимое куки/localStorage+authorization из браузера для заголовков остальных запросов через insomnia/postman. Далее в insomnia/postman выполнить GET списка заявок: 401/403 для гостя, для создателя только его заявки. Выполнить PUT завершения заявки: для создателя 403 статус, для модератора успех и обновление полей. Выполнить GET списка заявок - для модератора все заявки. Показать содержимое Redis
  • Контрольные вопросы: куки, сессия, redis, jwt, авторизация, аутентификация
  • Sequence диаграмма: весь набор HTTP запросов по бизнес-процессу без БД и нативного приложения: аутентификация, список услуг без черновика, добавление услуги в заявку, еще раз список услуг с черновиком, просмотр черновой заявки, формирование заявки, обращение к асинхронному сервису и обратно, список заявок с данными от асинхронного. Добавить домены в качестве Lifeline, при добавлении сообщений выбирать методы доменов из диаграммы классов, передавать ключевые входные и выходные данные через arguments в скобках у Message
  • Задание: Добавление авторизации и swagger в веб-сервис, подготовка ТЗ

Реализовать методы бэкенда для аутентификации и регистрации. Авторизация через хранение сессий и куки. Автозаполнение пользователя в таблице заявок при создании новой. Добавить описание методов для swagger.

Добавить проверку Permissions для методов модератора. Без авторизации в Swagger должно быть доступно только чтение-получение данных через API, с авторизацией - методы пользователя, а для модератора доступны все методы.

Вместе с 4 лабораторной сдается текущий комплект документации, который требуется оформить в виде .doc:

  • титульный лист РПЗ
  • 3 диаграммы оформить как рисунки в РПЗ
  • ТЗ как приложение к РПЗ

Состав ТЗ на итоговую систему (использовать сплошную нумерацию внутри пунктов):

  1. цель
  2. назначение - краткое описание для чего, кто работает в системе
  3. задачи - 12 задач (8 лабораторных-задач по бекенду/фронтенду, нативное приложение, демо в Pages, документация, репозиторий Git) с указанием ваших технологий по каждой задаче
  4. Функциональные требования - список HTTP методов, далее список окон и какие действия для каких групп пользователей доступны. Указать, какие методы бэкенда при этом вызываются. Всего 14 подпунктов - HTTP методы, меню и 12 страниц приложения:
  • гость: регистрация, аутентификация, главная, список услуг, одна услуга, 403 и 404

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

  • модератор: список услуг таблицей, редактирование/создание услуги

  1. требования к аппаратному обеспечению для сервера и клиента
  2. требования к программному обеспечению с версиями для серверных компонентов и для клиента

Лабораторная 5

  • Цель работы: Разработка базового SPA на React
  • Порядок показа: Показать три страницы фронтенда с mock без запущенного сервиса. Далее показать страницы фронтенда с бэкендом, внести изменения в БД, показать их во фронтенде. Объяснить код компонентов для фильтрации, передаваемые props, хуки, вызовы fetch.
  • Контрольные вопросы: react, props, компонент, элемент, состояние, хуки, жизненный цикл компонента
  • Диаграмма классов с детализацией бэкенда и фронтенда: добавить методы авторизации, фронтенд разделить на страницы, добавить у страниц зависимость от API.
  • Задание: Разработать три страницы фронтенд приложения на React, TS и подключить его к веб-сервису

Разработать базовый интерфейс приложения на React для гостя, аналогичный двум страницам из лабораторной работы №1 для просмотра услуг, а также сделать главную (стартовую) страницу со статическим описанием. При этом на странице списка услуг должны быть все необходимые фильтры (по диапазону дат, названию, цене) с фильтрацией на бэкенде. Использовать компоненты React-Bootstrap. Для карточек предусмотреть изображение по-умолчанию, если поле в услуге пустое.

В приложении должны быть навигационная панель navbar для списка базовых страниц, а также самописная навигационная цепочка breadcrumbs, где отображается путь от базовой страницы к текущей. В этой лабораторной никакого Redux, а Context вообще в курсе использовать нельзя.

Содержимое карточек получать из веб-сервиса лабораторной №3. Ajax-запросы написать самостоятельно через fetch. Ограничение с CORS решить через проксирование React. В методах fetch предусмотреть получение данных из коллекции с mock-объектами при отсутствии доступа к вашему бэкенду.

Лабораторная 6

  • Цель работы: Внедрение адаптивности и развертывание приложения
  • Порядок показа: Открыть GitHub Pages с mock на телефоне, сохранить PWA. Открыть PWA, применить фильтрацию услуг, перейти на главную и вернуться, чтобы показать старое значение фильтра. Перейти в адаптивный режим браузера, поменять ширину. Объяснить настройки для размера карточек, количества колонок и тд - показать конкретные значения размера и количества колонок, карточек. На компьютере показать подключение Tauri к бэкенду по IP локальной сети (не localhost), сравнить IP сервера из консоли и в коде приложения. Отредактировать услуги в БД и продемонстрировать изменение в Tauri.
  • Контрольные вопросы: схема redux, reducer, store, PWA, Tauri
  • Deployment диаграмма все узлы и компоненты системы: фронтенда, web-сервера со статикой, веб-сервиса, базы данных и других хранилищ и тд. Узлы соединить протоколами, компоненты фронтенда и бэкенда поместить в узлах, указать API между ними.
  • Задание: Внедрить менеджер состояний для хранения значений фильтров, добавление адаптивности и PWA, создание Tauri и развертывание в Pages

Добавление менеджера состояний Redux Toolkit для хранения фильтра заявок и услуг. Необходимо развернуть фронтенд на GitHub Pages и добавить возможность работы в режиме PWA. Добавить адаптивность для трех страниц приложения.

Создание простого нативного приложения на Tauri для интерфейса гостя (без авторизации и редактирования), состоящий из 3 страниц с фильтрацией и картинками. Подключить приложение к разработанному API через IP адрес в локальной сети (не localhost).

Лабораторная 7

  • Цель работы: Завершение интерфейса пользователя в React
  • Порядок показа: показать авторизацию, добавление и формирование заявки в режиме разработчика. Показать авторизацию в браузере, использовать содержимое localStorage/cookie чтобы показать заявки пользователя в insomnia/postman. Пояснить в коде использование redux и axios, показать применение сгенерированного кода фронтенда из swagger.
  • Контрольные вопросы: схема redux, reducer, store, контекст, axios
  • Activity диаграмма/BPMN для итогового бизнес-процесса для ДЗ: описание бизнес-процесса, разделение на дорожки по ролям двух пользователей и выделенного сервиса, действия соответствуют операциям пользователей в вашей системе.
  • Задание: Добавить авторизацию и возможность оформления заявок во фронтенд через Redux Toolkit, кодогенерация взаимодействия с API через Axios

Добавить страницы для регистрации и авторизации. Добавить страницу для просмотра списка заявок пользователя в виде таблицы. Добавить в меню пункты для новых страниц. Добавление в Redux Toolkit состояния интерфейса после авторизации. В приложении должно быть реализовано переключение между интерфейсом гостя и интерфейсом пользователя по кнопке Вход/Выход. После авторизации в меню должно отображаться Имя/Логин пользователя. При выходе должно сбрасываться содержимое конструктора новой заявки, а также фильтры пользователя. Добавить страницу личного кабинета пользователя для сброса пароля и др полей.

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

Для обращений к методам веб-сервиса использовать axios. При выполнении запросов отображать на странице анимацию.

Лабораторная 8

  • Цель работы: Внедрение Real-time web
  • Порядок показа: Показать два окна в режиме разработчика (в разных браузерах, либо в одном, но одно окно через Инкогнито) - для пользователя показать услуги, а для модератора список заявок за сегодня. Создать заявку в интерфейсе пользователя, сформировать и показать ее у модератора. Завершить заявку и отредактировать список услуг.
  • Контрольные вопросы: любые вопросы по реализации интерфейса модератора
  • Диаграммы: диаграмма состояний для статусов заявок и диаграмма прецедентов.
  • Задание: Реализовать интерфейс модератора

Необходимо добавить в приложение React интерфейс модератора, доступный после его авторизации и имеющий следующие отличия:

  • Новое окно редактирования услуг, список услуг отображается таблицей. Доступно добавление новых услуг (обязательные и необязательные поля), редактирование, удаление.
  • Добавить статические страницы 403 и 404
  • В окне списка заявок доступны кнопки для смены статуса заявок. Также есть поля фильтрации по диапазону даты формирования (только даты, без времени) и статусу заявок на стороне бэкенда. Фильтрация по создателю заявки на фронтенде.
  • Окно списка заявок переделать на short polling чтобы отображать актуальные статусы.

Домашнее Задание

  • Отчет: отчет необходимо отправить на почту aikanev@bmstu.ru. Оценивается раскрытие предметной области в описании и приложении, корректность оформления отчета.
  • Диаграммы: Актуализировать все диаграммы из лабораторных, все диаграммы должны соответствовать реализованной вами системе. Все диаграммы должны быть читаемые, шрифт на них должен не отличаться по размеру от шрифта текста отчета.
  • Задание: подготовить итоговый отчет, дополнительные задания

Отчет-РПЗ по курсу:

ГОСТ (1.5 интервал, 1.25 см отступ, 14 пт и тд) - Требования по оформлению. Отчет обязательно проверить через программу TestVKR.

  1. Введение (актуальность с цифрами и датами, цель, назначение, нефункциональные требования, задачи)
  2. Бизнес-процесс. Описание предметной области на примере конкретной компании/подразделения с названиями должностей и ссылками по теме. Диаграмма прецедентов, диаграмма состояний и деятельности/BPMN (>300 слов)
  3. Архитектура. Диаграммы развертывания, ER с назначением таблиц и диаграмма классов с детализацией бэкенда и фронтенда (>300 слов)
  4. методы веб-сервиса таблицей с группировкой по доменам: №, метод, url, описание, входные, выходные данные с названиями полей и типами
  5. Алгоритмы. Диаграмма последовательности HTTP запросов (>300 слов)
  6. Описание интерфейса. Перечень окон, их назначение и выполняемые пользователями действия (>300 слов)
  7. Заключение. Перечень выполненных задач и достигнутые результаты. Ссылки на GitHub Pages и GitHub бэкенда (в README краткое описание проекта и ссылки на Pages и другие репозитории).
  8. Список использованных источников Минимум 2 по теме и 5 по технологиям
  9. Приложение. Техническое задание

Дополнительные задания ДЗ (каждое +2 балла)

Индексы в БД

  • Порядок показа: показать пагинацию с фильтрацией по индексу в React-приложении. Включить и отключить индекс - показать отличие во времени запроса.

Добавить в БД большое количество (> 100000) услуг или заявок соответственно + реализовать пагинация на фронтенде и ограничение количества в методе бэкенда.

Создание мобильного приложения

  • Порядок показа: Показывать на телефоне, отредактировать услуги в БД и продемонстрировать изменение в нативном приложении, показать поиск и переход в Подробнее. В коде показать реализацию фильтрации и IP в локальной сети
  • Контрольные вопросы: виды нативных приложений и отличие от web-приложений, react-native, pwa, tauri
  • Задание: Создание приложения для гостя на iOS/Android/Qt/React-native и подключение к веб-сервису

Создание простого нативного приложения для интерфейса гостя (без авторизации и редактирования), состоящий из 2 страниц с фильтрацией и картинками. Подключить приложение к разработанному API через IP адрес в локальной сети.

Межсервисное взаимодействие и асинхронность

  • Порядок показа: вызвать через insomnia GET списка заявок, затем http-метод асинхронного сервиса, показать что в GET списка заявок появился результат с задержкой, потом вызвать новый метод основного сервиса с ключом, чтобы изменить результат
  • Контрольные вопросы: grpc, асинхронность, веб-сервис
  • Задание: Создание асинхронного сервиса для отложенного действия (вычисление, моделирование, оплата и тд)

Требуется разработать второй простой асинхронный сервис на другом языке (кто делал на Django - Go и наоборот) с одним http-методом для выполнения отложенного действия в вашей системе (вычисление, моделирование, оплата и тд). Действие выполняется с задержкой 5-10 секунд, результат сервиса случайный, например успех/неуспех (но записывается всегда - не путать с ошибкой программы), достаточно в результате обновить одно поле в заявке/м-м. При создании заявки это поле пустое.

В исходном веб-сервисе также необходимо добавить http-метод для внесения результатов. Асинхронный сервис взаимодействует с основным через http, без прямого обращения в БД. Добавить псевдо авторизацию в методе основного сервиса - передавать как константу какой-нибудь ключ-токен, например на 8 байт, и через if просто проверять на совпадение это поле.

💡 Для тех, у кого в асинхронно заполняются поля в м-м, а не в заявке

Необходимо добавить в GET списка заявок одно поле, которое равно количеству записей м-м, в которых рассчитываемое поле пустое. Таким образом, при формировании заявки этот столбец будет равен 0. А когда асинхронный сервис заполнит результаты в м-м, в этом поле или сразу, или постепенно возрастет количество до количества м-м. Сами результаты можно увидеть на странице самой заявки.

Темы индивидуальных заданий (для повышения оценки)

  1. Автоматическое тестирование вашего сервиса через Python - автотесты методов API
  2. Полноценное нативное приложение - интерфейс модератора или клиента с авторизацией
  3. Заказ без авторизации через redis
  4. Черновик-заявки через redux и 5 запросов-событий которые меняют это состояние: одобрение, удаление заявки, добавление в заявку, авторизация и деавторизация
  5. Ролевая модель через несколько кастомных таблиц
  6. Список услуг кешировать в redis
  7. Сделать дашборд со статистикой заявок по месяцам и прирост новых услуг/заявок/клиентов
  8. Атрибуты услуги через вертикальную таблицу атрибутов: список атрибутов в отдельной таблице, а значения через вторую м-м
  9. Запрос прав модератора при регистрации и окно подтверждения запросов в отдельной странице у модераторов.

Темы методических указаний для детализации

  • методичка по https://pixso.net
  • про установку Python, JS, а также докер на разные OS
  • Для 2 лабораторной. Подробнее про миграции Django. Примеры работы с моделями с получением заявки и ее услуг. Составной PK в м-м
  • по Golang 2 лабораторная расписать примеры работы с ORM и тд, как в ролике
  • Для доп. задания. Работа с индексами и пагинацией (в бэкенде и фронтенде)
  • на арабском 1 лабораторная и на китайском 5 лабораторная работы

Темы 2023:

Удаленные вычисления

  1. Система заявок на вычисления: факториал, НОД и тд. Услуги - виды вычислений, заявки - запрос с входными данными и результатами.
  2. Аналитическое моделирование потоков в метро Услуги - станции и др объекты для моделирования, заявки - запрос с входными данными и результатами.
  3. Аналитическое моделирование загруженности сетевого оборудования Услуги - виды моделирования по оборудованию, заявки - запрос с входными данными и результатами.
  4. Статистические расчеты. Услуги - статистические величины (мат ожидание, дисперсия и тд), заявки - данные для расчетов с результатом
  5. Шифрование кодом с обнаружением ошибок. Услуги - данные, заявки - запросы на шифрование/расшифровку с результатом обнаружения ошибки
  6. Шифрование кодом для коррекции ошибок. Услуги - данные, заявки - запросы на шифрование/расшифровку с результатом коррекции ошибки
  7. Прогноз погоды. Услуги - виды данных (температура, давление, влажность), заявки - запросы на предсказание погоды через авторегрессию
  8. Булевы функции. Услуги - булевы функции, заявки - заявки на вычисления
  9. Применение фильтров к изображению. Услуги - типы операций (изменение яркости, контраста и тд), заявки - заявки для применения преобразований к изображению.
  10. Расчет платежа по ипотеке. Услуги - виды расчета (страховка, ежемесячные платежи, аннуитет или равными долями), заявки - заявки на расчет
  11. Расчет квартплаты. Услуги - набор показателей, заявки - расчет по каждой квартире
  12. Солнечная энергия. Услуги - устройства для частных домов (солнечные батареи, аккумуляторы), заявки - расчет генерации и сбережения для указанного набора устройств и широты

Малый бизнес

  1. Система заявок для поваров в быстром питании на приготовление. Услуги - виды блюд с указанием поваров, заявки - заказ на приготовление блюд.
  2. Рецепты автоматического приготовления кофе. Услуги - ингридиенты, заявки - рецепты кофе
  3. Заявки от коллцентра мелкого бизнеса: менеджер-создатель заявки, исполнитель+курьер. Услуги - услуги данного бизнеса, заявки - заявки от клиентов на услуги.
  4. Продажа очков. Услуги - свойства линз, заявки - заказы от покупателей на линзы
  5. Книжное издательство. Услуги - работы издательства (печать, брошюрование и тд), заявки - заказы на издание книги
  6. Размещение товаров на маркетплейсе. Услуги - категории товаров, заявки - заявки от продавцов на размещение товара
  7. 2НДФЛ. Услуги - набор кодов для отчислений, заявки - справки 2 НДФЛ за месяц
  8. Бухгалтерский баланс компании. Услуги - добавочный капитал, заемные средства и тд, заявки - отчетность компании по показателям
  9. Кафе с разделением счета. Услуги - меню кафе, заявки - состав заказа с номером гостя по каждой позиции и генерацией QR-кода заказа

Компьютерные игры

  1. Карточная игра Эволюция. Услуги - карты Эволюции, заявки - карточные ходы соперников в игре
  2. Автоматический подбор игроков для игры. Услуги - карты, игровые локации, заявки - список карт участника в порядке его приоритета
  3. Dungeons & Dragons. Услуги - игровые персонажи, заявки - локации с указанием списка персонажей на ней

Химическое производство

  1. Оборудование для химических лабораторий. Услуги - лабораторное оборудование, заявки - заявки на приобретение
  2. One-pot синтезы. Услуги - исходные вещества, заявки - проведение синтеза при заданных условиях с расчетом выхода вещества из исходников
  3. Производство косметики. Услуги - вещества для производства, заявки - виды косметики с указанием состава
  4. Производство лекарств из готовых веществ. Услуги - действующие и др вещества, заявки - составляющие лекарств
  5. Производство красок из красителей. Услуги - готовые красители и др вещества, заявки - виды красок (батик, гуаш) по цветам
  6. Периоды полураспада. Услуги - радиоактивные изотопы, заявки - расчет количества оставшегося вещества за указанный период

Производство

  1. Система заявок на производстве. Услуги - используемые программы станков с ЧПУ, заявки - заказ на изготовление детали
  2. Продажа авиазапчастей для бизнес-джетов. Услуги - авиазапчасти, заявки - заявки на приобретение комплектующих.
  3. Поставки комплектующий для производства электроавтомобилей. Услуги - комплектующие, заявки - заявки от завода по сборке к заводам комплектующих
  4. Поставки деталей для сборки CubeSat. Услуги - детали для CubeSat, заявки - заявки на сборку CubeSat
  5. Склад комплектующих. Услуги - список комлектующих для хранения с размером для места, заявки - заявки на доставку и отгрузку комплектующих
  6. Кораблестроительная программа. Услуги - классы кораблей, заявки - заказ кораблей от государства
  7. Фаблаб. Услуги - виды проводимых работ на фаблабе, заявки - заказы на печать микроэлектроники
  8. Разработка месторождений. Услуги - виды работ по разработке (бурение, геологоразведка), заявки - этапы освоения месторождений
  9. Заказ на постройку самолета. Услуги - комплектация самолета, заявки - производство пассажирского самолета
  10. Техприемка авиадвигателей. Услуги - состав партии двигателей, заявки - этапы приемки
  11. Сборка ракетоносителей Ангара разных типов. Услуги - комплектующие, блоки, двигатели для разных типов ракет Ангара. заявки - заявка на производство ракетоносителя

Электронные услуги

  1. Визовый центр РФ - заявки на визы. Услуги - виды виз, заявки - заявки на получение нужной визы.
  2. Автоматический контроль паспортов на границе. Услуги - паспорта, которые заведены в системе, заявки - факты пересечения границы по паспорту
  3. Банковские счета. Услуги - банковские договоры РКО, зарплатный проект, эквайринг, заявки - открытие новых счетов для банковских договоров с указанием основного договора для счета
  4. Заявки на изготовление документов при смене фамилии. Услуги - виды документов для замены, заявки - заявка на замену с указанием новой фамилии и причины
  5. Электронная таможня. Услуги - виды товаров, ценностей, валют для провоза, заявки - заявки для декларирование провозимых товаров.
  6. Регистрация новых препаратов. Услуги - список болезней для лечений препаратом, заявки - заявки на регистрацию нового препарата
  7. Регистрация новых видов животных. Услуги - места обитания животных, заявки - заявки на открытие нового вида с указанием рода
  8. Сервис для самозанятых. Услуги - виды предоставляемых услуг заявки - заявка на регистрацию замозанятого с указанием ФИО, деятельности и др данных
  9. Сбор средств на реконструкцию исторических зданий. Услуги - виды работ по реконструкции заявки - заявки на реконструкцию и сбор средств
  10. Электронное голосование. Услуги - варианты названий для объектов города, заявки - результаты голосования
  11. Заявка на проведение тендера. Услуги - участники тендера, заявки - статусы тендера
  12. Договоры банка. Услуги - набор услуг банка, заявки - заявка на подключение к обслуживанию
  13. Чаты. Услуги - чаты, заявки - отправка сообщений (м-м сообщений-заявок для ответов вместо м-м к услугам)
  14. Групповая отправка файла в мессенджере. Услуги - получатели, заявки - процесс отправки файла
  15. Регистрация участников на спортивное соревнование. Услуги - участники, заявки - заявка для команды на участие
  16. Банкомат. Услуги - различные виды купюр, заявки - операции внесения/снятия наличных
  17. Удаленная поддержка. Услуги - виды происшествий, заявки - обращения от пользователей
  18. Счетчики воды. Услуги - разные адреса, заявки - фиксация показаний от счетчиков
  19. Карточки для изучения иностранных языков. Услуги - карточки слов с переводом и примерами использования, заявки - набор карточек для изучения в нужный день
  20. Библиотека коротких семплов (TikTok). Услуги - библиотека коротких семплов без воспроизведения, заявки - публикация пользователя с указанием используемых семлпов и их таймкодов
  21. Публикация-история. Услуги - разные элементы истории (упоминание, локация, текст), заявки - публикации с указанием элементов и их содержимого
  22. Удаленное заселение в апарт-отель. Услуги - апартаменты отеля и услуги отеля (завтраки, парковка), заявки - заселение клиента с указанием апартаментов и услуг отеля
  23. Кешбэк за покупки. Услуги - категории с процентом кешбэка, заявки - ежемесячные сводки по каждому клиенту с разбивкой трат по категориям с расчетом величины кешбэка
  24. Фильмотека. Услуги - библиотека фильмов, заявки - история просмотров пользователя за сутки и временем фильма, на котором остановился просмотр

ИТ услуги

  1. Консалтинг по ИТ безопасности. Услуги - виды консалтинга, заявки - заявки на проведение консалтинга
  2. Обслуживание ИТ инфраструктуры. Услуги - виды проводимых работ, заявки - заявки по настройке сетевого оборудованию, виртуалки и тд
  3. Мониторинг ИТ угроз. Услуги - виды угроз, заявки - факты возникновения угроз в подразделении компании
  4. Сайт КТС. Услуги - виды разработки, заявки - заявки от заказчиков
  5. Аренда виртуальных машин. Услуги - тарифы на аренду, заявки - заявки на аренду кластера машин
  6. Заявки на подключение провайдера. Услуги - виды работ по подключению (аренда оборудования, белый IP, подключение дома/кабель), заявки - заявка от клиента на подключение
  7. Заявки на установку серверного ПО. Услуги - программное обеспечение, заявки - заявки от сотрудников
  8. Создание датацентра. Услуги - комплектующие, аппаратное обеспечение, заявки - процесс создания датацентра
  9. Голосовой помощник. Услуги - доступные действия помощника, заявки - интенты пользователя

Транспорт

  1. Заявки контроля маршрута беспилотных летательных аппаратов. Услуги - районы города, заявки - заявки на пролет объекта в данной районе в определенное время.
  2. Контроль нарушений ПДД самокатами и др средств индивидуальной мобильности с двигателем. Услуги - виды нарушений и штрафы для них, заявки - факты нарушения из средств фиксации
  3. Приобретение абонементов на общественный транспорт. Услуги - виды абонементов на различный транспорт, заявки - приобретение абонементов на карту
  4. Проезд по транспортной карте 90 минут. Услуги - маршруты транспорта, заявки - проезд по транспортной карте в 90 минут с указанием маршрута транспорта
  5. Заявки на стоянку судна в порту. Услуги - конкретные корабли, заявки - заявки на нахождение корабля в данному порту.
  6. Севморпуть, заявки на проводку ледоколами. Услуги - транспортные корабли ледового класса, заявки - заявки на проводку кораблей ледоколом с указанием начальной и конечной точки проводки.
  7. Логистика контейнеров. Услуги - список контейнеров с указанием груза, заявки - заявка на перевозку со списком контейнеров и транспортным средством
  8. Платная дорога. Услуги - участки платной дороги, заявки - оплата и проезд
  9. Авиарейсы. Услуги - авиакомпании, заявки - авиарейсы с указанием отправки, назначения
  10. Страховка на автотранспорт. Услуги - водители в страховке, заявки - заявка на оформление страховки
  11. Регистрация авиабагажа. Услуги - единицы багажа с кодами, заявки - доставка багажа с делением по рейсам
  12. Зарядные станции электромобилей. Услуги - список зарядных станций, заявки - дневные отчеты с объемом электропотребления станций

Космос

  1. Заявки на доставку грузов на Марс на Starship. Услуги - товары, доставляемы на Марс на Starship, заявки - заявки на конкретный объем товаров
  2. Учет перелетов Starship между земными космодромами. Услуги - конкретные космические корабли, заявки - заявки на перелет кораблей между площадками
  3. Отчеты по добыче ресурсов (вода, углекислый газ, гелий и тд) на Луне. Услуги - добываемые ресурсы, заявки - месячные отчеты об объеме добычи в конкретном месте Луны
  4. Заявки на переходы космических аппаратов на различные орбиты. Услуги - доступные орбиты, заявки - заявки на переход спутников на орбиту.
  5. Автоматические межпланетные станции (АМС). Услуги - космические объекты, заявки - космические полеты АМС к этим объектам.
  6. Станции на поверхности Марса. Услуги - географические объекты на поверхности Марса (кратеры, плато), заявки - автоматические марсианские станции и марсоходы с маршрутом, успех/потеря/работает
  7. Запуск спутников с космодрома Восточный. Услуги - имеющиеся заявки на доставку КА на орбиту, заявки - полет ракеты-носителя с указанной полезной нагрузкой
  8. Астрономия для астрологов. Услуги - планеты, заявки - присутствие в созвездии указанных планет в данное время
  9. Анализ реликтового излучения. Услуги - анализируемые спектры, заявки - космические аппараты для анализа реликтового излучения
  10. Полеты к Gateaway. Услуги - модули станции Gateaway и космические корабли, заявки - миссии с указанием состава и цели
  11. Полеты Orion. Услуги - астронавты, заявки - полет с указанием назначения, командира и команды
  12. Mars Sample Return Mission. Услуги - гильзы-пробирки с грунтом от Perseverance, заявки - миссии Mars Sample Return Mission с указанием гильз
  13. Грузовые корабли к МКС. Услуги - грузы для доставки на МКС, заявки - полеты грузовых кораблей к МКС
  14. Объекты на карте. Услуги - теги видов объектов, заявки - объекты на карте с указанием местоположения и тегов

МГТУ

  1. Технадзор строительных объектов МГТУ. Услуги - строящиеся здания в кампусе МГТУ, заявки - проверки технадзора данных строек
  2. Мероприятия музея МГТУ. Услуги - виды проводимых в музее мероприятий, заявки - заявки для групп на данные мероприятия
  3. Бронирование аудиторий МГТУ. Услуги - аудитории МГТУ, заявки - заявки на бронирование аудиторий под проводимое мероприятие
  4. Парковка МГТУ. Услуги - парковки МГТУ, заявки - заявки на пропуск/абонементы автомобилей на парковки
  5. Запись на спортивные курсы МГТУ. Услуги - еженедельные группы по курсам, заявки - запись на группы
  6. Сайт конференции. Услуги - авторы статей, заявки - заявка на публикацию статьи
  7. ~~Проведение митапов по ИИ. Услуги - спикеры, заявки - митапы ~~
  8. Составление расписания преподавателей. Услуги - преподаватели, заявки - занятия (день недели+время+ауд). Не должно быть двух занятий в одно время у преподавателя
  9. Составление расписания групп. Услуги - учебные группы, заявки - занятия (день недели+время+ауд). Не должно быть двух занятий в одно время у группы
  10. Заявки на специалистов ГУИМЦ (сурдопереводчиков, сурдоакустики и тд). Услуги - специалисты центра ГУИМЦ, заявки - заявка на специалистов на конкретное время и место.
  11. Заявки на техническое оборудование (проекторы, экраны и тд). Услуги - виды оборудования, заявки - заявка на предоставление оборудования в аудиторию на время.
  12. Заявки на пропуски для посетителей. Услуги - корпусы МГТУ, заявки - заявка со списком посетителей, временем посещения
  13. Пропуски на выходные и праздничные дни. Услуги - список сотрудников, заявки - заявка на работу в выходной, праздничный или ночью с указанием причины.
  14. Составление занятий. Услуги - задания для выполнения, заявки - занятия со списком для выполнения студентами
  15. Заявки на совместный доступ к документы. Услуги - документы, заявки - заявки на предоставление доступа на редактирование к документам.
  16. Приказы ректора. Услуги - подразделения МГТУ для ознакомления с приказом, заявки - приказы ректора
  17. Проверка кода студентов. Услуги - языки программирования, заявки - заявка от студента на проверку кода преподавателем
  18. Формирование групп на прохождение медосмотра. Услуги - доступное время для записи на медосмотр, заявки - заявки от студентов для включения в группу на медосмотр
  19. Мероприятия профкома МГТУ. Услуги - билеты в музеи, театры, конкурсы и тд, заявки - подача заявок на бесплатное распределение билетов
  20. Заявки на повышение квалификации. Услуги - курсы, заявки - прохождения курса/программы дисциплин
  21. Выставки МГТУ. Услуги - направления/тематика выставки, заявки - выставка с указанием даты, времени и помещения
  22. Обратная связь по курсу. Услуги - группы студентов, заявки - запрос от преподавателя на проведение опроса по выборанным группам
  23. Приказы об отчислении. Услуги - студенты, заявки - приказы на отчисление студентов
  24. Приемная комиссия. Услуги - специальности для поступления, заявки - продача документов для поступления
  25. Составление маршрута. Услуги - доступные переходы между корпусами в капмусе, заявки - заявка на объединение участков в единый маршрут - или ошибка
  26. Задачи по электротехнике. Услуги - список реальных моделей резисторов, заявки - расчет силы тока для списка резисторов, соединенных последовательно или параллельно

Социальные услуги

  1. Трудоустройство женщин в отпуске по уходу за ребенком. Услуги - вакансии для женщин с детьми, заявки - подача заявок на вакансии от женщин
  2. Система трудоустройства для инвалидов. Услуги - вакансии для инвалидов, заявки - подача заявок на вакансию от инвалидов
  3. Система социальной помощи инвалидам - доставка еды, сопровождение на мероприятие и тд. Услуги - оказываемые услуги, заявки - заявки на них от инвалидов
  4. Заказы на молочную кухню (для детей). Услуги - виды продуктов, заявки - заявки от родителей
  5. Справочник по медицине катастроф и первой помощи. Услуги - виды первой помощи, заявки - виды поражений при чрезвычайных ситуациях
  6. Сервис для работодателей. Услуги - города, в которых будет открыта вакансия, заявки - заявки на создание вакансий
  7. Собственники компаний. Услуги - список физических и юридических лиц, заявки - компания с указанием ее владельцев и доли

История

  1. Высочайшие вершины Земли и их покорители. Услуги - знаменитые покорители, заявки - экспедиции по покорению вершин.
  2. Система археологов - находки и их привязка к раскопкам. Услуги - места археологических раскопок, заявки - факты находок предметов с группировкой по экспедиции
  3. Эпоха географических открытий. Услуги - первооткрыватели, заявки - их открытия
  4. Животные рекордсмены. Услуги - виды рекордов (самые большие, самые быстрые и тд), заявки - жившие виды животных
  5. Морские битвы на Тихом океане. Услуги - конкретные корабли, заявки - составы соединений с адмиралом и указанием победа/поражение
  6. Походы викингов. Услуги - города, заявки - походы викингов
  7. Древнерусские княжества. Услуги - княжества, заявки - правители княжеств по периодам
  8. Освоение Дальнего Востока и Сибири. Услуги - населенные пункты и географические объекты, заявки - экспедиции и походы в XVI-XVIII веках
  9. Палеонтология. Услуги - геологические периоды, заявки - ископаемые животные (отряды-рода)
  10. История живописи. Услуги - картины художников, заявки - заявки на экспертизу для отнесение данных картин какому-то художнику
  11. Атомные электростанции СССР и СНГ. Услуги - реакторы для энергоблоков, заявки - история электростанций
  12. Регистрация погодных явлений на метеостанции. Услуги - погодное явление, заявки - значения показателей - запись за день
  13. Регистрация температуры на метеостанциях Москвы. Услуги - метеостанции Москвы, заявки - регистрация за день
  14. Амарнское искусство (Эхнатон). Услуги - изображаемые люди, категории предметов, заявки - произведения искусства и изображенные на них люди/предметы
  15. Военные округа РФ. Услуги - объединения, соединения и отдельные части ВС РФ, заявки - хронология состава округа и его действующий статус

Архивные темы

  1. Электронные услуги. Уведомления электронных услуг. Услуги - получатели уведомления, заявки - отправка уведомления
  2. История. История ВОВ - участники ВОВ и их привязка к архивным документам (личные карточки, наградные, ЖБД итд). Услуги - архивные документы, заявки - привязка участника с наградой/событием к документу
  3. Космос. Эволюция ближайших к Солнцу звезд. Услуги - ближайшие звезды, заявки - события в эволюции этих звезд, при завершении заявки меняется таблица услуг.

Примерные вопросы к экзамену и РК

  1. Опишите шаблон MVC, структуру и назначение компонентов.
  2. Опишите схему, как реализован шаблон MVC в фреймворке Django.
  3. Что такое Django? Его назначение и возможности.
  4. Что такое шаблонизация Django? Приведите примеры.
  5. Опишите протокол HTTP. Схему работы и основные понятия.
  6. Опишите стек протоколов интернета TCP/IP.
  7. Перечислите основные составляющие web и опишите их.
  8. Что такое HTML, CSS? Приведите примеры.
  9. Что такое URI? Опишите элементы URI для HTTP.
  10. Виды баз данных. Приведите примеры и отличия.
  11. Объясните назначение ORM, ее составляющие. Укажите преимущества и недостатки ORM.
  12. Что такое модель и миграция?
  13. Укажите группы SQL запросов, их примеры и назначение.
  14. Что такое веб-сервис? Отличие от веб-сервера.
  15. Что такое Web API? Назначение и применение.
  16. Микросервисная архитектура. Отличия от монолитной архитектуры.
  17. Перечислите требования REST, опишите их.
  18. Что такое RPC? Варианты RPC и их отличия.
  19. Что такое Swagger? Назначение и использование.
  20. Что такое AJAX? Схема работы и назначение.
  21. Назначение JSON и XML. Примеры и отличия.
  22. Что такое git? Опишите схему работы с ветками GitHub.
  23. Методология разработки Agile. Состав IT команды.
  24. Перечислите основные диаграммы UML и их назначение.
  25. Что такое Web реального времени? Что такое WebSocket?
  26. Укажите отличия XmlHttpRequest и fetch. Приведите примеры.
  27. Перечислите отличия Axios от fetch. Приведите примеры.
  28. Что такое React? Что такое компонент, его состояния и свойства.
  29. Структура React проекта. Назначение Babel и WebPack.
  30. Жизненный цикл React компонента.
  31. Назначение хуков useState и useEffect.
  32. Назначение хуков useContext и useReducer.
  33. Опишите схему работы менеджера состояний Redux.
  34. Опишите работу Redux на диаграмме последовательности.
  35. Какие параметры передаются при создании Store? Их назначение.
  36. Что такое Cors? Укажите варианты решения.
  37. Что такое Redis? Его назначение и варианты применения.
  38. Опишите схему авторизации с помощью JWT.
  39. Опишите схему авторизации с помощью сессий.
  40. Что такое авторизация и аутентификация? Укажите варианты авторизации и их отличия.
  41. Что такое SSO? Схема работы.
  42. Протокол OAuth. Схема работы.
  43. Отличия мобильных и веб-приложения. Языки и технологии для разработки мобильных приложений.
  44. Что такое pwa? Отличия от других вариантов приложений.
  45. Плюсы и минусы разработки на React Native.
  46. Назначение фреймворков Electron и Tauri. Их отличия.
  47. Опишите этапы подхода DevOps. Назначение GitHub Pages.

Команда курса выражает благодарность всем участвовавшим за помощь в подготовке материалов для данного курса

About

Репозиторий курса Разработка Интернет Приложений

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published