пятница, 23 марта 2012 г.

Открыл для себя GreaseMonkey.

Я уже упоминал о том, что для автоматизации задач веб-навигации использую расширения для Firefox такие как iMacros, Custom Buttons и Custom buttons2, но вот обнаружил еще один и судя по всему для большинства задач он лучше вышеупомянутых.

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

iMacros – мощнейший инструмент, позволяющий записывать макросы автоматически, причем он может не только работать с DOM, но и отслеживать движения мышки, благодаря чему можно автоматизировать работу с теми же Flash-приложениями и многое другое. Там есть свой собственный макроязык, который имеет ряд полезных возможностей и удобств, так же можно работать с сохраненными данными и многое другое. Кроме того, для каждого скрипта или макроса можно создавать закладки, которые впоследствии легко организовать иерархически, не загромождая при этом пространство браузера, да и полный список доступных скриптов и макросов организован на отдельной раскрывающейся панели тоже иерархически.

Расширения для добавления кнопок (Custom Buttons и Custom Buttons2) мене удобны и менее функциональны, чем iMacros, да и пространство загромождают, но они хороши тем, что можно быстро, в пару кликов, создать новую кнопки, написать скрипт и тут же его запустить. Если не работает, тут же что-то подправить и снова запустить. Код, написанный для кнопки, вполне можно использовать  в iMacros, что в конечном итоге делает эти два расширения хорошим инструментом для создания и первичного тестирования скриптов, которые впоследствии можно использовать в других расширениях.

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

Если в других расширениях каждый скрипт представляет из себя отдельную команду, то в GreasMonkey скрипт – это набор команд. Это обстоятельство уже само по себе дает возможность повторного использования кода. То есть, если на некотором сайте, есть набор операций, актуальных именно для этого сайта, а автоматизация заключается в том, чтобы комбинировать эти операции с различными параметрами или команды просто должны использовать одни и те же функции, то все операции, применимые для данного сайта, можно записать в одном скрипте в виде отдельных функций. Команды же будут находиться в этом же скрипте. Причем команды – это те же функции, только для них есть простая процедура регистрации, которая состоит в том, что функцию надо передать специальному методу и она будет зарегистрирована как команда(подробнее здесь).

Еще одной замечательной особенностью данного расширения является то, что каждый скрипт будет доступен только на тех страницах, для которых он написан. Иерархическая организация скриптов хоть и решает многие проблемы, но когда скриптов становится много, ориентироваться в их дереве тоже становится неудобно. Кроме того, некоторые скрипты могут корректно работать только на определенных страницах, если же их запустить где попало, то результат может оказаться весьма плачевным, особенно если учесть, что скрипты нередко и запросы на сервер отправляют, что может оказаться особенно неприятным, когда Вы на сайте имеете какие-то полномочия, с которыми надо быть осторожным. Фильтрация команд осуществляется двумя типами паттернов: паттерны включения и паттерны исключения страниц. И то и другое позволяет указывать страницы с помощью Wildcard или регулярных выражений. Причем, если  паттерн включения может соответствовать страницам, на которых скрипт не должен быть доступен, то такие страницы можно описать паттернами исключения.

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

В общем и целом, первое впечатление от расширения – очень благоприятное.

Комментариев нет :

Отправить комментарий