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

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

Проверяемые знания #

  • Знание основ языка Kotlin.
    • Умение описывать функции.
    • Умение описывать классы.
    • Умение описывать классы данных.
    • Умение использовать стандартные коллекции.
    • Умение использовать функциональные типы данных.
  • Знание формата данных CSV.
  • Знание формата данных JSON.
  • Знание основ настройки системы сборки Gradle.
  • Умение обрабатывать аргументы приложения.
  • Умение подключать существующие библиотеки для работы приложения.
  • Знание логики работы протокола HTTP.
  • Знание структуры URI в запросах HTTP.
    • Понятие о полных, частичных, относительных и абсолютных URI.
    • Знание описания параметров URI.
  • Умение обрабатывать GET-запросы с помощью библиотеки http4k.
  • Умение корректно обрабатывать параметры, приходящие от пользователя:
    • Через маршруты к документам.
    • Через параметры маршрута.
  • Умение применять средства статического анализа кода Kotlin: ktlint и detekt.
  • Знание об отличных от GET-запросов протокола HTTP.
  • Знание об архитектуре REST-запросов.
  • Умение обрабатывать и извлекать данные из POST, PUT, PATCH-запросов с помощью библиотеки http4k.
  • Умение обрабатывать данные, приходящие в теле запроса в формате application/x-www-form-urlencoded.
  • Умение обрабатывать данные, приходящие в теле запроса в форме application/json.
  • Знание шаблона проектирования строитель.
  • Знание шаблона проектирования линза.
  • Умение использовать линзы библиотеки http4k для извлечения данных и записи в структуры данных http4k.
  • Знание о процессе завершения процессов JVM.

Требования к лабораторной работе #

  • Результат работы — исходные коды приложения без артефактов сборки приложения (без каталогов bin, build, .gradle, .idea).
    • Не надо добавлять в архив с исходными кодами файлы, которые не нужны для компиляции, запуска. Исключением является — документация по работе приложения.
    • В передаваемом архиве должны отсутствовать результаты работы приложения. Приложение должно запускаться и продуцировать результаты на любом компьютере, удовлетворяющем требованиям.
  • Приложение должно запускаться из любого каталога, не должно быть привязок к местоположению каталога приложения к абсолютным путям.
  • Приложение должно быть разработано с использованием языка программирования Kotlin.
  • Приложение должно быть адаптировано для запуска в системе автоматической проверки.
  • Приложение должно быть разбито на логические части: пакеты, функции и классы.
  • Приложение должно возвращать ненулевой код возврата, если произошла ошибка.
  • Приложение не должно выводить стек вызова при любом сценарии использования приложения.
  • Для подключения дополнительных библиотек необходимо использовать механизм, предложенный в шаблоне лабораторной работы.
  • Приложение должно корректно обрабатывать некорректные данные от пользователя:
    • Всегда должны формироваться JSON-документы с корректным содержимым.
    • Приложение не должно показывать техническую информацию об исключительных ситуациях, стеках вызова и прочее пользователю. Данные ситуации должны быть явно обработаны внутри вашего кода приложения и преобразованы в сообщения, понятные для пользователя. Для решения этой задачи запрещено использовать фильтр с перехватом всех исключительных ситуаций приложения.
    • В случае отсутствия искомого документа должна отображаться соответствующая страница.
  • Логику проверки данных, поступающих от пользователя, следует выделять в отдельный слой.
  • Приложение должно соответствовать требованиям к исходному коду, предоставляемыми актуальной версией инструмента ktlint. Конфигурация ktlint должна соответствовать требованиям.
    • Запрещено вносить изменения в конфигурацию ktlint.
    • Запрещено любым образом отключать сообщения ktlint.
  • Рекомендуется исправить все недостатки, на которые указывает инструмент detekt.
  • В приложении и в используемых файлах не должны систематически дублироваться данные.
  • Рекомендуется разработать модульные тесты для проверки работоспособности HTTP-обработчиков.
  • Данные, изменённые пользователем в результате работы с приложением, должны сохраняться на файловой системе. При следующем запуске приложения эти данные должны быть считаны приложением и доступны пользователю для работы.

Задача #

Разработать веб-приложение, решающее задачи по отображению и редактированию большого записей нескольких списков данных. Приложение должно соответствовать спецификации.

Приложение должно корректно обрабатывать любые запросы от клиента.

Распределение заданий следует брать в тексте лабораторной работы № 1.

© A. M. Васильев, 2024, CC BY-SA 4.0, andrey@crafted.su