На тьму надейся, а сам не плошай

Для продукта, над которым я сейчас работаю, нужно было сделать инсталляцию под Windows. Установить несколько файлов, создать пару ключей в реестре, обновиться на более свежую версию,.. - как раз работа для WiX. WiX, - он, конечно, не без греха. Все-таки, это всего лишь обертка вокруг Windows Installer, чьё нетривиальное нутро то и дело дает о себе знать. Взять хотя-бы тот факт, что Windows Installer понимает черытех компонентный номер версии (a.b.c.d), но при сравнии номеров версий принимает во внимание только старшие три числа. Read On →

Ошибка в книге Windows Internals

В новой редакции Windows Internals обнаружился старый-знакомый баг. Там приводится пример стека 32-х битной нити, выполняющейся под Wow64: Иллюстрация сопровождается комментарием: An example of a Wow64 thread inside Microsoft Office Word 2007 is shown in Figure 5-13. The highlighted stack frame and all stack frames below it are the 32-bit stack frames from the 32-bit stack. The stack frames above the highlighted frame are on the 64-bit stack. Что не совсем верно. Read On →

Про фонетику

Существует мнение, что “в русском языке слова читаются точно так же, как и пишутся”. Ага, щас! Вы пробовали своего ребенка учить читать? “Карова”. Нет, доченька. Пишеться “о”, но читается “а”. Почему? Гм. Ну, как тебе объяснить?.. А мама говорит “корова”? Просто мама говорит по-украински, а там нет правила про безударную “о”. С кем это я сейчас говорил? Не обращай внимания, просто запомни - у папы “карова”, а у мамы - “корова”. Read On →

minidump.py

Если вам вдруг зачем-то понадобилось проанализировать структуру минидампа не загружая его в отладчик, начните вот с этой статьи: http://moyix.blogspot.com/2008/05/parsing-windows-minidumps.html. Автор написал скрипт на Python (на основе Construct) для анализа дампов, который распознает все потоки, описанные на MSDN (а также недокументированный поток, хранящий информацию об описателях окон). PS. Скрипт открывает дамп в текстовом режиме, что очевидно не будет работать на Windows. Чтобы этого не случилось, последняя строчка скипта должна выглядеть вот так: Read On →

Вот, телефон почистил...

Чистил телефон от фотографий. Нашел много интересного. В один прекрасный майский день детскую площадку в парке “Grass Lawn” оккупировали клоуны:

Read On →

Про чипсы и икру

По радио уже пару месяцев (если не дольше) крутят “Little Talks” в исполнении Of monsters and men. Там есть фраза: This ship will carry our bodies safe to shore Причем поется она так, что “this” присоединяется к предыдущей строчке, а “bodies safe to shore” - поется как отдельная строка. Так вот, когда эту песню начали крутить повсюду, мне на этой фразе постоянно слышалось очевидно неправильное “chip and caviar”. :-) В очередной раз, когда меня это безобразие окончательно достало и я уже собрался найти слова песни, по радио опять включили её и тут, наконец-то, до меня дошло, что первое слово - это ship. Read On →

Как сделать копию экрана в Windows

Интересно, что существует около десятка способов сделать копию экрана в Windows. Программно, без привлечения нестандартного оборудования или сторонних библиотек. Статья “Screen recording with WDDM 1.2” описывает наиболее часто используемые: GDI: GetDC(NULL), а затем BitBlt(), чтобы скопировать данные из видеопамяти в системную. Direct3D: метод IDirect3DDevice9::GetFrontBufferData() позволяет скопировать содержимое видеопамяти в системный буфер. Mirror Display Driver: позволяет напрямую перехватывать команды отрисовки. OpenGL: дает прямой доступ к отображаемому буферу в видеопамяти. Windows 8: появился специализированный интерфейс IDXGIOutputDuplication. Read On →

Мое интервью на OpenQuality.ru

Мое интервью на OpenQuality.ru: http://experience.openquality.ru/alexey-pakhunov-interview/.

Дело о пропавшем файле 'ammintrin.h'

Начну издалека. Мой любимый редактор кода на данный момент - Sublime Text 2. До него я пользовался Notepad2, Source Insight, Far (естественно после того, как появился Colorer). Что было до Far-а с Colorer-ом я уже не очень помню. Точно был Borland Pascal и Turbo C. Редактор кода Visual Studio в этом списке должен быть где-то между Borland-ом и Far-ом. Не помню, чтобы я пользовался им продолжительное время.

Отладчику из Visual Studio повезло чуть больше, так как правильно держать WinDbg я научился уже после замены Far-а на Notepad2 пополам с Source Insight. Остальной инструментарий из набора Visual Studio я использую не очень часто, особенно учитывая, что компилятор и другие инструменты все равно есть в отдельно стоящем SDK. Так и получается, что сама по себе Visual Studio мне в общем-то и не нужна.

Единственная неприятность заключается в том, что такая конфигурация (SDK есть, а Visual Studio нет) явно попадает в категорию экзотики. И, как следствие, не поддерживается и не тестируется как следует. Приходится самому.

Read On →

Как перевести SDDL в двоичный дескриптор безопасности

Некторые ключи реестра хранят дескрипторы безопасности (security descriptor) в двоичной форме (REG_BINARY). Пример - значение AccessPermission, которое устанавливает дескриптор безопасности COM сервера. Редактировать такой дескриптор - одно удовольствие. :-)

Read On →