среда, 11 ноября 2015 г.

Балансировка списка Known DLLs

Это перевод The Known DLLs Balancing Act. Автор: Реймонд Чен.

Неформально названная "Known DLLs" ("Известные DLL") возможность Windows является простым списком DLL (Dynamic Link Library), с которым специально сверяется системный загрузчик. Когда загрузчик загружает DLL со ссылкой на "известную" DLL, то копия "известной" DLL загружается сразу же, стандартный список поиска DLL игнорируется. Некоторые люди могут рассматривать этот механизм как механизм безопасности (хотя и довольно слабый), но в действительности же безопасность никогда не была целью этой возможности. Known DLLs создавались исключительно для улучшения производительности системы.

Выбираемся из DLL Hell

Это перевод Getting Out of DLL Hell. Автор: Реймонд Чен.

DLL HELL. Проблема настолько коварна, что она имеет своё собственное негативное прозвище. Вы устанавливаете одну программу, и вдруг какая-то другая, казалось бы, не связанная программа перестаёт работать. Это потому, что, хотя вам это неизвестно, но две программы связаны через общий файл DLL. Эти две программы могут иметь различные идеи о том, какую версию файла MSVCRT.DLL нужно хранить в системном каталоге. Или первая программа может обновить элемент управления ActiveX, который также использует вторая программа - сделать обновление, с которым вторая программа не полностью совместима.

четверг, 8 октября 2015 г.

Два худших ПК в истории

Это перевод The Two Worst PCs Ever. Автор: Реймонд Чен.

В марте 2007 PC World составил список десяти худших персональных компьютеров в истории. Два первых места бросились мне в глаза - потому что мы вообще-то используем их в работе. Ну, "используем" - это громко сказано. Мне следовало сказать: "я познакомился с этими компьютерами, когда они прожили большую часть своего рабочего цикла в офисах сотрудников Microsoft".

суббота, 18 июля 2015 г.

Что в Windows 3.1 делала кнопка "Игнорировать" в диалоге GPF?

Это перевод What did the Ignore button do in Windows 3.1 when an application encountered a general protection fault? Автор: Реймонд Чен.

Когда ваше приложение вызывало General Protection Fault (GPF, общее нарушение защиты, сегодня известное как Access Violation) в Windows 3.0, система показывала такой диалог об ошибке:

суббота, 21 февраля 2015 г.

Почему у каждого диска есть свой собственный текущий каталог?

Это перевод Why does each drive have its own current directory? Автор: Реймонд Чен.

Комментатор Dean Earley спросил: "Почему есть 'текущий каталог' и 'текущий диск'? Почему бы их не объединить?"

FPO

Это перевод FPO. Автор: Ларри Остерман.

На прошлой неделе я болтал с одним парнем из команды измерения производительности. Он мне рассказал историю, которая меня очень удивила. Как оказалось, они обнаружили проблему производительности в одном стороннем драйвере. К сожалению, у них возникли проблемы в локализации узкого места, поскольку разработчик драйвера скомпилировал его с FPO (Frame Pointer Ommission) и не предоставил отладочную информацию.

Что тут удивительного? Ну, я удивился что сегодня вообще кто-то использует FPO.

Но что такое FPO?

среда, 14 января 2015 г.

Почему системный файловый диалог меняет текущий каталог?

Это перевод Why does the common file dialog change the current directory? Автор: Реймонд Чен.

Когда вы перемещаетесь по папкам в системном диалоге открытия (или сохранения) файлов, то диалог вызывает функцию Set­Current­Directory, передавая ей каталог, в который вы перешли (эй, не заставляйте меня возрождать уголок зануды).

Окей, возможно, вашей первой реакцией будет: "Правда? Я вообще не знал, что он так делает!" Что ж, это ещё одна страница в истории проклятия текущего каталога.

Хорошо, но теперь возникает вопрос: "А зачем диалог это делает?"

Ваш отладочный код может быть уязвимостью в безопасности: подгрузка опциональной отладочной DLL без указания полного пути

Это перевод Your debugging code can be a security vulnerability: Loading optional debugging DLLs without a full path. Автор: Реймонд Чен.

Запомните: плохих парней не заботит, если вы добавили код лишь для целей отладки. Если есть код - они его атакуют.

вторник, 13 января 2015 г.

Одна из причин, почему ShellExecute возвращает SE_ERR_ACCESSDENIED, а ShellExecuteEx возвращает ERROR_ACCESS_DENIED

Это перевод One possible reason why ShellExecute returns SE_ERR_ACCESSDENIED and ShellExecuteEx returns ERROR_ACCESS_DENIED. Автор: Реймонд Чен.

(этот странный заголовок написан для поисковой оптимизации)

Один клиент сообщил, что при вызове ShellExecute эта функция иногда завершалась с ошибкой SE_ERR_ACCESSDENIED (= 5) - в зависимости от того, что они пытались открыть (а если бы они использовали ShellExecuteEx, то они получали бы ошибку ERROR_ACCESS_DENIED (перевод поста)).

На одну короткую минуту славы DirectX стал более популярным чем другое слово, заканчивающееся на X

Это перевод For a brief shining moment, DirectX was more popular than another word that ends in x. Автор: Реймонд Чен.

В месяц сразу после выхода DirectX 3 слово "directx" стало самым популярным для поиска на microsoft.com. Само по себе, это не было столь удивительным.