Это все видимо сугубо индивидуально, но я не считаю это серьезным упущением при всей дырявости IA32 архитектуры: когда можно с легкостью сделать коллгейт из юзермода в кернел мод и хукнуть обработку syscall'ов, или повесить свой обработчик smi и творить все что угодно (это ведь по сути режим с такими же правами, как и real/protected mode).
Не единственный. Если например были выделенны области памяти для DMA трансферов с сетевой картой, и контроллер уже настроен и сыпет прерывания, то можно просто рестартнуть контроллер и он забудет обо всех DMA дескрипторах, о которых знал :) Это ситуация, которая специфична для конкретного железа, по этому самый простой выход — иметь отдельную функцию резета контроллера, в случае если драйвер посыпался и его надо выгрузить. Функцию такую, необходимо размещать отдельно в памяти от драйвера, чтобы драйвер можно было без ущерба выгрузить.
И это лишь как пример. Таких можно придумать сотни. Ведь если драйвер где-то помрет, то случившийся какой-нибудь интеррапт лукап и глобальный фриз всея системы, ситуацию никак не спасет.
Я вас умоляю, код работающей в режиме ядра, найдет уйму других возможностей для перехвата, подмены, маскировки и прочего, не трогая ваш драйвер. А стек еще аккуратно надо уметь переполнять, дабы не завалить систему полностью.
Либо кидать багчек, либо анлоадить драйвер.
Та же Vista не прощает многих ошибок, которая прощала ХР, например ошибок с IRQL'ями (вызов функции на DISPATCH, когда нужно на PASSIVE).
Ну вот когда дадут 11 ГГц в пользование, и когда RF'ы будут достаточно мощными (оборудование естественно прийдеться обновить), будут и 70, но естественно не на первых порах развития технологии. Вон в США, Sprint строит сеть национального масштаба. Там 1-3 мбита, так что мы идем в ногу со временем.
> Не так давно стандарт 802.11n утвердили который как-то немного быстрее.
А WiFi вообще причем? Он же на дальние расстояния не рассчитан…
Цитата была про коммуникатор, там где в коннекшн менеджере циферка 13 (это теоретическая величина). В коммуникаторах применяется SDIO интерфейс, так что и 9 мбит не будут для него доступны.
А по поводу 70 мбит на USB модемах, ну уж простите, при текущей частотной полосе и применяемом методе модуляции сигнала, 70 мбит пока не достижимо. Просто напросто стандарт Wimax предусматривает разные вариации параметров…
Скорость в 70 мегабит теоретически недостижима для SDIO интерфейса. 9,1 MBit это на USB модеме, на таком коммуникаторе максимум 7 и то в лабораторных условиях.
Винда шарит экземпляры подгружаемых дллок. Конечно при высоком уровне модульности статическая сборка совсем не руллит (бОльшие размеры бинарников -> больше грузить в память), тут нужна динамическая.
Это Ваши проблемы, вернее проблемы кривого проектирования. Если вы создавали окно в dll'ке, то значит дллка имела фабричную функцию. Если же была фабричная функция, значит должна быть функция, которая удалит окно и подчистит мусор.
Такой уровень модульности уже сам по себе во многом ущербен, потому как ядро системы открыто как на блюдечке, никакой инкапсуляции (не в смысле объектов) нет и в помине, заходи, выноси все что хочешь :)
> кучи и new/delete между модулями.
Я чего-то не понимаю, или то, что у процесса и у dll — разные хипы, давным давно известный факт и QT тут не причем…
> Я видел qutim и ничего, даже рядом лежащего с мирандой по сложности не увидел, увы
Конструктора для энтузиастов там не будет и в помине, а вот визуальный ряд на уровне адиума, уже готов…
Давно наблюдаю за этим проектом. Такое впечатление, что проект OpenMoko — это такой советский НИИ, который проедает бюджетный деньги и при этом ничем конкретны не занимается.
Сначала они почему-то решили сделать ставки на GTK (! на мобильных устройствах!!) вместо Qtopia. Потом за полгода до намеченного релиза выкинули GTK, и вместо него начали использовать QT. Теперь вот решили эксплуатировать Андроид. По-моему им нужно найти грамотного менеджера и за одно дизайнера. Потому как данный аппарат врядли способен удовлетворить потребность в дизайне, он ужасен, имхо.
> Ой ли… Вот уж миранда на Qt- это будет нечто ужасное и тормозноею
Не правда, посмотрите qutim (да я его пиарю, потому что учавствую в разработке).
По поводу QT — какие проблемы, линкуйте статически, никакого DLL hell не будет. ДА и к тому же, новые версии QT dllок всегда бинарно совместимы с программами, собраными на более старых версиях QT.
Миранде не хватает кроссплатформенности, очень :) Хотя бы через wine-libs. Да и по поводу тормознутости — можно поспорить. Моя сборка не слабо отжирает ресурсов, а еще в ней текут хендлы, но все лень разбиратся в каком плагине и почему :)
Познакомьтесь en.wikipedia.org/wiki/WinFixer Программы такого же рода. Писались нашей Innovative Marketing Ukraine. Я там даже был на собеседовании на 4-ем курсе, и прошел, но работать не стал :) А недавно они уволили 120 человек и прекратили свое существование.
Закономерный вопрос «Где выбросить-то»? Любое «фатальное» исключение можно словить, если уж не стандартными средствами, то SEH'ом. И вот тут я не вижу недостатков С++. Они конечно же в нем есть и в большом кол-ве, но это тема для отдельного разговора.
А вообще, подобные вещи, как пункт 2 — слишком специфичны для конкретной ситуации. И нельзя сказать, что делать метод init() для инициализации объекта — это дурной тон. Не сколько не дурной, главное соблюдать единый стиль, чтобы не было путаницы.
Для масштабируемости смотрите в сторону xml-rpc или json-rpc. Хотя я бы делал ставку не на масштабируемость языка на несколько серверов, а на модель аля DCOM, т.е. существует объект на машине х, его можно подключить и использовать на машине y. Причем интерпритация чтобы выполнялась на машине х.
И это лишь как пример. Таких можно придумать сотни. Ведь если драйвер где-то помрет, то случившийся какой-нибудь интеррапт лукап и глобальный фриз всея системы, ситуацию никак не спасет.
Та же Vista не прощает многих ошибок, которая прощала ХР, например ошибок с IRQL'ями (вызов функции на DISPATCH, когда нужно на PASSIVE).
Сам сейчас пытаюсь отладить драйвер. Иногда зачастую при заходе в NdisMIndicateReceivePackets система просто зависает без единого багчека :)
> Не так давно стандарт 802.11n утвердили который как-то немного быстрее.
А WiFi вообще причем? Он же на дальние расстояния не рассчитан…
А по поводу 70 мбит на USB модемах, ну уж простите, при текущей частотной полосе и применяемом методе модуляции сигнала, 70 мбит пока не достижимо. Просто напросто стандарт Wimax предусматривает разные вариации параметров…
Такой уровень модульности уже сам по себе во многом ущербен, потому как ядро системы открыто как на блюдечке, никакой инкапсуляции (не в смысле объектов) нет и в помине, заходи, выноси все что хочешь :)
Я чего-то не понимаю, или то, что у процесса и у dll — разные хипы, давным давно известный факт и QT тут не причем…
> Я видел qutim и ничего, даже рядом лежащего с мирандой по сложности не увидел, увы
Конструктора для энтузиастов там не будет и в помине, а вот визуальный ряд на уровне адиума, уже готов…
Сначала они почему-то решили сделать ставки на GTK (! на мобильных устройствах!!) вместо Qtopia. Потом за полгода до намеченного релиза выкинули GTK, и вместо него начали использовать QT. Теперь вот решили эксплуатировать Андроид. По-моему им нужно найти грамотного менеджера и за одно дизайнера. Потому как данный аппарат врядли способен удовлетворить потребность в дизайне, он ужасен, имхо.
Не правда, посмотрите qutim (да я его пиарю, потому что учавствую в разработке).
По поводу QT — какие проблемы, линкуйте статически, никакого DLL hell не будет. ДА и к тому же, новые версии QT dllок всегда бинарно совместимы с программами, собраными на более старых версиях QT.
Миранде не хватает кроссплатформенности, очень :) Хотя бы через wine-libs. Да и по поводу тормознутости — можно поспорить. Моя сборка не слабо отжирает ресурсов, а еще в ней текут хендлы, но все лень разбиратся в каком плагине и почему :)
А вообще, подобные вещи, как пункт 2 — слишком специфичны для конкретной ситуации. И нельзя сказать, что делать метод init() для инициализации объекта — это дурной тон. Не сколько не дурной, главное соблюдать единый стиль, чтобы не было путаницы.