Привет!
Мы очень рады, что вы успешно справились с тестом и решили выполнить вступительную лабораторную работу. Ее цель — выяснить, насколько хорошо вы сможете написать небольшое приложение по заданным условиям.
Авторы наиболее качественных и полных работ будут зачислены на курс.
Важно! Предупреждаем, что публикация материалов финтех-школы — этого документа, инструкций к домашним заданиям, исходного кода работ, скриншотов и т.д. — грозит отчислением из школы. Мы хотим, чтобы и в будущем места на курсе доставались самым мотивированным и талантливым кандидатам — а не тем, кто смог нагуглить материалы прошлого потока.
В курсе финтех-школы — как и в реальной работе разработчика — мы будем постоянно работать с системой контроля версий Git. С ней удобно отслеживать изменения в коде и отменять неудачные, а также синхронизировать общую кодовую базу между всеми участниками команды.
Домашние работы нужно загружать на GitHub. Обратите внимание, что это обязательное требование курса: мы не принимаем материалы на других сайтах (GitLab, Bitbucket), в виде ZIP-архивов, на Google Drive и т.д. Впрочем, если вы читаете этот текст, значит аккаунт у вас уже есть.
Если вы чувствуете себя неуверенно в работе с Git и GitHub, рекомендуем почитать статьи в интернете или пройти обучающий курс и выполнить предложенные в нем задания (оценка за них не ставится).
В этой лабораторной работе вам предлагается создать приложение, которое будет, используя API, загружать заголовки новостей и показывать их в виде списка. По тапу на новость из списка переходить к просмотру полной информации по выбранной новости.
Когда вы перешли по ссылке на учебном портале, специально для вас создался репозиторий с названием вида intro-lab-annapetrova
. Внутри репозитория есть файл с текстом задания (сейчас вы как раз читаете его). В ходе работы вы будете создавать новые файлы, и их нужно добавлять в этот же репозиторий.
Пока ваш репозиторий существует только на серверах GitHub. Чтобы с ним было возможно работать, его нужно клонировать. Задание нужно выполнять в папке репозитория.
Когда вы закончите лабораторную, у вас должен получиться репозиторий с добавленными в него файлами проекта (приложения). Именно в таком виде преподаватели ожидают получить работы. Затем они клонируют ваш репозиторий на свои компьютеры и запустят проект. Закончив работу и загрузив ее в репозиторий, убедитесь, что все работает. Для этого можно повторно клонировать репозиторий в отдельную папку и запустить приложение оттуда.
В качестве источника данных можно использовать https://newsapi.org/
По мере выполнения работы рекомендуем сохранять изменения — коммитить их — в Git. Как часто делать это, решать вам — количество коммитов и размер каждого не ограничены.
Чтобы открыть окно создания коммита, нажмите ⌘ + ⌥ + C. Слева вы увидите список измененных файлов, а справа — сравнение версий до и после изменения. Внизу вам нужно ввести сообщение коммита — обычно в нем кратко описывают проделанную работу. Введите сообщение, но пока не спешите нажимать кнопку Commit Changes.
Если просто создать коммит, он будет доступен только в локальном репозитории на вашем компьютере — преподаватели его не увидят. Чтобы коммит попал на GitHub, его еще нужно запушить. Xcode сделает это автоматически, если вы поставите соответствующую галочку под полем для сообщения.
Вы можете использовать и другой Git-клиент — например, GitHub Desktop.
- Приложение должно быть написано на Swift. Без использования SwiftUI. Без использования сторонних библиотек/подов.
- Для UI можно использовать XIB и верстку кодом, не рекомендуется использовать Storyboard.
- Минимальная поддерживаемая версия приложения - iOS 14.
- Загружать не больше 20-ти новостей одномоментно.
- Предусмотреть возможность обновления списка новостей.
- На каждой ячейке должны отображаться:
- заголовок,
- картинка,
- количество просмотров содержимого (переходов на экран деталей новости).
- При нажатии на каждую новость должен открываться новый экран и показывать ее краткое содержимое:
- заголовок,
- картинку,
- описание,
- дату публикации,
- источник публикации,
- кликабельную ссылку на полный текст новости.
- Полный текст новости должен открываться с использованием WebKit.
- Данные о новостях (заголовок, краткое содержание, ссылка на полную версию и тд.) и счетчик просмотров необходимо кэшировать каким-либо образом.
- Закэшированные данные отображаются перед отправлением запроса на обновление данных.
- Закэшированные данные доступны и после перезапуска приложения.
- Постраничная загрузка всех доступных новостей бесконечной лентой (пагинация по 20 новостей).
- Обновлять список новостей с помощью жеста pull-to-refresh.
- Обработка исключений. Например, отсутствие интернет-соединения.
Выполнение данных пунктов увеличивает ваши шансы на поступление в школу. По статистике зачисленные на курс студенты выполняли все или несколько из описанных улучшений.
- Проверить соответствие работы требованиям в задании
- Хотя бы попробовать сделать дополнительные пункты из задания
- Убедиться, что все файлы закоммичены
- Запушить коммиты на GitHub — проверить, что они отображаются на сайте
- Повторно клонировать репозиторий в отдельную папку и собрать проект из нее — убедиться, что все запускается и работает как надо
- Отправить ссылку на репозиторий через учебный портал
Желаем успехов!