Необходимо продемонстрировать умение не только решать поставленную задачу, но и качественно оформлять код:
-
выбирать содержательные названия для классов, методов и переменных;
-
писать разумные комментарии к каждому классу и методу, указывать тип и описание для каждого параметра;
-
создавать методы и классы разумного размера (по количеству строк);
-
использовать константы с понятными названиями вместо «магических чисел».
Необходимо обдумать не только «позитивный» случай, но и возможные ошибки в процессе обработки (на практике они более чем возможны). В том числе случай, когда меняется структура страниц и алгоритм перестаёт функционировать корректно. Все такие ошибки должны правильно и, по возможности, унифицированно обрабатываться.
Задание
Реализуйте автоматизированный поиск тем по ключевым словам на вашем любимом форуме.
Предполагаемый алгоритм решения задачи
-
залогиниться на форуме, используя предоставленные логин и пароль аккаунта, если это требуется для получения списка пользователей;
-
получить список тем с ключевыми словами, используя поиск по форуму;
-
собрать все названия и URL тем из списка результатов, а также количество сообщений в каждой из них;
-
желательно также получить стартовое сообщение темы.
Технологии
Задание нужно реализовать на Ruby On Rails в виде API-вызова, где логин и пароль аккаунта, а также поисковая фраза (query
) являются GET-параметрами, а ответ — JSON-объектом с полем success: true
, data
- списком объектов с полями title
, body
, replies_count
, url
, описывающих найденные темы.
Рекомендуем продумать архитектуру решения: желательно выделить «низкий уровень» элементарных запросов и «высокий уровень» управления навигацией и обработки ошибок навигации. Обязательно использовать принцип «тонких контроллеров» для resque jobs.