Вариант - HFS PLus Forked from https://github.com/progML/Spo_1
Реализовать программу, которая может использоваться в двух режимах. Режимы задаются в виде аргументов командной строки и позволяют:
- Выводить список дисков и разделов, подключенных к операционной системе.
- Выполнять операции надфайловой системой, представленной назаданномдиске,разделе или в файле.
Запущенная во втором режиме программа должна выполнять следующие действия:
- Проверять, поддерживается ли файловая система на заданном разделе или диске.
- В случае, если файловая система поддерживается, программа переходит в диалоговый режим, ожидая ввода команд от пользователя. Команды задают операции над файловой системой:
- вывод списка имен и атрибутов элементов указанной директории;
- копирование файлов или директорий из исследуемой (заданной по варианту) файловой системы;
- отображение названия «текущей» директории и переход в другую директорию.
Программа должна состоять из двух модулей. Первый модуль реализует функции для работы с файловой системой, а второй – взаимодействие с пользователем.
Вариант - Node.js Forked from https://github.com/rbetik12/flexcommander-js
Цель – изучение способов организации программных интерфейсов между средами высокого и низкого уровней программной архитектуры.
Построить разделяемую библиотеку (shared library) с функциональностью для работы с файловой системой, реализованную в лабораторной работе No1. На языке высокого уровня реализовать консольное или графическое приложение, функциональность которого аналогична программе из лабораторной работы No1, для операций с файловой системой использовать полученную библиотеку, написанную на Си. При при необходимости реализовать дополнительную библиотеку, обеспечивающую вызов функций из программы на языке высокого уровня.
Вариант - Library catalog Forked from https://github.com/progML/Spo_3
Цель – изучение способов взаимодействия между сетевыми службами низкого уровня в асинхронном режиме.
Разработать клиент-серверное приложение. Для организации взаимодействия по сети, поддержки множества соединения использовать программные интерфейсы (API) операционной системы. Сервер и клиенты взаимодействуют по протоколу, реализованному на базе сокетов (использовать TCP, если в варианте задания не указано обратное). Сервер должен поддерживать условно неограниченное количество клиентов. На всех этапах взаимодействия клиента и сервера должна быть предусмотрена обработка данных независимо от их размера.
Порядок выполнения:
- Выполнить анализ предметной области, которая задается вариантом к лабораторной работе. Результатом анализа должен быть набор сущностей, которые будут в качестве элементов данных (типов, структур, операций) и/или составных частей программной архитектуры (компонентов, модулей) при реализации программы.
- Составить диаграмму, на которой схематически будут показаны результаты анализа: сущности, их атрибуты и взаимосвязи.
- Составить план постепенного выполнения задания: какие части функциональности, в каком порядке предполагается реализовывать, в каком порядке и как проверять их работоспособность.
- Загрузить все полученные артефакты в отдельную директорию «docs» репозитория, в корневую директорию положить readme.md с номером варианта и кратким описанием.
- Продемонстрировать составленные диаграмму и план преподавателю. Для этого достаточно просто отправить преподавателю ссылку на репозиторий.
- После проверки и получения рекомендаций приступить к реализации программы, создавая на каждый этап выполнения отдельную ветку в репозитории.
- По завершении каждого этапа создать pull-request, включив преподавателя в число reviewer-ов.
- Если pull-request отклоняется преподавателем, выполнить необходимые правки и обновить его, запросив повторное ревью.
- Когда pull-request одобрен, «слить» его с основной веткой кода, после чего создать новую ветку для работы над следующим этапом.
Программа может выполняться в двух режимах: сервер или клиент. Режим определяется аргументом командной строки. Завершение программы-сервера происходит по нажатию ключевой клавиши (например, Q). При запуске в режиме клиента чрез аргументы командной строки задаётся имя пользователя и адрес сервера.