четверг, 9 сентября 2010 г.

Клавиатура девелоперу друг ли?

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

Буквально сегодня уж очень меня утомили непонятные мемори-лики в OLE. А тут… эта… © такое дело, приспичило мне вот именно сегодня по research`ить, и прикрутить фишку, которую ну очень давно уже хотел сделать. Не первый год-то точно хотел и пробовал. Но все как-то руки не доходили – решения не красивые, зависимости от версий Windows, или какие-нить недопустимые требования (долой использование COM!).

Примочка с виду простая: окна на экране нет, но его иконка есть в списке переключения окон в Alt+Tab. Вообще говоря, это обычное дело: окно свернули в трей, а вот поднять его оттуда в этом случае можно только мышом. А вот с иконкой в Alt+Tab можно уже и клавой. Девелоперы меня поймут: все таки мышь у нас на столе по большому счету только для полной комплектации да чтоб пыль было чем протирать. Все-таки когда неделями, месяцами, годами пишется код, то обращаться с 99 процентами задач хочется именно клавой. Просто потому что так удобнее и привычнее.

А аккурат пару неделек назад образовалось в голове направление куда копать. Причем надо сказать, толковое такое направление: ни вам хаков, ни вам инжектов, ни горячих клавиш. Все кошерно - пара окон, пара стилей - работает как часы от вин95 до XP включительно (выше не проверял).

Ну да суть да дело - как-то все не досуг было покрутить идею. А намедни меня эти мемори-лики уже в тоску вгонять начали. Где течет? С чего течет? Почему движок IE не освобождает память!?! Ни черта непонятно. В общем, упадок сил да депрессия не за горами. Срочно нужна моральная победа! Ну да и давай ковырять эту красивую идею про иконку в Alt+Tab. Куда ведь интереснее ковыряться в системе, чем ловить непонятные и трудноуловимые баги в большом проекте... Проковырялся я аж пол-дня, ни пимши, не емши. Ну ни в какую! Не раскалывается орешек и всё тут - где-то по всему видно косипорю. Более-менее получается понемногу, но все как-то вокруг да около. Кожей ощущаю, что верное направление - но "не выходит каменный цветок".

Ладно, надоело к чертям. На сайте дел не в проворот. Два больших релиза на носу, семейных проблем хватает - а я тут выёгиваюсь, понимаешь. Потянуло, ага, значит на исследования. А ну его это хобби в болото – не досуг, не до примочек. Лапы в гору, проще говоря. Отписываю Кристиану Жислеру (автор Total Commander), в стиле "колись дорогой", как и что (а впервые схожее решение видел именно у него, поэтому ему и отписал). Ну и отваливаю от компа, морду лица сполоснуть да и вообще отдохнуть от кода.

Отхожу - ну, скажем, на кухню за кофейком... Хотя понятно, какое именно заведение попадается на пути на кухню :). Пропадаю в "походе за кофейком" минут так на 10. Посидел значит, подумал значит, перекурил опять же. И у-у-упс…  Возвращаюсь, два взмаха кистью, три мазка по коду. Запускаю... Работает! Вот и призадумаешься, что чтобы найти ответ на вопрос нескольких лет, нужно всего лишь просра… тьфу-ты, сходить “за кофейком” минут на 10, но только обязательно без клавы под рукой. Дыбы мысль главенствовала, а не руки стучали по клаве, а мысль за ними суетливо поспевала, разбиваясь об ухабы багов.

PS: Жислер кстати ответил к ночи. Но опоздал. Решение действительно нашлось верное, и самостоятельно, хотя и похожее на его как две капли воды.

PPS: наверное надо бы выложить куда-то пример решения. Не я же первый ломал над ним голову. Дык это ж код причесывать надо, комментариями все описывать, примеры использования приводить. Не царское это дело! :) Выложу видимо попозже, а кому невмоготу стучите в почту или в аську в профиле.