среда, 30 июня 2010 г.

При определении ожиданий, вы также должны отказывать им в случае необходимости

Это перевод When setting expectations, you also have to deny them when necessary. Автор: Реймонд Чен.

Иногда команда Оболочки (Shell) получает запрос от клиента через его посредника. В запросе запрашивается информация о том, как выполнить то или другое. Прежде чем мы отвечаем на такой вопрос, мы хотим знать, как далеко простирается поддержка решения у посредника.

вторник, 29 июня 2010 г.

Почему Проводник выдвигает CD-диск после записи?

Это перевод Why does Explorer eject the CD after you finish burning it? Автор: Реймонд Чен.

Частично - для удобства. Но основная причина - бажное железо. Мне пояснил это разработчик, ответственный за запись CD в Windows.

понедельник, 28 июня 2010 г.

Почему поведение по-умолчанию для перетаскивания (drag/drop) не может быть изменено?

Это перевод Why can't the default drag/drop behavior be changed? Автор: Реймонд Чен.

Частой реакцией на моё объяснение, должно ли перетаскивание файла приводить к копированию или перемещению, является указание, что в Windows должна быть настройка, которая позволяет вам менять алгоритм, который использует Проводник (Explorer) для решения, нужно ли делать копирование или перемещение.

Есть несколько причин, почему это плохая идея.

воскресенье, 27 июня 2010 г.

Почему апплеты Панели управления и странички свойств объектов не показываются в Панели задач?

Это перевод Why don't control panel programs and property sheets show up in the taskbar? Автор: Реймонд Чен.

Апплеты Панели управления и странички свойств объектов не показываются в Панели задач. Почему нет?

суббота, 26 июня 2010 г.

пятница, 25 июня 2010 г.

2/97: Применение принципов функционального программирования

Это перевод Apply Functional Programming Principles. Автор: Edward Garson.

Из "97-ми вещей, которые должен знать каждый программист".

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

среда, 23 июня 2010 г.

Вы не можете эмулировать ввод с клавиатуры с помощью PostMessage

Это перевод You can't simulate keyboard input with PostMessage. Автор: Реймонд Чен.

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

вторник, 22 июня 2010 г.

Что там у нас с драйвером Beep в Windows 7?

Это перевод What’s up with the Beep driver in Windows 7? Автор: Ларри Остерман.

Чуть раньше сегодня кое-кто спросил меня, почему 64-х битные версии Windows не поддерживают пикание встроенным системным динамиком. Ответ на этот вопрос довольно сложен и заключается в интересном пересечении нескольких противоречивых тенденций в экосистеме PC.

воскресенье, 20 июня 2010 г.

Диалог Небезопасное отключение устройства

Это перевод The unsafe device removal dialog. Автор: Реймонд Чен.

В комментариях кто-то спросил, что случилось с диалогом о небезопасном извлечении устройства в Windows 2000: почему он исчез из Windows XP.

суббота, 19 июня 2010 г.

Как продвинутые пользователи перехитрили сами себя: иконка уведомления извлечения устройства

Это перевод When advanced users outsmart themselves: The device removal notification icon. Автор: Реймонд Чен.

Один клиент отправил команде интерфейса пользователя предложение по иконке извлечения устройств:
Иконку уведомления извлечения устройств слишком тяжело использовать. Когда я щёлкаю по ней, я получаю меню с пунктом "Безопасное извлечение устройства", и когда я щёлкаю на него, я получаю диалоговое окно, в котором перечислены все устройства, с расплывчатыми именами вроде "Запоминающее устройство для USB" и абсолютно сумасшедшими деталями, что оно подключено к концентратору USB в PCI слоте 35. Когда я включаю галочку "Отображать компоненты устройства", я получаю дерево устройств, которое понравится только гикам.

Это слишком сложно. Когда я щёлкаю по иконке уведомления для извлечения устройств, я ожидаю получить простое меню со списком устройств, которые можно извлечь - простое меню, с легко идентифицирующимися названиями, типа "USB накопитель - диск E:". Пожалуйста, рассмотрите возможность реализации этого улучшения в следующей версии Windows.

четверг, 17 июня 2010 г.

Почему "Установка и удаление программ" иногда показывают большое пустое место?

Это перевод Why does Add or Remove Programs show a large blank space?. Автор: Реймонд Чен.

Некоторые люди заметили, что некоторые программы приводят к тому, что апплет "Установка и удаление программ" Панели Управления создаёт огромное пустое пространство. Что происходит?

среда, 16 июня 2010 г.

Когда видимое окно невидимо?

Это перевод When is a window visible yet not visible? Автор: Реймонд Чен.

Сегодня - небольшая головоломка.

Посмотрите на такой код:
ShowWindow(hwnd, SW_SHOWNORMAL);
Assert(IsWindowVisible(hwnd));
Мы только что показали окно - конечно же оно должно быть видимо, да? Хотя проверка может выбросить исключение (даже в отсутствие многопоточности). Почему?

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

вторник, 15 июня 2010 г.

Корпоративная сеть Microsoft: в 1.7 раз хуже Ада

Это перевод The Microsoft corporate network: 1.7 times worse than hell. Автор: Реймонд Чен.

Сегодня я собираюсь рассказать вам историю из 1996-го. Почему? Потому что я могу.

