понедельник, 28 февраля 2011 г.

В чём разница между HWND_TOP и HWND_TOPMOST?

Это перевод What's the difference between HWND_TOP and HWND_TOPMOST? Автор: Реймонд Чен.

Специальные значения HWND_TOP и HWND_TOPMOST имеют похожие имена, но делают совершенно разные вещи, когда их передают в параметре hWndInsertAfter функции DeferWindowPos (или её аналога, к примеру, SetWindowPos). Для начала вам следует почитать обсуждение в MSDN, которое достаточно точно. Здесь я хочу обсудить это различие с точки зрения исторической перспективы в надежде, что взгляд с другой перспективы может улучшить ваше понимание.

воскресенье, 27 февраля 2011 г.

Что означает слово "поддерживается"?

Это перевод What does the word "supported" mean? Автор: Реймонд Чен.

Поддерживает ли Windows Server 2003 Standard Edition переключатель /3GB?

Это зависит от того, что вы имеете в виду, говоря "поддерживает". К сожалению, это слово имеет несколько значений, а его подразумеваемое значение не всегда ясно из контекста.

суббота, 26 февраля 2011 г.

Насильно кормим собачьей едой

Это перевод Force-feeding the dogfood. Автор: Реймонд Чен.

Windows 95 содержала несколько новых сетевых возможностей, а поскольку я был одним из тех сумасшедших, что пробовал каждый вид собачьей еды, то я попробовал все из них. Я подумал, что одна из возможностей (сетевой протокол) был достаточно интересным, чтобы его попробовали и другие люди в команде.

Вот как я заставил их это сделать.

пятница, 25 февраля 2011 г.

Пробуя каждый вид собачьей еды на вкус

Это перевод Sampling every flavor of dogfood in the store. Автор: Реймонд Чен.
(прим.пер.: dogfood/dogfooding - "есть еду своей собственной собаки" - означает самому использовать программы, которые вы создаёте)

Во время разработки Windows 95 все, конечно же, имели свою личную установку системы и обновляли её регулярно, как только выходили новые билды.

четверг, 24 февраля 2011 г.

В реальной жизни никто не обновляет свои сервера

Это перевод In real life, nobody upgrades their server. Автор: Реймонд Чен.

Когда вы устанавливаете Windows на машину, которая уже имеет копию Windows, вы можете выбрать между "чистой" установкой (установка нового экземпляра с нуля, игнорируя уже установленную) или установкой "обновлением" (обновляя уже установленную систему до новой).

И, как показали опросы, в реальной жизни никто не использует обновление для их серверов.

Я серьёзно.

среда, 23 февраля 2011 г.

Как изначально назывался Доктор Ватсон?

Это перевод What was Dr. Watson's original name? Автор: Реймонд Чен.

Большинство людей не знают, что оригинальное название программы Доктор Ватсон вовсе не было "Dr. Watson".

вторник, 22 февраля 2011 г.

Когда вы в последний раз форматировали дискету?

Это перевод When was the last time you formatted a floppy disk? Автор: Реймонд Чен.

По какой-то причине я вспомнил о людях, которые смеялись над Windows 95, потому что она не форматировала дискеты гладко.

воскресенье, 20 февраля 2011 г.

Не увлекайтесь автоматическими повторами

Это перевод Take it easy on the automatic retries. Автор: Реймонд Чен.

Когда я вижу дискуссию о том, как сделать повтор операции через try/except, используя для вдохновения функцию на Ruby, которая повторяла сетевую операцию три раза, прежде чем вернуть ошибку - я чувствую необходимость предупредить против автоматического повтора.

Вы можете подумать при встрече ошибки, что она вызвана какими-то временными явлениями, так что вы повторяете операцию ещё раз. Второй или третий раз, наконец-то, заработает - и ваша функция сможет продолжить работу. А пользователь не получит раздражающего диалога "Abort, Retry, Cancel" - минус один вызов в вашу тех-поддержку. Что же тут плохого?

суббота, 19 февраля 2011 г.

Почему у нас есть специальная функция PostQuitMessage?

Это перевод Why is there a special PostQuitMessage function? Автор: Реймонд Чен.

Почему есть специальная функция PostQuitMessage? Потому что WM_QUIT в действительности не является отправленным (posted) сообщением.

пятница, 18 февраля 2011 г.

Чтобы быть лидером, вам нужно знать, когда следовать

Это перевод To be a leader you must know when to follow. Автор: Реймонд Чен.

Многие люди неверно поняли моё использование термина "reluctant" ("вынуждено", "с неохотой") для описания отношения дизайнеров UI к изменению способа работы диалога дата/время. Это было нежелание стыда, а не нежелание неповиновения.

четверг, 17 февраля 2011 г.

Почему автодополнение не активируется автоматически?

Это перевод Why is inline autocomplete disabled by default? Автор: Реймонд Чен.

Ранние версии Internet Explorer использовали автоматическое встроенное автодополнение, но новые версии требуют от вас нажать кнопку вниз, чтобы выбрать вариант из выпадающего списка. Зачем нужно это изменение?

среда, 16 февраля 2011 г.

Правила интерфейсов COM существуют не просто так

Это перевод The COM interface contract rules exist for a reason. Автор: Реймонд Чен.

