Разрядность ключа «Image File Execution Options»

Ключ «Image File Execution Options» знаком, наверное, всем кто вынужден тратить много времени на отладку приложений. В частности, с его помощью можно указать системе всегда запускать определённый процесс под отладчиком. В этом же ключе утилита gflags.exe сохраняет выбранные отладочные опции и т.д. За подробностями рекомендую обратиться в Google, там есть много полезного.

Read On →

Фраза дня

Фразы “I really appreciate the detailed response.” и “I’d really appreciate the detailed response.” очень похожи внешне и первая по-привычке читается как вторая. А зря… P.S. Хорошо, что человек с чуством юмора попался.

Microsoft будет собеседовать кандидатов из России, Украины и Белaруси

Очередной цикл собеседований планируется в феврале и июне. Как обычно набираются разработчики (SDE) и тестеры (SDET). До февраля времени осталось совсем не много, так что стоит поторопиться и отправить резюме до конца января. Адрес для отправки: russrec@microsoft.com. Предполагается, что успешным кандидатам предложат позиции в Редмонде и Вакувере. С требованиями к кандидатам и прочие подробности можно посмотреть здесь. Upd: В феврале будут набирать в Windows Core (Deployment, Kernel/VM и Networking). В июне - еще не ясно, скорее всего тоже в Windows. Read On →

Как посмотреть содержимое реестра из-под отладчика

_Сижу дома простуженный. Ни о чём писать не хочется, поэтому буду краток. _

Команда !dreg в WinDbg позволяет просматривать содержимое реестра прямо в процессе отладки. Это особенно удобно в двух случаях:

  1. При удалённой отладке, когда сессия отладчика - это единственный вид доступа к удалённой машине. Такое встречается сплошь и рядом, например, если удалённая машина находится в другой сети или домене;

  2. В случае, когда отладчик пользовательского режима контролируется ядерным отладчиком. Это тоже, в общем-то, вариант удалённой отладки, только в этом случае до отлаживаемой машины достучаться кроме как через отладчик вообще никак нельзя.

К сожалению !dreg не работает в ядерном отладчике, вернее работает, но показывает реестр той машины где запущен kd.exe, а не целевой, так бы этого не хотелось. Иначе бы счастье было бы полным.

Read On →

И кнопочку «Повтор» не забудьте!

Юнит тесты, в отличие от многих других видов тестирования, обладают одной замечательной особенностью. Они обеспечивают практически 100% (a в теории - так точно 100%) повторяемость результатов. Грубо говоря, после успешного прогона тестов можно с уверенностью говорить, что покрываемые тестами сценарии работают. Гарантированная повторяемость важна для обнаружения быстрого регрессий, рефакторинга кода и множества других вещей. Как обычно, окунание в реальность сильно портит эту радужную картину.

Read On →

Разрядность .NET сборок

Вскоре после написания поста про определение разрядности исполняемых файлов выяснилось, что в мире .NET «всё совсем по-другому».

Read On →

Garden d'Lights

Ежегодно в ботаническом саду, что в Беллвью (Bellevue Botanical Garden), проходит фестиваль «Garden d’Lights». В саду выставляются светящиеся фигуры растений, птиц и животных, так что, с наступлением темноты, сад превращается в рождественскую сказку.

Read On →

Гелий, как запрет на полёт к звездам

Какая прелесть! Плотность жидкого гелия, при температуре 4,2 К составляет 0,13 г/см3. Он обладает малым коэффициентом преломления, из-за чего его трудно увидеть. В ближнем космосе должна быть сферическая поверхность , где температура достигнет точки конденсации гелия. Учитывая, что космическиая среда на 99, 9% состоит из гелия и водорода, можно допустиить наличие невидимой оболочки из жидкого но плотного гелия. Сможет ли ракета, летящая с около_световой скоростью, преодолеть этот барьер? Не разобьётся ли о плёнку из гелия? Read On →

Наблюдение

Wordpress’овский спам-фильтр (Askimet Spam) периодически пропускает спам в комментариях. А GMail’овский спам-фильтр успешно съедает уведомления о таких комментариях. В результате толку от таких уведомлений никакого. Пришлось написать соответствующий фильтр в GMail.

Эта страшная функция GetRawInputDeviceList

Функцию GetRawInputDeviceList можно смело приводить в качестве антипримера правильно спроектированного API. Эта функция используется для получения списка описателей устройств ввода (raw input devices). Ничего сложного. Прототип функции тоже выглядит довольно невинно - всего три параметра, и, как кажется по началу, назначение каждого довольно очевидно.

UINT GetRawInputDeviceList(
    __out_opt PRAWINPUTDEVICELIST pRawInputDeviceList,
    __inout PUINT puiNumDevices,
    __in UINT cbSize
    );
Read On →