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

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

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

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

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

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

Задача #

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

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

Список сущностей для приложения следует брать из задачи к лабораторной работы № 1.

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