понедельник, 14 июня 2010 г.

Как запросить свойства панели задач

Это перевод How to query properties of the taskbar. Автор: Реймонд Чен.

Иногда люди спрашивают, как они могут запросить свойства панели задач. Я не понимаю, зачем им это надо; вы должны просто жить своей жизнью и позволить панели задач жить своей. В конце концов, у вас может и не быть панели задач.

воскресенье, 13 июня 2010 г.

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

Это перевод When people ask for security holes as features: Stealing passwords. Автор: Реймонд Чен.

Иногда люди просят добавить нас возможности, которые настолько очевидно являются дырами в безопасности, что я даже не знаю, о чём вообще они думают?

суббота, 12 июня 2010 г.

Какие права доступа и привилегии нужны, чтобы изменить владельца объекта?

Это перевод What are the access rights and privileges that control changing ownership of an object? Автор: Реймонд Чен.

Смена владельца объекта (обычно: файла) сама по себе не сложна: вы просто вызываете функцию SetNamedSecurityInfo с новым дескриптором безопасности.

пятница, 11 июня 2010 г.

Что если две программы сделают это?

Это перевод What if two programs did this? Автор: Реймонд Чен.

Мысленный эксперимент "представьте, если бы это было возможным" является полезным, когда вы думаете, может ли Windows делать то или это (частным случаем этого эксперимента является "Когда люди просят дыры безопасности в качестве новых возможностей ОС"). Если эта возможность приводит к очевидным противоречиям или нарушениям общепринятых правил метафизики, то можете быть уверены, что Windows не поддерживает эту возможность (конечно же, отсутствие противоречий ещё не доказывает, что Windows поддерживает возможность. Но вы можете использовать это правило для отбраковывания очевидных плохих идей).

четверг, 10 июня 2010 г.

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

Это перевод Why is processor affinity inherited by child processes? Автор: Реймонд Чен.

Посмотрите, почему типичная программа (программы-оболочки вроде Проводника не являются типичными программами) может запускать дочерние процессы. Потому что её текущая задача разбивается на подзадачи, некоторые из которых по каким-то причинам помещаются в отдельный (дочерний) процесс. Пример? Ну, скажем, многопроходный компилятор/линкёр, где каждый проход реализуется дочерним процессом.

среда, 9 июня 2010 г.

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

Это перевод When people ask for security holes as features: Silent install of uncertified drivers. Автор: Реймонд Чен.

Вероятно единственным и самым большим источником "синих экранов смерти" в Windows XP являются глючные драйвера устройств. Поскольку драйвера работают в режиме ядра, нет никакой "высшей инстанции", которая следит за ними. Если код пользовательского режима впадёт в ярость и начнёт повреждать память - он просто повредит свою собственную память. Процесс рано или поздно вылетит, но система останется работать. С другой стороны, если в ярость впадёт код режима ядра (драйвер устройства), то он повредит память системы, и рано или поздно - она умрёт.

вторник, 8 июня 2010 г.

Почему я не могу убрать надпись "Только для тестовых целей"?

Это перевод Why can't I remove "for test/evaluation purposes only"? Автор: Реймонд Чен.

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

понедельник, 7 июня 2010 г.

Поиск утечек памяти для бедных

Это перевод The poor man's way of identifying memory leaks. Автор: Реймонд Чен.

Существует множество различных утилит, способных помочь в поиске утечек ресурсов, но есть один метод, который не требует утилит, специальных настроек компилятора или библиотек поддержки: просто позвольте утечкам расти, пока их источник не станет очевиден.

Почему Windows Error Reporting называется Доктором Ватсоном?

Это перевод Why is Windows Error Reporting nicknamed "Dr. Watson"? Автор: Реймонд Чен.

"Доктор Ватсон" - это ник для Windows Error Reporting. Откуда взялось это имя?

воскресенье, 6 июня 2010 г.

Как компания может получить доступ к данным Windows Error Reporting?

Это перевод How can a company get access to Windows Error Reporting data? Автор: Реймонд Чен.

Что происходит со всеми отчётами о вылетах программ, написанных не Microsoft, отправляемых через Windows Error Reporting (WER)?

суббота, 5 июня 2010 г.

Опасности игр с активацией окна во время обработки сообщения WM_ACTIVATE

Это перевод The dangers of messing with activation when handling a WM_ACTIVATE message. Автор: Реймонд Чен.

Фактически, это та же самая вещь, что и вчера, но только с активацией окна на месте смены фокуса.

пятница, 4 июня 2010 г.

четверг, 3 июня 2010 г.

Почему анимированный логотип Internet Explorer хранит свои кадры вертикально?

Это перевод Why does the Internet Explorer animated logo arrange its frame vertically? Автор: Реймонд Чен.

Если вы пытались когда-нибудь делать свои логотипы для Internet Explorer, вы, конечно же, заметили, что кадры анимации упорядочиваются вертикально, а не горизонтально. Почему так?

среда, 2 июня 2010 г.

1/97: Действовать осмотрительно

Это перевод Act with Prudence. Автор: Seb Rose.

Из "97-ми вещей, которые должен знать каждый программист".

"Что бы вы ни предпринимали, надо действовать с осторожностью и рассматривать последствия" Аноним