уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.

Сегодня, как ни странно, но на работу с “Пинговалкой” времени на много меньше, чем вчера и позавчера. Соответственно и сделано по-меньше, но, тем не менее, хоть что-то. Как говориться “Ни дня без строчки кода!” :)

Вчера день был полностью занят работе с XML, а точнее, переход к концепции Ribbon UI – по возможности сделать выполнение задачи в один клик по команде в ленте. С Sitemap в этом плане проблем не возникло – файлы по объему небольшие. работа выполняется быстро даже на самых “дряхлых” компьютерах. Сегодня работа крутилась вокруг парсинга информации со страниц сайта.

Основное внимание было уделено скорости парсинга. Кстати, для тех, кто интересуется работой по парсингу определенного контента с web-страниц, обо всех реализуемых операциях я писал здесь и здесь. Так что, при желании, сможете реализовать то же самое, что и делал сегодня я, а именно получение:

  1. Заголовка страницы
  2. Ключевых слов

Именно этих данных не хватало, чтобы сделать полноценный пинг с использованием метода XML-RPC weblog.extendedPing.

В принципе парсинг идёт довольно шустро, даже без использования потоков, однако обнаружилась парочка неприятных моментов, которые требуется решить (помощь в решении – приветствуется)

Проблема №1. Если сайт является блогом на blogpost.com, то для Google чтение данных идет слишком уж быстро :) И примерно раз в 10-15 страниц вместо заголовка вываливается 500 ошибка, а вместо ключевых слов “Service Unaviable”.

Пока вижу два варианта решения проблемы:

  1. Делать задержку между запросами.
  2. Использовать прокси.

Оба решения имеют как свои преимущества, так и недостатки. Первый способ удобно использовать на малом количестве страниц – небольшая временная задержка, в принципе, будет малозаметна. Но, если заглядывать немного вперед, то на больших проектах, скажем в 1000 страниц такой подход может очень сильно “затупить” работу.

Второй вариант, лично для меня, сейчас видится более приемлемым, т.к. в этом случае никаких задержек делать не требуется, но тут мы получаем вторую проблему – прокси имеют свойство довольно быстро “умирать”. Поэтому появляется необходимость делать в программе дополнительную возможность – “прозвон” списка проксей на предмет “мёртвости”. Это же, в свою очередь влечет за собой проблему №2:

Проблема №2. Отклонение в реализации рекомендаций Ribbon UI – операция в один клик уже просто так не пройдет, т.к. может повлечь за собой очень медленную работу, в случае, если по ходу работы потоков будет попадаться большое количество “мертвых” проксей.

Частичное решение проблемы, в принципе, найдено, но пока находится в стадии “держу в уме”. Видимо, займусь этим вопросом немного позже (может завтра).

Таким образом, на данный момент “Пинговалка” научена относительно быстро парсить информацию по странице.

Второй момент, которым сегодня занимался по ходу дела парсилки – размышлял над вопросом как похудеть “Пинговалке”. Очень уж разжирела программка в силу внедрения Ribbon Controls. Покопался в старом коде, подавил кое-чего лишнего, кое-что переписал. В итоге программа “похудела” примерно на 300 Кб без потери (и даже с приростом) в скорости работы. Понятно, что сегодня вес exe-шника в 3-5 Мб никого особенно не удивляет, но раз по-ходу работы можно оптимизировать не только скорость, но и размер – почему бы и не оптимизировать. Кстати, часть кода была “удавлена” из-за ненадобности в силу перехода от Lazarus к Delphi.

Вот так быстро, не успев толком начаться, кончился второй день работы над “Пинговалкой”. Но лучше так, чем вообще ни как. Следующий отчет – завтра.

Уважаемые пользователи “Пинговалки”, буду благодарен за предложения и пожелания по развитию программы. Не обещаю, что все дельные советы реализуются прямо в следующем релизе программы, но по мере разработки – буду добавлять новые функции.

уважаемые посетители блога, если Вам понравилась, то, пожалуйста, помогите автору с лечением. Подробности тут.
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
1 Комментарий
Межтекстовые Отзывы
Посмотреть все комментарии
Kirill
Kirill
05/04/2011 02:39

Проблема №1
Ещё один вариант: можно скопировать данные, собранные с главной страницы — поисковику думаю будет пофигу.