# Задачи на Mobius 2022 ## Задача 1 ### Вводная часть Есть некий класс для работы с API, позволяющий получать список товаров и есть UIViewController, отображающий этот список в таблице. ### Задание Задача спроектировать отказоустойчивую систему, позволяющую делать 5 попыток получения информации с сервера `URL1`, в случае провала переподключаться на резервный сервер `URL2` на котором возможны теже 5 попыток, и далее на `URL3` при отказе`URL2`. В случае, если последний резервный сервер не ответил, отображать информацию из JSON файла, размещенного в ресурсах приложения. ### Результат Предоставить набросок такой системы в любом удобом и понятном виде. ### Решение Однозначного решения нет, подразумевает и подталкивает к обсуждению предложенного решения. Система должна быть гибкой и расширяемой, необходимо использование паттернов Композиция и Стратегия. Как контр-аргумент к плохой системе, да и к хорошей, предложить рассказать, как можно исправить ситуацию при отсутствии сети, чтобы не ждать все 15 попыток доступа по URL, а сразу получать данные из JSON ## Задача 2 ### Вводная часть Есть некоторое приложение, которое состоит из 10 экранов, множества сервисов и бизнес-логики, работает с БД и сетью. Архитектура приложения не имеет значение. ### Задание Задача спроектировать систему сбора логов и аналитики для данного приложения. Логи и статистика должны отправляться на сервер. Обеспечить возможность сохранять записи, при отсутствии сети и отправки после её появления без использования сторонних фреймворков. ### Решение Однозначного решения нет, подразумевает и подталкивает к обсуждению предложенного решения. Должно быть решение без использования Синглтонов и прочих антипаттернов. Нужно рассказать как такое возможно реализовать стандартными средствами Swift. Возможно в дискуссии накидывать предложения о том, что если логирование заменят на сохранение на диск или в БД или в системный журнал. Как этим управлять и как иметь возможность переключать методы логирования без переделывания всего приложения.