Программирование

Все лабораторные должны быть выполнены на helios.
Возможно, требования будут меняться и/или пополняться с течением времени, так что перед тем, как делать лабораnорную, лучше зайти и проверить :)

ЛР5

  1. Давайте использовать сторонние библиотеки для парсинга xml/json, а не изобретать собственный кирпич. Если у Вас в варианте csv, пожалуйста, замените его на Yaml.
  2. User-friendly prompt на старте программы ('Type help if you don't know', например)
  3. User-friendly prompt для каждой команды (как в bash)
  4. Для add/update: ввод поля enum заглавными буквами, строчными буквами, порядковым номером
  5. Для add/update: если пользовательский ввод неверен, то не заканчиваем выполнение команды, а ждем, пока пользователь не введет правильно.
  6. Для add/update: хорошо бы сообщать пользователю, какого типа данных значение ему вводить и какие на него есть ограничения.
  7. При неправильном пути до файла в переменных окружения -- запускаемся и пишем в коллекцию, а при попытке сделать save не делаем и сообщаем об ошибке
  8. save/load c несуществующим файлом -- создаем себе этот файл и при необходимости пишем в пустой файл
  9. save/load с файлом без прав доступа -- запускаемся с пустой коллекцией и сообщением о том, что файл пустой. При попытке сохранить не сохраняем и сообщаем об ошибке
  10. Не забываем про рекурсию в скрипте. Захардкодить количество вложенностей -- не решение!
  11. execute_script не должен сообщать о неверной команде в случае, если ему подается пустая строка
  12. add внутри скрипта продолжает считывать поля также внутри скрипта, а не возвращается в консоль
  13. Обработка выхода по комбинации Ctrl-C и Ctrl-D. При этом необходимо производить запись в файл (конечно, если он доступен)!
  14. Команда update сначала проверяет, что id есть, и только ПОТОМ запрашивает данные для замены
  15. Не забываем про человекочитаемые сообщения в случае, если коллекция пуста

ЛР6

  1. Реализовано взаимодействие одновременно с несколькими клиентами
  2. Команда update сначала проверяет, что id есть, и только ПОТОМ запрашивает данные для замены
  3. Между клиентом и сервером пересылаются не строки, а сериализованные сообщения с осмысленными полями
  4. execute_script отправляет на сервер не название файла (подразумеваем, что файлы живут на клиенте и сервер про них ничего не знает), а список команд

ЛР7

  1. Не забываем про logout без необходимости перезапуска клиентского приложения
  2. При выводе show показываем также id и id или имя создателя

ЛР8

  1. To be done...