Лабораторная работа № 3 #
Проверяемые знания #
- Знание основ языка HTML.
- Умение структурировать HTML-документы.
- Знание основ языка CSS.
- Умение применять классы CSS к HTML-элементам.
- Умение подключать внешние CSS-файлы к HTML-документу.
- Умение использовать CSS-стили фреймворка Foundation.
- Знание основ маршрутизации HTTP-запросов с помощью библиотеки http4k.
- Умение обрабатывать GET и POST-запросы с помощью библиотеки http4k.
- Умение формировать динамические HTML-страницы с помощью шаблонов Pebble.
- Умение корректно обрабатывать параметры, приходящие от пользователя:
- Через маршруты к документам.
- Через параметры маршрута.
- Через поля интерактивных HTML-форм.
- Умение применять средства статического анализа кода Kotlin: ktlint и detekt.
- Умение сохранять данные в постоянном объектном хранилище. Данные в хранилище должны сохраняться между перезапусками приложения.
- Умение извлекать данные из постоянного объектного хранилища.
- Умение оперировать связями между объектами из разных списков объектного хранилища.
- Знание о распределении функций приложения по ролям.
- Умение формировать безопасное сохранение паролей пользователей.
- Умение работать с сессионными токенами для аутентификации пользователей.
- Знание о структуре JWT-токенов.
- Умение выполнять авторизацию действий пользователя.
Требования к лабораторной работе #
- Результат работы — исходные коды приложения без артефактов сборки приложения (без каталогов build, .gradle, .idea).
- Приложение должно быть разработано с использованием языка программирования Kotlin.
- Приложение должно использовать актуальную версию библиотеки http4k.
- Просмотр документов должен осуществляться через обработку и отправку GET-запросов.
- Операции по редактированию данных, в том числе по добавлению, должны осуществляться с помощью POST-запросов.
- Операции по фильтрации данных, включая постраничный вывод, должны осуществляться с помощью GET-запросов.
- Для стилизации элементов на странице необходимо использовать классы CSS-фреймворков, следует избегать ручного указания CSS-свойств внутри HTML-документов с помощью тега style. Вместо этого необходимо описывать собственные CSS-классы.
- Для формирования динамических HTML-документов необходимо использовать шаблонизатор Pebble.
- Приложение должно корректно обрабатывать неправильные данные от пользователя:
- Всегда должны формироваться HTML-документы с корректным содержимым.
- Приложение не должно показывать исключительные ситуации, стеки вызова и прочее пользователю.
- В случае отсутствия искомого документа должна отображаться соответствующая страница.
- Для проверки параметров от пользователя рекомендуется использовать механизм линз библиотеки http4k. Также допускается ручная проверка параметров или привлечение других библиотек.
- Страницы со списками данных должны корректно обрабатывать ситуацию отсутствия данных. Вместо пустой страницы должно присутствовать информационное сообщение о том, что соответствующих данных нет.
- Для хранения данных необходимо использовать подход с выделением слоя хранения данных.
- Для уникальной идентификации объекта в хранилище рекомендуется использовать UUID.
- Запрещено использовать аттрибут
required
для полей ввода HTML-форм. - Исходный код должен соответствовать большинству требований статических анализаторов кода. Максимальное количество нарушений — 10 на приложение.
- Для аутентификации пользователей необходимо использовать JWT-токены, которые необходимо сохранять в куках.
- Запрещено использовать сессионные токены для решения любых задач кроме хранения аутентификационного токена.
Задача #
Разработать веб-приложение, решающее задачу по управлению данными в указанной тематике. Приложение должно:
- Отображать стартовую страницу с описанием предметной области.
- Обеспечить управление несколькими (2 и более) связными списками данных. Для каждого отдельного списка необходимо:
- Отображать список на отдельной странице.
- Список должен быть отсортирован по дате добавления элемента, если не указано иначе.
- Элементы списка на данной странице должны показывать минимальный объём информации.
- На странице со списком реализовать постраничный вывод информации.
- На странице со списком обеспечить фильтрацию данных минимум по двум параметрам.
- Реализовать переход к странице с детальной информацией об элементе.
- Отображать список на отдельной странице.
- На странице с детальной информацией об элементе необходимо.
- Отображать все поля элемента в удобном для восприятия виде.
- Реализовать переход к странице информации о связном элементе или списке элементов.
- Приложение должно позволять добавлять новые элементы в каждый отображаемый список. Необходимо обеспечить:
- Проверку данных во всех полях ввода.
- Указание связных объектов необходимо обеспечить с помощью выбора из выпадающего списка.
- Приложение должно предоставлять страницу со статистической информацией, подсчитанной относительно двух списков.
- На всех страницах должен присутствовать блок навигации, позволяющий переходить между стартовой страницей и страницами списков.
- Обеспечить различное поведение приложения в зависимости от указанной роли пользователя.
- Приложение должно реализовывать все задачи, которые были поставлены перед приложением во второй лабораторной работе.
Распределение задач #
Описание задач можно найти в разделе «Лабораторные работы» → «Задачи».
ИВТ-21БО #
Студент | Задача |
---|---|
Бердар Александр Иванович | Зоопарк |
Варданян Армен Авагович | Приют для животных |
Васильев Иван Игоревич | Поиск специалиста |
Гиршон Марат Игоревич | Кулинарная книга |
Григорьева Ольга Леонидовна | Театральная касса |
Данишевский Данил Александрович | Форум |
Дрожженикова Алина Сергеевна | Совместное финансирование |
Казанов Иван Алексеевич | Зоопарк |
Карелина Ксения Викторовна | Продуктовый магазин |
Катков Андрей Сергеевич | Театральная касса |
Корегина Ангелина Алексеевна | Поиск специалиста |
Королёва Екатерина Сергеевна | Приют для животных |
Кузнецов Александр Васильевич | Продуктовый магазин |
Лопаткин Андрей Александрович | Поиск специалиста |
Лыкова Дарья Олеговна | Самиздат |
Маркина Екатерина Романовна | Ветеринарная клиника |
Нелеп Виктория Валентиновна | Поиск специалиста |
Парамонов Егор Сергеевич | Форум |
Попов Сергей Михайлович | Ветеринарная клиника |
Рыбакова Полина Александровна | Самиздат |
Сироджов Мехрофарид Ибодуллоевич | Зоопарк |
Тюменцев Дмитрий Евгеньевич | Совместное финансирование |
Фукин Иван Дмитриевич | Ветеринарная клиника |
Цыкарев Григорий Алексеевич | Продуктовый магазин |
Чайковский Сергей Станиславович | Самиздат |
Шихова Анна Павловна | Форум |
ИВТ-22БО #
Студент | Задача |
---|---|
Бородин Илья Владимирович | Поиск специалиста |
Бурлова Виктория Александровна | Совместное финансирование |
Воронин Дмитрий Александрович | Ветеринарная клиника |
Голубков Кирилл Алексеевич | Кулинарная книга |
Докшин Захарий Евгеньевич | Совместное финансирование |
Еров Илья Алексеевич | Самиздат |
Жигалов Павел Алексеевич | Форум |
Карпунин Александр Олегович | Зоопарк |
Киселев Артём Александрович | Приют для животных |
Кочкин Владимир Александрович | Продуктовый магазин |
Курепнев Даниил Евгеньевич | Самиздат |
Лукьянов Александр Сергеевич | Театральная касса |
Мартынова Алена Олеговна | Продуктовый магазин |
Митраков Артем Юрьевич | Театральная касса |
Михайлов Вячеслав Андреевич | Кулинарная книга |
Михальченков Иван Сергеевич | Самиздат |
Назаров Данил Олегович | Кулинарная книга |
Орешников Евгений Дмитриевич | Приют для животных |
Пестряков Николай Юрьевич | Форум |
Печенкин Степан Дмитриевич | Кулинарная книга |
Пискунов Владимир Сергеевич | Театральная касса |
Роганин Егор Ильич | Приют для животных |
Тимофеева Александра Максимовна | Совместное финансирование |
Феклистов Андрей Дмитриевич | Зоопарк |
Фирсова Анастасия Сергеевна | Ветеринарная клиника |