четверг, 20 апреля 2017 г.

Как создать "сигнальные" значения для указателей в Windows

Это перевод On generating sentinel pointer values in Windows. Автор: Реймонд Чен.

Предположим, что вам нужно несколько т.н. "сигнальных" значений. К примеру, пусть ваша функция работает с указателями на тип Widget, а вам требуется способ передавать значения с особым смыслом, к примеру: "Не указан Widget", или "Используй значение по умолчанию", или "Возьми Widget из родительского объекта", или "Все известные Widget-ы".

вторник, 18 апреля 2017 г.

Как-то раз клиент сообщил об ошибке на карте в Flight Simulator

Это перевод That time a customer reported an error in the map used by Flight Simulator. Автор: Реймонд Чен.

Игра Microsoft Flight Simulator гордится своей точностью и реализмом. Среди прочего, это также включает в себя и карты - потому что в полёте вам как-бы очень нужно знать где вы находитесь. (Есть даже клубы, члены которых создают виртуальные маршруты по всему миру и соревнуются в налёте часов на виртуальном самолёте по этим виртуальным маршрутам).

Однажды в команду поддержки поступил звонок от клиента, который сообщил, что в игре есть ошибка на карте. А именно: граница между двумя европейскими странами не верна. В целом, это могло случиться - ведь это произошло примерно в то время, когда распался Советский Союз.

пятница, 14 октября 2016 г.

Сомнительная уязвимость: атакуем каталог приложения, чтобы обмануть... самого себя?

Это перевод Dubious security vulnerability: Attacking the application directory in order to fool yourself? Автор: Реймонд Чен.

Нам отправили примерно такой отчёт о найденной уязвимости в безопасности:
В программе XYZ.EXE есть уязвимость. Если вы поместите в каталог с XYZ.EXE файл CABINET.DLL, то программа XYZ.EXE загрузит ваш CABINET.DLL, вместо реального системного. Когда XYZ.EXE попросит повышение прав, пользователь разрешит его - и тогда "хакнутая" CABINET.DLL будет выполняться под администратором.
Ээээ... OKей.

Каталог TEMP аналогичен ванне, где воду не меняли больше года

Это перевод The TEMP directory is like a public hot tub whose water hasn’t been changed in over a year. Автор: Реймонд Чен.

Один клиент пожаловался, что он не может удалить продукт X. Когда он запускает установщик для удаления, он получает такое сообщение об ошибке:

setup.exe - Application Error
The application was unable to start correctly (0xc00000ba). Click OK to close the application.

Команда установки продукта X понятия не имела, что это за ошибка, они начали спрашивать, есть ли у кого идеи.

Почему каталог TEMP постоянно меняется?

Это перевод Why does the name of my TEMP directory keep changing? Автор: Реймонд Чен.

В техподдержку команды Оболочки (Shell) обратился клиент с таким вопросом:
Тема: Support case: 069314718055994

Один наш пользователь обнаружил, что на двух его машинах если он откроет %TEMP% из меню Пуск, то будут открываться папки C:\Users\username\AppData\Local\Temp\1\, C:\Users\username\AppData\Local\Temp\2\ и так далее. Каждый раз, когда пользователь завершает сеанс и входит снова, номер в конце пути увеличивается на 1. Номер сбрасывается при каждой перезагрузке. Откуда берутся эти подкаталоги в TEMP? Это не кажется поведением по умолчанию. Почему система создаёт эти папки?

Пользователь переустановил ОС на одной из машин, и это поведение исчезло. Но он утверждает, что раньше обе машины работали нормально, проблема началась лишь недавно. Поэтому клиент опасается, что проблема вернётся. Благодарю за любые подсказки, куда копать.

Не требуйте от ваших пользователей степени по философии, эпизод 2

Это перевод Don’t require your users to have a degree in philosophy, episode 2. Автор: Реймонд Чен.

Ранее мы выяснили, что текст справки и подсказок - это не место для логических головоломок. Не являются местом для них и диалоговые окна.

Не требуйте от ваших пользователей степени по философии

Это перевод Don’t require your users to have a degree in philosophy. Автор: Реймонд Чен.

Текст справки и подсказок - это не место для логических головоломок.

Подсказка: делайте заголовок осмысленным для получателя сообщения, а не для отправителя

Это перевод Email tip: Choose a subject line that is meaningful to the recipient, not to the sender. Автор: Реймонд Чен.

Я подозреваю, что вы хотели бы, чтобы отправленные вами сообщения читались бы? В конце концов, именно поэтому вы их отправляете. Следовало бы выбрать такой заголовок сообщения, который передал бы получателю цель вашего сообщения. В противном случае получатель может пропустить/проигнорировать сообщение как не интересное.

Алгоритм поиска путей не является алгоритмом поиска с откатом

Это перевод The path-searching algorithm is not a backtracking algorithm. Автор: Реймонд Чен.

Предположим, ваша переменная PATH выглядит примерно так:
C:\dir1;\\server\share;C:\dir2
Также предположим, что вы вызываете LoadLibrary('foo.dll'), желая загрузить библиотеку C:\dir2\foo.dll. Если при этом сетевой сервер будет не в сети, то вызов LoadLibrary вернёт ошибку. Почему LoadLibrary просто не пропустит некорректные каталоги в PATH и продолжит искать далее?

Проблема танцующих кроликов

Это перевод Beware of the dancing bunnies. Автор: Ларри Остерман.

Недавно я увидел сообщение на форуме (я не помню где, иначе я бы на него сослался), которое утверждало, что правильно спроектированная система не нуждается в антивирусе, файрволе и т.п.

Я, конечно, извиняюсь, но это утверждение не умнее "Да, пожалуй, в мире найдётся спрос на целых 10 компьютеров", или "ни одной правильно написанной программе не потребуется больше 128 Кб оперативной памяти", или "ни один правильно спроектированный компьютер не нуждается в вентиляторе охлаждения".

Я объясню свою позицию в этом посте. Причина - в так называемой проблеме "танцующих кроликов".