суббота, 12 апреля 2014 г.

Головоломка


Мишка уговорил купить Змейку, что в три раза длиннее обычной.

А надо ли?

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

Тестирование

После собеседования мне наконец-то выслали задание:
В браузере Google Chrome есть такой пункт контекстного меню “Inspect Element”, который показывает информацию о текущем элементе на страничке с возможностью посмотреть свойства его “детей” и “родителей”. Выглядит примерно так.
Суть технического задания: ­написать плагин для IntelliJ IDEA 13, который бы эмитировал данную функциональность. Как это можно сделать? Зарегистрируйте свой action, назовите его “Inspect UI Element” и поместите в меню “Main Menu ­> Tools”.
Это заняло у меня несколько минут, включая настройку проекта, ибо в IDEA уже встроена поддержка разработки плагинов.
После вызова action ожидайте пока пользователь не кликнет куда­-нибудь в идее с зажатой кнопкой Alt. Т.е. нас интересует исключительно Alt+Click, остальные мы игнорируем.
Вот тут уже пришлось задуматься. Игнорировать можно по-разному. Сначала я начал писать обрабоку событий через GlassPane, но потом обнаружил, что полное игнорирование событий не позволяет нам найти нужный элемент UI после того, как выбран наш пункт меню. Поэтому я решил рассматривать слово "игнорировать" как "пропускать остатьные события в систему" и стал использовать AWTEventListener. Так и код короче и можно анализировать UI других приложений, запущенных из IDEA.
После Alt+Click нужно определить на каком компоненте был произведен Click (стартовый компонент) и показать информацию о нём в новом немодальном диалоге. В этом немодальном диалоге, как и в панельке Google Chrome, хочется иметь всё дерево доступных компонентов в распахнутом состоянии с выделенным стартовым компонентом. Справа от дерева нужно отобразить панель свойств (Insets, Border, Font, и другие, которые соответствуют JavaBeans нотации) Панель можно показать в виде таблицы. Конечно, большинство из свойств захочется редактировать. Чем больше их будет, тем лучше.
Теперь осталось найти время и написать этот новый диалог.
Максимальный срок выполнения задания 3 недели.
А вот с этим самое сложное. С работы уходить в отпуск нет желания, поэтому остаётся 6 выходных дней, если учесть, что мы с Мишкой на этих выходных вдвоём, то всего 5.

Все в космос

Для Chrome вышло приложение для изучения звёзд. В Google постарались и сделали хорошую подборку. Изучайте!

ЛИАП - это сила

Поздравляю всех с нашим профессиональным праздником!

Кстати, китайцы сегодня памятник Гагарину поставили.