Skip to content

Gromskyj/searchText

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Коротко задание:
Создать приложение для поиска теста на страницах.
Входные параметры:
- Адрес страницы, с которой начинается поиск.
- Количество одновременно выполняемых потоков
- Количество страниц поиска
- Искомый текст

Приложение должно выполнять поиск по страницам, находить ссылки и выполнять поиск по следующим страницам. Поиск должен происходить по графу в ширину. Также должна быть возможность приостановить процесс/продолжить и остановить. 

Результаты поиска должны отображаться в таблице в реальном времени. 


Примечания:
Задание выполнено исходя из поставленной задачи: Тестовое задание 03 версия 0.3
Проект реализован на Objective-C по требованию заказчика
В постановке задач описан общий функционал. Исходя из этого была выполнена работа, с правками и уточнениями из собственных размышлений.

Примечания:
1) Приложение выполняет поиск и парсинг по графу страниц с приоритетом поиска в ширину. Важно: Условие принято, как рекомендация для сбора страниц, но реально добавление в очередь может происходить не всегда в точном порядке, учитывая, что сбор ссылок происходит в разных потоках одновременно. Общий алгоритм сбора не нарушен, но может менять очередь на одном уровне.
2) За ссылку принимается любой текст начинающийся с http(s)://. Можно было использовать регулярное выражение, для выбора ссылок, но подбор идеального решения не выдал того результата, что дает родное решение от Apple. DataDetector выдает самый точный список ссылок, поэтому использовался он.
3) Ссылки не всегда могут быть на страницы, также могу попадаться картинки, скрипты и тд. Для повышения скорости обработки, все ссылки с расширениями картинок, скриптов и тд, пропускаются и не добавляются в очередь
4) Дубликаты ссылок также пропускаются. (Могу проходить одинаковые со слешом и без в конце. Подобные мелочи можно описать. Не добавлялось, чтобы не было избыточности)
5) Линки картинок(или других файлов, не являющихся страницей) не всегда могут иметь расширение, для этого можно подгружать только хедеры, перед полной закачкой. Это учитывал, но не добавлял, в виду отсутствия жесткого требования. По надобности, можно реализовать. Нужно учесть, что не все сервера отдают верные хедеры.
6) Результаты поиска выводятся в таблицу. В ячейке ссылка и статус. Цвет определяет результат поиска теста. (зеленый - текст надйен, красный - не найден или ошибка обработки)
7) Пауза работает по принципу работы NSOperationQueue: останавливает выполнение новых operation, но доводит работу текущих. По необходимости можно описать остановку operation на определенном этапе. 
8) Большое внимание уделялось потребляемой памяти во время работы приложения. Цель достигнута - потребление памяти на минимуме. 
9) Мелкие детали, такие, как UI, правильный формат ссылки для ввода (обязательно с протоколом) не учитывались, так как не являются требованием задачи. 

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published