SHREDDING8 / TFSNews

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Вступительная лабораторная работа

Привет!

Мы очень рады, что вы успешно справились с тестом и решили выполнить вступительную лабораторную работу. Ее цель — выяснить, насколько хорошо вы сможете написать небольшое приложение по заданным условиям.

Авторы наиболее качественных и полных работ будут зачислены на курс.

Важно! Предупреждаем, что публикация материалов финтех-школы — этого документа, инструкций к домашним заданиям, исходного кода работ, скриншотов и т.д. — грозит отчислением из школы. Мы хотим, чтобы и в будущем места на курсе доставались самым мотивированным и талантливым кандидатам — а не тем, кто смог нагуглить материалы прошлого потока.

Работа с Git и GitHub

В курсе финтех-школы — как и в реальной работе разработчика — мы будем постоянно работать с системой контроля версий Git. С ней удобно отслеживать изменения в коде и отменять неудачные, а также синхронизировать общую кодовую базу между всеми участниками команды.

Домашние работы нужно загружать на GitHub. Обратите внимание, что это обязательное требование курса: мы не принимаем материалы на других сайтах (GitLab, Bitbucket), в виде ZIP-архивов, на Google Drive и т.д. Впрочем, если вы читаете этот текст, значит аккаунт у вас уже есть.

Если вы чувствуете себя неуверенно в работе с Git и GitHub, рекомендуем почитать статьи в интернете или пройти обучающий курс и выполнить предложенные в нем задания (оценка за них не ставится).

Задача

В этой лабораторной работе вам предлагается создать приложение, которое будет, используя API, загружать заголовки новостей и показывать их в виде списка. По тапу на новость из списка переходить к просмотру полной информации по выбранной новости.

Подготовка

Когда вы перешли по ссылке на учебном портале, специально для вас создался репозиторий с названием вида intro-lab-annapetrova. Внутри репозитория есть файл с текстом задания (сейчас вы как раз читаете его). В ходе работы вы будете создавать новые файлы, и их нужно добавлять в этот же репозиторий.

Пока ваш репозиторий существует только на серверах GitHub. Чтобы с ним было возможно работать, его нужно клонировать. Задание нужно выполнять в папке репозитория.

Когда вы закончите лабораторную, у вас должен получиться репозиторий с добавленными в него файлами проекта (приложения). Именно в таком виде преподаватели ожидают получить работы. Затем они клонируют ваш репозиторий на свои компьютеры и запустят проект. Закончив работу и загрузив ее в репозиторий, убедитесь, что все работает. Для этого можно повторно клонировать репозиторий в отдельную папку и запустить приложение оттуда.

Источник данных

В качестве источника данных можно использовать https://newsapi.org/

Сохраняем промежуточные результаты в Git

По мере выполнения работы рекомендуем сохранять изменения — коммитить их — в Git. Как часто делать это, решать вам — количество коммитов и размер каждого не ограничены.

Чтобы открыть окно создания коммита, нажмите + + C. Слева вы увидите список измененных файлов, а справа — сравнение версий до и после изменения. Внизу вам нужно ввести сообщение коммита — обычно в нем кратко описывают проделанную работу. Введите сообщение, но пока не спешите нажимать кнопку Commit Changes.

Если просто создать коммит, он будет доступен только в локальном репозитории на вашем компьютере — преподаватели его не увидят. Чтобы коммит попал на GitHub, его еще нужно запушить. Xcode сделает это автоматически, если вы поставите соответствующую галочку под полем для сообщения.

Вы можете использовать и другой Git-клиент — например, GitHub Desktop.

Основные требования

  • Приложение должно быть написано на Swift. Без использования SwiftUI. Без использования сторонних библиотек/подов.
  • Для UI можно использовать XIB и верстку кодом, не рекомендуется использовать Storyboard.
  • Минимальная поддерживаемая версия приложения - iOS 14.
  • Загружать не больше 20-ти новостей одномоментно.
  • Предусмотреть возможность обновления списка новостей.
  • На каждой ячейке должны отображаться:
    • заголовок,
    • картинка,
    • количество просмотров содержимого (переходов на экран деталей новости).
  • При нажатии на каждую новость должен открываться новый экран и показывать ее краткое содержимое:
    • заголовок,
    • картинку,
    • описание,
    • дату публикации,
    • источник публикации,
    • кликабельную ссылку на полный текст новости.
  • Полный текст новости должен открываться с использованием WebKit.
  • Данные о новостях (заголовок, краткое содержание, ссылка на полную версию и тд.) и счетчик просмотров необходимо кэшировать каким-либо образом.
  • Закэшированные данные отображаются перед отправлением запроса на обновление данных.
  • Закэшированные данные доступны и после перезапуска приложения.

Что можно улучшить

  • Постраничная загрузка всех доступных новостей бесконечной лентой (пагинация по 20 новостей).
  • Обновлять список новостей с помощью жеста pull-to-refresh.
  • Обработка исключений. Например, отсутствие интернет-соединения.

Выполнение данных пунктов увеличивает ваши шансы на поступление в школу. По статистике зачисленные на курс студенты выполняли все или несколько из описанных улучшений.

Чеклист перед сдачей работы

  • Проверить соответствие работы требованиям в задании
  • Хотя бы попробовать сделать дополнительные пункты из задания
  • Убедиться, что все файлы закоммичены
  • Запушить коммиты на GitHub — проверить, что они отображаются на сайте
  • Повторно клонировать репозиторий в отдельную папку и собрать проект из нее — убедиться, что все запускается и работает как надо
  • Отправить ссылку на репозиторий через учебный портал

Желаем успехов!

About


Languages

Language:Swift 100.0%