Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет qlman ([info]qlman)
@ 2010-01-30 08:05:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Must die.
Вообще "проблема совместимости" ПО Microsoft сильно преувеличена.

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

Что никаких проблем совместимости с нормально написанными (без хаков API) нет, и софтины для 95 прекрасно работают до сих пор.

А вот когда начинаются абсолютные пути к библиотекам и прочему говну - тут сразу "приложение выполнило недопустимую операцию" и все вытекающие.

Но это руки кодеров, а не MS.

PS: Хотя руки MS малость есть - что это вообще за сообщение: "приложение выполнило недопустимую операцию". Если она недопустимая - то и не надо её давать выполнять. Намного позитивней будет сообщение "приложение попыталось..."


(Читать комментарии) - (Добавить комментарий)


[info]inform_sega@lj
2010-01-31 06:08 (ссылка)
Немного из личного опыта.
Работаю над софтиной, OpenGL-окошки внутри MDI-интерфейса.

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

Оказалось, что:

1) 75% проблем заключались в кривости нашего софта. В Win7 менеджер памяти отличается от менеджера памяти XP, и благодаря этому вспылили все ранее замаскированные ошибки:
а) отсутствие инициализации переменных
б) удаление объектов, а потом работа с указателями на "трупы"

В Windows XP просто "везло", и генерируемые эксепшены перехватывались стандартными обработчиками.


2) 25% оставшихся проблем - в криво реализованном товарищами из Microsoft видеоменеджере. дело в том, что в Vista и Windows 7 по умолчанию используется принципиально новый режим рисования на экране. Если раньше этим занимался драйвер видеокарты, то теперь появилась ещё одна прослойка, которая отдельно работает с классическими GDI-окнами и с ускоренным видео (окна в режиме OpenGL и DirectX). Эти два типа окон рисуют в собственные буферы, которые склеиваются видеоменеджером.

Найденные ошибки в ОС:
а) если в диалоге есть два дочерних окна, одно из которых OpenGL, а другое - GDI, то Z-windows-buffer игнорируется, и GDI окно всегда выводится поверх OpenGL. В Windows XP, сесна, было всё нормально.

б) в режиме Aero при появлении MDI Child-окна, внутри которого содержится OpenGL-окно, СНАЧАЛА появляется мусор из GDI-буфера, и только потом у OpenGL-окна появляется шанс его перерисовать собственным изображением

в) в режиме Basic (т.е. с отключенным Aero) если поверх OpenGL-окна есть диалог, то в него с сообщением WM_PAINT приходит неверная информация об обновляемой области. Приходится делать Invalidate() всей зоны.

Может, конечно, что формулировка этих трёх проблем звучит дико и неестественно, но в нашем редакторе с этим были связаны самые распространённые операции.

Так что не всё гладко в буржуйском королевстве...

(Ответить)


(Читать комментарии) -