Некоторые люди считают, что правила COM по интерфейсам неоправданно строги. Но для таких правил есть причина.

вторник, 15 февраля 2011 г.

Roadmap-ы в Delphi

Это перевод RE: Starter Edition Finally Here!!! Автор: Майкл Розлог.

Как тот, кто обычно ответственен за Roadmap, я скажу вам, что его очень, очень трудно опубликовать. Я говорил и объяснял это много раз в блогах, группах новостей и т.д. Тут есть много подвижных частей и много людей, связанных с тем, что включать в Roadmap, а что - нет. Мы стараемся получить настолько много информации о возможном направлении, насколько мы можем, и так быстро, как это возможно.

понедельник, 14 февраля 2011 г.

воскресенье, 13 февраля 2011 г.

Как распознать различные специальные значения меток времени

Это перевод How to recognize different types of sentinel timestamps from quite a long way away. Автор: Реймонд Чен.

Когда-то я обсуждал различные форматы времени, с которыми вы можете встретиться на практике. Сегодня мы сделаем следующий логический шаг и построим список значений, с которыми вы можете встретиться. Заметьте, что если при этом применяется подстройка под часовую зону, то реальная метка времени может отличаться на +/- день максимум.

суббота, 12 февраля 2011 г.

Почему кодовая страница OEM часто называется ANSI?

Это перевод Why is the OEM code page often called ANSI? Автор: Реймонд Чен.

Denis Bider указал, что документация к программе cmd.exe говорит:
/A - приводит к тому, что вывод от внутренних команд в канал или файл будет происходить в ANSI
даже хотя вывод будет вообще-то в OEM. Почему существует такая и подобные ошибки?

Потому что иногда ANSI означает OEM.

пятница, 11 февраля 2011 г.

Когда программы предполагают, что система никогда не изменится, эпизод 1

Это перевод When programs assume that the system will never change, episode 1. Автор: Реймонд Чен.

Пример, слишком уж частых способов, которыми программы предполагают, что пользовательский интерфейс никогда не изменится - это выдирание ресурсов из системных исполняемых файлов.

четверг, 10 февраля 2011 г.

Обнаружено новое устройство: Боинг 747

Это перевод New device detected: Boeing 747. Автор: Реймонд Чен.

И снова производители самолётов серьезно рассматривают организацию доступа к Интернет в небе. Еще в 1994 году Боинг рассматривал возможность оснащения каждого сидения последовательным модемом. Пользователи ноутбуков могли подключаться к модему и устанавливать соединение (Dial-Up был основным средством подключения к интернету в те дни).

среда, 9 февраля 2011 г.

Привязка к потокам объектов пользовательского интерфейса, часть 5: очистка объектов

Это перевод Thread affinity of user interface objects, part 5: Object clean-up. Автор: Реймонд Чен.

Оконный менеджер и GDI, как правилo, уничтожают все объекты, созданные процессом, когда этот процесс завершается (оконный менеджер также уничтожает окна, когда завершается их поток-владелец). Заметьте, что это - только ремни безопасности. Это не оправдание для вашей программы не освобождать ресурсы. "А, да пофиг, всё равно система за мной подчистит". Поскольку это ремни безопасности, то они не должны быть вашей основной мерой защиты.

вторник, 8 февраля 2011 г.

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

Это перевод Thread affinity of user interface objects, part 4: GDI objects and other notes on affinity. Автор: Реймонд Чен.

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

понедельник, 7 февраля 2011 г.

суббота, 5 февраля 2011 г.

пятница, 4 февраля 2011 г.

Привязка к потокам объектов пользовательского интерфейса, часть 1: оконные описатели

Это перевод Thread affinity of user interface objects, part 1: Window handles. Автор: Реймонд Чен.

У разных объектов есть разные правила привязки к потокам - но базовые принципы пришли ещё из времён 16-ти битных Windows.

четверг, 3 февраля 2011 г.

Ваш профайлер может показать проблему, которой нет

Это перевод Your profiling tools can manufacture performance issues where there were none. Автор: Реймонд Чен.

Когда вы анализируете производительность программы, вы должны знать, что ваши утилиты измерения производительности могут влиять на измеряемые ими же операции. Это особенно верно в случае, если утилита измерения производительности запускается на той же машине, что и изучаемая программа.

среда, 2 февраля 2011 г.

Неудачное взаимодействие между LOAD_LIBRARY_AS_DATAFILE и функцией DialogBox

Это перевод The unfortunate interaction between LOAD_LIBRARY_AS_DATAFILE and DialogBox. Автор: Реймонд Чен.

Некоторые люди заметили, что если вы загружаете DLL с флагом LOAD_LIBRARY_AS_DATAFILE, то иногда вы получаете странное поведение, если передаёте этот HINSTANCE в функцию DialogBox.

вторник, 1 февраля 2011 г.

Запуск старых программ в виртуальной машине не обязательно создаёт хорошее впечатление

Это перевод Running old programs in a virtual machine doesn't necessarily create a good user experience. Автор: Реймонд Чен.

Многие люди предлагают решать проблемы с обратной совместимостью простым запуском старых программ в виртуальной машине. Но это решает только часть проблемы.