-
Notifications
You must be signed in to change notification settings - Fork 0
Gromskyj/searchText
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
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 0
No packages published