bash.im ithappens.me zadolba.li
1142

Десять строк хорошего кода заменяют сотню ленивых юзеров

В 2007 году я разрабатывал небольшую самописную ГИС с картами Москвы для мелкого завода. Бесплатных данных не было, и я кое-как за месяц расковырял одну систему с картами, успешно «спиратив» исходники. Немного позже потребовались геоданные для Московской области. В той программе их не было, зато нашлась другая в виде отсканированного атласа, на который были нанесены векторные метки. Сами данные хранились в каком-то невероятном формате; времени на разбор не было, система была нужна «здесь и сейчас».

Идея пришла моментально. Из-под моих плящущих по клавиатуре пальцев вылетали куски кода:
— отправляющего сообщения вида «нажата кнопка „вправо“», «нажата кнопка „влево“», «нажата кнопка „Page Down“» окну;
— распознающего серые окружности, изображающие города;
— получающего название города из текстового поля;
— двигающего мышь в нужную позицию.

Всё было собрано в программу-потрошитель. Она искала окно «жертвы», переводила карту в левый верхний угол, распознавала города на текущем сдвиге, запоминая их координаты, получала названия и сдвигала экран вправо. Процесс повторялся — если был достигнут край карты, экран опускался вниз.

Запуск невероятно порадовал — по экрану как угорелый скакал курсор мыши, кликал в окружности-города, названия которых сменяли друг друга с невероятной скоростью. Всё моргало и двигалось, производя самое фантастическое впечатление. Через десять минут вся карта была сграблена.

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