ФорумПрограммированиеПыхнуть хотите?Battles → Паук (открывающий сезон)

Паук (открывающий сезон)

  • vasa_c

    Сообщения: 3131 Репутация: N Группа: в ухо

    Spritz 24 сентября 2007 г. 6:09, спустя 19 секунд

    [size=12]И пришел пауг[/size]

    Задача: проиндексировать содержимое набора страниц.

    Испытание состоит из нескольких частей.
    Смысл в том, что люди, уровня несколько выше начального, в состоянии выполнить все эти части.
    Другое дело, что выполнить каждую из них, можно совершенно на различном уровне. Кто сделает круче, тот, соответственно, и круче :)

    Так же конечные результаты оцениваются, не как "выполнил/невыполнил". Можно проиндексировать не все страницы, а только часть. Чем больше часть, тем лучше.
    Так же учитывается скорость и удобоваримость кода.


    Каждый бойцу выделяется каталог. Нужно проиндексировать, как можно большее количество страниц в этом каталоге, начиная с корневой.


    Структура страницы

    На странице может быть любое мясо. Из этого мяса нам нужно:

    1. Слой (<div>) с идентификатором "content". Его содержимое и есть, то, что нужно проиндексировать.
    2. Ссылки. Ссылки могут быть разные. Абсолютные, относительные, зеленые и красные. Могут вести внутрь каталога, на другие сайты, на другие каталоги текущего сайта. Нас интересуют только ссылки на наш каталог. Эти страницы нужно проиндексировать. Так же в ссылках могут быть параметры после "?", якоря после "#" и т.п.
    3. У ссылки может быть rel="nofollow". Такие страницы индексировать лучше не нужно.

    Желательно, не забыть про возможность наличия тега <BASE>

    Переадресация

    Часть страниц может содержать переадресацию. Либо с помощью HTTP 302, либо через <meta-refresh>. Желательно при этом — перейти по рефрешу.
    Если сложно, можно забить.

    Куки

    На страницах могут ставится куки. Некоторые страницы будут доступны только при правильной комбинации кук.
    Так что желательно куки обрабатывать.
    Сложно — можно забить. Часть страниц не проиндексится.

    На выходе

    На выходе нужен файл со строчками вида:
    <адрес страницы>|<содержимое нужного дива>

    Средства

    В зависимости от квалификации можно страницы грузить по различному.

    file_get_contents() - ну это вообще неинтересно
    curl - для более продвинутых
    сокеты - чтобы показать наибольшую крутость :). Наибольшая из наибольшей крутость — использовать HTTP/1.1 с учетом всех "100 Continue", чункед-кодирования и т.п.

    Скорость

    Страниц очень много. Просто так, последовательно грузить каждую - долго.
    Желательно сделать это всё параллельно.
    Есть мультикурл, но он просто так не позволяет добавлять новые задания в процессе выполнения, обрабатывать уже завершенные, до завершения всего блока.

    Самая интересная и высокооцениваемая часть.



    Само задание, конечно, чепуховина. Но если хорошо проработать решение, его можно использовать в дальнейшем для много более полезных вещей.
  • md5

    Сообщения: 11958 Репутация: N Группа: в ухо

    Spritz 24 сентября 2007 г. 6:48, спустя 39 минут 54 секунды

    О_о
    столько новых слов узнаешь из одного только задания…
    все умрут, а я изумруд
  • cage

    Сообщения: 429 Репутация: N Группа: Кто попало

    Spritz 24 сентября 2007 г. 8:12, спустя 1 час 23 минуты 44 секунды

    cage у аппарата=)
  • md5

    Сообщения: 11958 Репутация: N Группа: в ухо

    Spritz 24 сентября 2007 г. 8:14, спустя 1 минуту 25 секунд

    Ну чо? Кто какой путь выбрал?
    я, например, выбрал концепцию, "последний момент — самый ацкий" :)
    все умрут, а я изумруд
  • cage

    Сообщения: 429 Репутация: N Группа: Кто попало

    Spritz 24 сентября 2007 г. 8:20, спустя 6 минут 42 секунды

    Куки и переадресация…они важны?
  • vasa_c

    Сообщения: 3131 Репутация: N Группа: в ухо

    Spritz 24 сентября 2007 г. 8:23, спустя 2 минуты 24 секунды

    Всё важно )
  • TRIAL

    Сообщения: 988 Репутация: N Группа: Джедаи

    Spritz 24 сентября 2007 г. 8:47, спустя 24 минуты 45 секунд

    А я пожалуй сниму свою кандидатуру :)
    Уж больно круто тут всё. Думал осилю, но если и сделаю то самый ужасным способом из всех существующих )))
    from TRIAL with LOVE
  • adw0rd

    Сообщения: 22957 Репутация: N Группа: в ухо

    Spritz 24 сентября 2007 г. 8:53, спустя 6 минут 3 секунды


    А я пожалуй сниму свою кандидатуру :)
    Уж больно круто тут всё. Думал осилю, но если и сделаю то самый ужасным способом из всех существующих )))


    какая разница, не на работу же тебя берут, триал харош! твоя отмаза не прокатила, назад дороги нет))
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • vasa_c

    Сообщения: 3131 Репутация: N Группа: в ухо

    Spritz 24 сентября 2007 г. 8:56, спустя 2 минуты 22 секунды

    Самый ужасный способ из существующих — отмазаться, когда поздно :)
  • cage

    Сообщения: 429 Репутация: N Группа: Кто попало

    Spritz 24 сентября 2007 г. 8:57, спустя 1 минуту 40 секунд

    самое главное,какой срок даецца(ну чтобы не стыдно было,а то буду тянуть до последнего=))
  • md5

    Сообщения: 11958 Репутация: N Группа: в ухо

    Spritz 24 сентября 2007 г. 9:01, спустя 3 минуты 21 секунду

    я думаю, недели всем хватит?
    все умрут, а я изумруд
  • cage

    Сообщения: 429 Репутация: N Группа: Кто попало

    Spritz 24 сентября 2007 г. 9:02, спустя 1 минуту 31 секунду

    ты наверно читал,как программисты дом строят=)
  • md5

    Сообщения: 11958 Репутация: N Группа: в ухо

    Spritz 24 сентября 2007 г. 9:26, спустя 24 минуты 3 секунды

    да, конечно )
    все умрут, а я изумруд
  • adw0rd

    Сообщения: 22957 Репутация: N Группа: в ухо

    Spritz 24 сентября 2007 г. 9:38, спустя 11 минут 47 секунд


    ты наверно читал,как программисты дом строят=)


    я не читал)) дай ссылко))
    https://smappi.org/ - платформа по созданию API на все случаи жизни
  • TRIAL

    Сообщения: 988 Репутация: N Группа: Джедаи

    Spritz 24 сентября 2007 г. 10:05, спустя 26 минут 24 секунды

    Офигенный рассказ )))
    2 раза читал, 2 раза рыдал )))
    Ну ладно, попробую. Но делать буду всё на get_file_content().
    from TRIAL with LOVE

Пожалуйста, авторизуйтесь, чтобы написать комментарий!