Яндекс.Директ меня не любит

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

Проверка параметров функций на корректность

В позапрошлую пятницу я поучаствовал в одном интересном обсуждении. В общих чертах, речь шла о том, как нужно и как не нужно проверять параметры функции. В частности же, были окончательно затоптаны и преданы анафеме бренные останки функций IsBadReadPtr и IsBadWritePtr.

Если вы читали «Should I check the parameters to my function?» в блоге Larry Osterman, и являетесь сторонником второго подхода – можете дальше не читать. :-)

Read On →

Bug fixing как часть прикладной психологии

Порой исправление даже самых очевидных ошибок может буксовать из-за особенностей человеческой психологии. Свежий пример: компонент A передаёт компоненту B набор параметров, в том числе текстовые строки. Строки передаются в виде UNICODE_STRING, т.е. как текстовые строки, не требующие завершающего нулевого символа. Не смотря на это, компонент A передавал строки с завершающим NULL (упакованные в UNICODE_STRING), а компонент B проверял приходящие строки на наличие нуля. Так они и работали, пока между ними не вклинился третий компонент X.

Read On →

Список нововведений в Vista/Longhorn

Хороший список нововведений в ОС Windows Vista / Longhorn. Список периодически обновляется, не смотря на то, что статья датирована июнем 2006 года.

Булавочное колесо

Немного устаревшая новость – из снимков Хаббла и наземных телескопов собрали самую подробную фотографию галактики, доступную широкой публике. Размеры финального изображения – впечатляющие 16000 на 12000 пикселей. Ух! Знакомьтесь, M101 “Булавочное колесо” (the Pinwheel Galaxy): По ссылке можно скачать как полную 444MB версию снимка, так и более ходовые варианты для обоев рабочего стола.

Список "опасных" функций

В MSDN добавили список “опасных” функций и рекомендуемых безопасных аналогов.

Read On →

DuplicateHandle

Функция DuplicateHandle обладает одной особенностью. Она позволяет указывать набор прав доступа (параметр dwDesiredAccess), которыми должна обладать создаваемая копия описателя. Причем, что интересно, в некоторых случаях новый описатель может получить больше прав доступа, чем оригинал. Об этом вскользь упоминается в MSDN, однако никаких дополнительных разъяснений не даётся:

Read On →

Странное

Оказывается двойной щелчок левой кнопкой мыши на иконке системного меню в левом верхнем углу окна закрывает окно. Надо же… :-/

/LARGEADDRESSAWARE может испортить вам весь день

Только что потратил кучу времени на разборки с /LARGEADDRESSAWARE. Этот ключ используется для указания сборщику, что данный модуль (.exe или .dll) способен корректно обрабатывать адреса больше 2GB. Модули, помеченные подобным образом, могут быть загружены выше 2GB при условии, что система поддерживает увеличенное пользовательское адресное пространство. На данный момент это либо серверные версии Windows, сконфигурированные ключом /3GB в boot.ini, либо 64-х битные версии системы.

Read On →

Шпаргалка по синтаксису командной строки

Шпаргалка по синтаксису командной строки (cmd.exe) - http://www.ss64.com/ntsyntax/. Must have если вы пишите нетривиальные скрипты. Там же есть аналогичные шпаргалки для bash, Oracle 9i и MS SQL 2005.