Новая версия CodeBurner была выпущена. Этот выпуск не зависит от Firebug — это отдельное расширение, и в течение ограниченного времени поставляется в комплекте с бесплатной книгой! Хватай свою сейчас.
Сегодня мы запустили FireScope CodeBurner , новое дополнение для Firebug, которое расширяет его ссылочными материалами для HTML и CSS .
Как оказалось, разработка для Firebug существенно не отличается от разработки любого другого расширения Firefox. Я в долгу перед Яном Одварко за его серию постов о расширении Firebug , из которых я получил основы, необходимые для его работы — как подключиться к пространству имен сценариев Firebug, как добавить элементы управления в его пользовательский интерфейс и как использовать имеющиеся у него объекты сценариев.
Но помимо небольшого количества базовых статей, подобных этому, API-интерфейс Firebug по сути недокументирован, и поэтому мне пришлось сделать немало того, что вы могли бы назвать «исследовательским программированием» — ковыряться в исходном коде, чтобы искать код, похожий на него. может сделать то, что мне нужно. Например, FireScope CodeBurner должен иметь возможность извлекать все свойства CSS, которые применяются к данному элементу, чтобы он мог искать в справке информацию о каждом из них. Мы уже знаем, что Firebug может это сделать, потому что он находится прямо на панели «Стиль», но как нам подключиться к нужным процессам, чтобы получить информацию, где и когда она нам нужна? К счастью, так как Firebug с открытым исходным кодом, он ничего не может сделать, что не может быть обнаружено в конце концов, даже если это займет некоторую охоту!
Процесс, который я использую для нахождения подобной функциональности, является своего рода обратным инжинирингом, когда вы начинаете с конечного результата и работаете в обратном направлении. Например, я начал с поиска кода, который обращается к той части пользовательского интерфейса, где я знаю, что отображается информация CSS , и я могу посмотреть в файлах XUL Firebug, чтобы узнать, где это находится ( XUL — расширяемый язык пользовательского интерфейса используется Firefox для определения его компонентов пользовательского интерфейса ). Найдя этот код и обнаружив, что он содержится в методе, я могу еще раз оглянуться назад, чтобы найти места, на которые ссылается этот метод. И так далее, с помощью вызовов методов и ссылок, пока в конце концов я не найду код, который фактически извлекает эту информацию из CSS DOM .
Хотя этот процесс обратного обнаружения и является сложным, а иногда и запутанным, он позволяет мне работать с самым сложным и абстрактным кодом и позволяет создавать такие инструменты, которые в значительной степени полагаются на функциональность из недокументированной кодовой базы .
Это не то, что нравится всем, потому что это требует много времени и определенного терпения, но я нахожу это невероятно приятным, когда все это работает — и это делает процесс приятным для меня.
Как насчет тебя? Вам нравится такая задача программирования, или само понятие оставляет вас холодным?