Для прояснения практических навыков тестируемого
Предлагается написать клиента для вымышленного сервиса базы-кинофильмов. Сервис предоставляет api, который отдает список фильмов. Формат выдачи такой:
https://gist.github.com/numbata/5ed307d7953c3f7e716f/b7887adc444188d8aa8e61d39b82950f28c03966
Можно грузить json напрямую с гитхаба:
https://gist.githubusercontent.com/numbata/5ed307d7953c3f7e716f/raw/b7887adc444188d8aa8e61d39b82950f28c03966/movies.json
- список фильмов с превью
- клик/тач по элементу списка фильмов перебрасывает на страницу фильма
- страница фильма состоит из описания фильма и плеера проигрывающего трейлер фильма
При разработке использовалась Qt5.5 OpenSource на базе minGW-4.9 x86 Для генерации документации Doxygen 1.8.
Для компиляции проекта требуются:
- утилита qmake из состава Qt. Данная утилита формирует Makefile для утилиты make;
- утилита make. Данная утилита предназначена для пакетной обрабоке файлов по заданному Makefile;
- компилятор и компоновщик необходимые для компиляции c++ файлов.
Для компиляции проекта в командной строке набрать:
qmake && make
Для ряда платформ таких как Windows Visual Studio, Linux с с предустановленными библиотеками Qt, этот подход не подойдет. Наиболее простым решением для компиляции проекта будет использование среды разработки. Например: qtcreator.
Проект делится на следующие части:
- интерфейсные модули, предназначенные для выполнения операций в фоновом режиме;
- модули, предназначенные для отображения информации пользователю.
Интерфейсные модули разделены на две группы файлов:
- serverintf.h - интерфейс с серверным API. Выделен для более гибкой адаптации модификаций протокола взаимодействия.
- inetfile.h - интерфейс получения данных из сети. Решает ряд задач по буферизации получаемых данных, контролю получения.
Модули отображения информации пользователю разбиты на следующие группы файлов:
- filmlistview.h - список фильмов: название, постер, краткое описание;
- filmlistitem.h - элемент списка фильмов. Производит чтение хранение, отображение;
- filmpreviewer.h - полное описание фильма, с отображением трейлера. Настраивается через ui файл;
- mediaplayer.h - медиа проигрыватель. Отличается от базового, что все собрано вместе, добавлены элементы управления.
На данный момент в проекте задумывалось, но еще не реализовано:
- сбор информации об ошибках, для отправки разработчикам;
- тестовые модули, они безусловно нужны, но увеличивают время разработки в разы;
- легкий json парсер, для максимального обхода ошибок лексики. Т.е. чтобы небольшие ошибки документа просто игнорировались бы;
- обновления фильмов в списке, в фоновом режиме, с определенной периодичностью;
- реализация конфигурационного файла и модуля работы с ним;