This repository has been archived on 2024-09-28. You can view files and clone it, but cannot push or open issues or pull requests.
Find a file
2024-09-24 12:09:04 +03:00
project Initialize Idea project. 2024-09-23 11:20:32 +03:00
src/main/scala TitleCrawlerHandler : Return 400 on empty body. 2024-09-24 12:09:04 +03:00
.editorconfig Editorconfig : Add basic config. 2024-09-23 11:20:49 +03:00
.gitignore Flake : Add a basic devshell with sbt & jdk. 2024-09-23 11:41:34 +03:00
build.sbt Sbt : Add dep on scala-scraper. 2024-09-23 18:15:31 +03:00
flake.lock Flake : Add a basic devshell with sbt & jdk. 2024-09-23 11:41:34 +03:00
flake.nix Flake : Add a basic devshell with sbt & jdk. 2024-09-23 11:41:34 +03:00
Input.txt Input : Replace yandex.ru with ya.ru. 2024-09-23 20:10:37 +03:00
Makefile Makefile : Silence stderr for test target & add malformed input. 2024-09-23 16:39:43 +03:00
Readme.md Readme : Replace numeric list with dots. 2024-09-23 21:16:04 +03:00

2gis тестовое задание (Title crawler).

Запуск.

(Optional) Среда сборки используя лучший под солнцем пакетник Nix.

nix develop

P.S. Docker тоже хорошо умею если нужно.

Запуск сервера.

make

Тестирование.

make test

Или вручную отправить POST/PUT запрос с URL на отдельных строках localhost:8000/crawler_title.

Задание.

Необходимо создать простой интернет crawler, который будет доставать из страниц информацию о названии сайта. Это должно быть приложение с http эндпоинтом. На этот эндпоинт поступает список http url'ов. Приложение должно пройтись по всем предоставленным урлам и достать оттуда название. Названием условно будем считать содержимое тэга title. После изъятия информации из всех страниц эндпоинт должен вернуть ответ, в котором каждому входному урлу соответствует найденное название. Все недостающие требования или неоднозначности начальной формулировки задачи вы должны разрешить самостоятельно - это является частью задания. Единственное требование к реализации - приложение должно быть написано на языке Scala.

Скриншот работы
Видео работы Ссылка

Известные проблемы.

  • Малый опыт работы со Scala, hence не знаю многих best practice. Решается просто - кто-то очень опытный проводит код ревью какое-то время. Сам язык мне нравится, но пока не инвестировал в него много времени ввиду неуверенности о наличии работы.
  • sbt отказывается сам воспринимать JAVA_HOME. Не знаю, надо так или нет (тот же Gradle сам цепляет), но я "зашил" костыликом в Makefile.

Источники вдохновения.

  • Simple Http Server
  • Scala Scraper. Изначально думал парсить через регулярки, но потом вспомнил, что плохая идея.

Прочее.

Воздержался от emoji в Readme. Заранее не знаю Ваш предпочтительный уровень профессионализма.

LLM не использую.

Обычно работаю через Issue, но не уверен, примут ли мой гит, а перевозить на гитхаб я их не буду. Поэтому без них, да и шип будет быстрее только :0)