Комментарии 216
Хм, а у меня получилось создать их. ЧЯДНТ?
P.S. Win10x64, нельзя (во всяком случае штатным способом)
md \\?\C:\con
FAR Manager 2.0 — можно. Совершенно штатным способом (F7, "con", Enter). А вот удалять надо через Shift+Del — Корзина такую папку не принимает :)
Far же, насколько мне известно, использует API ядра windows для рвботы с файлами, поэтому плевать эму с высокой башни на эти особенности. Как-то так.
Я даже представить не мог что Windows на столько криво реализована внутри, а судя по отношению, это только цветочки.
А никто не говорит что Linux или любая другая ОС идеальна) Справедливости ради, для рядового пользователя подавляющее большинство оборудования в Linux просто работает из коробки, а костыли и странности есть везде.
(Да, я не линуксоид, а вполне себе махровый виндузятник. Ставил линукс для «посмотреть»).
А никто не говорит что Linux или любая другая ОС идеальна) Справедливости ради, для рядового пользователя подавляющее большинство оборудования в Linux просто работает из коробки, а костыли и странности есть везде.
Да ты че.
Особенно видеодрайвера, да?
И с нормальным таким ускорением?
Видеодрайвера Nvidia нужно ставить проприетарные, да. Скорость зависит от оптимизации игр, мне в те что играю с 4k разрешением вполне подходит.
С AMD достаточно поставить как минимум последнюю версию Ubuntu/Fedora, а лучше обновиться до git версии mesa, там со скоростью в открытых драйверах всё очень даже не плохо.
Иногда нужны дрова для некоторых железяк в самых новых ноутах, а в остальном да, для рядового пользователя без экзотического железа всё просто работает.
Иногда нужны дрова для некоторых железяк в самых новых ноутах, а в остальном да, для рядового пользователя без экзотического железа всё просто работает.
Не работает в свежайшей Ubunte на моем ноутбуке (обычный, не экзотический)
Wi-Fi и 3G модем крупнейшего оператора
Справедливости ради, для рядового пользователя подавляющее большинство оборудования в Linux просто работает из коробки
Это шутка такая что ли?
Каждый раз, когда пробовал использовать десктопный Linux, постоянно возникали проблемы то с Wifi, то со звуком, то с видео.
Не надо нам такого «работает из коробки»…
Хотя с другой стороны вы бы еще диск поменяли и спросили почему не загружается.
для рядового пользователя подавляющее большинство оборудования в Linux просто работает из коробки
Для рядового админа сервера — да, работает.
Для пользователя — постоянные проблемы с каким-то оборудованием. В моем случае — Wi-Fi, видео, 3G-модем.
В Linux драйвера запиханы в большом количестве в ядро, что производит впечатление, что нет проблем. Особенно на фоне надписей Windows «Идет установка драйвера».
Но это не более чем иллюзия.
К тому же со звуком постоянно были проблемы, эти алсы и пульсы нифига не работали нормально, в винде вообще ни разу таких проблем не возникало… Вообще.
Единственные проблемы — это когда в ноутбуках пропадает звук или wifi из-за перегрева, но такое справедливо и для linux'а.
Хотя да, дискретный звук я видел последний раз лет 10 назад.
две материнских платы назад
Мне кажется вы делаете что-то не то…
Мне кажется вы делаете что-то не то…
Не переустанавливаю систему каждые пол года? :) Как поставил 12 лет назад так и обновляю просто :) Железо меняется, а система остается :)
Даже если отключить звуковуху на видеокарте через диспетчер устройств? (Не удалить — тогда винда ее найдет опять, а именно отключить)
"Звуковая" часть видеокарты обычно может отключаться независимо. Поищите ее в списке звуковых устройств.
Хорошо что я снепшот сделал перед обновлением.
P. S. Я бы просто дал приоритет сторонним драйверам перед драйверами MS. Тогда автоматически исчезают проблемы с обновлениями дров от самой MS (их можно сверять по датам, как и все остальные дрова).
Вот парадокс, реализована криво, а работает отлично.
В программных продуктах масштаба Windows такой «парадокс» — скорее правило, чем исключение.
У меня умерла убунта после замены видеокарты и установки драйверов на неё из репозитория. Перезагрузка — GRUB — выбираем Убунту — чёрный экран и мигающий курсор (просто мерцающий, ничего ввести нельзя). Победилось переустановкой убунты и установкой уже новых драйверов через пол-года(!).
В любых программных продуктах
Ну оно понятно вроде этот драйвер наш, а этот чужой… но теперь как это объяснить машине?
А через год вышла Vista и был реализован этот костыль…
Предположим, что ваше устройство может использовать стандартный драйвер Windows, но вы установили фирменный специализированный драйвер для него. В этой ситуации при каждом новом обновлении Windows будет накатывать новый стандартный драйвер Windows вместо вашего фирменного драйвера, потому что в новой версии Windows у драйвера будет более свежая дата. Вам придётся вручную каждый раз возвращать нормальные драйверы обратно.
а что мешало учитывать дату, но драйвера отсортировать по дате в порядке убывания? (Новый — первый, старый — последний)?!
В том-то и проблема, что стандартный драйвер в новой версии Windows может оказаться новее, чем старый драйвер от производителя.
а что мешало учитывать дату, но драйвера отсортировать по дате в порядке убывания? (Новый — первый, старый — последний)?!
Подумайте.
Предположим, что ваше устройство может использовать стандартный драйвер Windows, но вы установили фирменный специализированный драйвер для него. В этой ситуации при каждом новом обновлении Windows будет накатывать новый стандартный драйвер Windows вместо вашего фирменного драйвера, потому что в новой версии Windows у драйвера будет более свежая дата. Вам придётся вручную каждый раз возвращать нормальные драйверы обратно.
Потому что последовательность версий драйвера локальна для производителя. Если для одного и того же устройства есть драйвер версии 5.8.400.12378 от Microsoft и версии 0.9.63.377 от производителя — это еще не означает, что первый подойдет лучше.
я видел например (помоему у интела)
Старая версия: 5.3.1765, новая версия 2.3.5.5.4765… и дальше уже идёт 2.3
и такое очень часто встречается
Это бы помешало другим производителям делать "дефолтные" драйвера, а Microsoft — выпускать свое железо.
яркий тому пример — драйвера Broadcom для windows 10. в версии 6.хх соединение стабильно отваливается каждую пару минут, для нормальной работы приходится откатываться на старую 5.100.245
На рабочем виндоус и «код» пишу в виртуалке. Думаю и на рабочий поставить бубунту, если не уволюсь.
Предмет статьи -, конечно, неТръу и ахтунг. По дате сортировать объекты...., набор полей
version
custom/native
доступны только брахманам, но все разроботчике виндоус — вайшьи, видимо.
Это не баг, это фича!
> Если привязаться к подписи файла, то в будущем она может сменится из-за просрочки или патентных войн и
> тогда гарантированы проблемы с драйверами для систем которые не в курсе смены подписей и т.д. и т.п.
> надо будет сначала обновить системы, потом драйвера к ним подсовывать чтобы чего такого не вышло.
Не очень понятно о чем вы. Новая версия OS которая не знает о своих собственных драйверах?
Драйвера от Ms устройств отдельной подписью подписывать?
Операционка не делить драйвера на свои и чужие, более того до формирования установочного образа состав драйверов может быть неизвестен, в него могут быть включены драйвера от производителя, самописные и т.д.
И что кстати делать с драйверами которые были написаны ДО ТОГО как было принято это решение?
Можно, конечно, подписать все драйвера после того как они будут интегрированы в установочный образ и таким образом определять свой/чужой исключительно по подписи но этот метод ещё сильнее попахивает костылями и на корню дискредитирует всю систему цифровой подписи.
> могут быть включены драйвера от производителя, самописные и т.д.
Вполне допускаю, что вы можете быть правы. И если это так, то отдел контроля качества занимается совершенно не понятно чем. Ну а вместе с этим отделом и отдел сертифицирования оборудования.
> И что кстати делать с драйверами которые были написаны ДО ТОГО как было принято это решение?
Не очень понятно какое «это» решение. Поясните пожалуйста.
> Можно, конечно, подписать все драйвера после того как они будут интегрированы в установочный
> образ
Либо я либо вы что-то не улавливаем. Я не вижу сложности в том, что драйвер переподписывается либо на поздних этапах тестирования, либо сразу по получении от разработчика (своего сотрудника или разработчика работающего на производителя железа). Никак не пойму где вы нашли загвоздку.
> и таким образом определять свой/чужой исключительно по подписи но этот метод ещё сильнее
> попахивает костылями и на корню дискредитирует всю систему цифровой подписи.
Почему? Я что-то разработал — подписываю. Кто-то другой это протестировал на совместимость — подписывают своей подписью. Получатель решает какой подписи доверять и в каком порядке. В чем костыль? В чем дискредитация?
Подпись она вообще не для этих целей, из пушки по воробьям стрелять. И потом, что делать при необходимости отозвать подпись? А срок действия подписи закончится, что делать? Там если копнуть поглубже, можно и других проблем накопать, и кто знает сколько их там ещё возникнет.
Если речь о том менять то, что есть то я сторонник: «работает — не трогай». Но если речь о выборе альтернативы, то я считаю подпись — лучше.
> Подпись она вообще не для этих целей, из пушки по воробьям стрелять.
У вас очень хорошие эпитеты. Но никаких дополнительных сведений вы этими предложениями не сообщили. Самое главное вы делаете уже 4-е утверждение и никак не обосновываете. Можете ответить на вопрос «почему»?
> А срок действия подписи закончится, что делать?
Во-первых подписи для драйверов уже используются и сроки у них уже заканчиваются переодически. Мне кажется вы видите проблему там, где ее нет. OS — это не статически зафиксированый набор артефактов. Это еще и обновления.
> Там если копнуть поглубже, можно и других проблем накопать, и кто знает сколько их там ещё
> возникнет.
Согласен с вами. Есть даже специальный термин для того, о чем вы говорите. Он не полностью соответствует описаной проблеме, но очень близок. Premature Optimization.
The old new thing — неофициальный блог.
При этом, любой код, даже Hello World, потенциально может содержать ошибки.
А потом ещё какой-нибудь сторонний разработчик додумается выставить этот флажок со злонамеренными целями и окажется, что система восприняла сторонний драйвер, как родной, что позволило обойти механизмы безопасности.
Особенно это справедливо для драйверов, подходящим нескольким устройствам, там выпустили в серии новое устройство — обновили драйвер, то что он с самым старым устройстовом в линейке станет работать нестабильно — никто же не проверит.
Например предложение обновиться с 7 до 10 чем не уязвимость?
ДатаРазработки - 1000 лет
Никто из нормальных производителей не укажет 11 век в качестве даты разработки своего драйвера.А для того чтобы эта дата нормально отображалась для пользователя вместо «21.06.2006», добавить условие вида:
Если ДатаРазработки < 01.01.1900 Тогда
ДатаРазработки = ДатаРазработки + 1000 лет
Конечно ещё худший говнокод, но хоть вопросов не вызывает :)
Либо как вариант, вообще не отдавать пользователю «костыльную» «заниженную» дату разработки встроенных драйверов (кому она вообще нужна).
Ведь фактически, для виндовса Vista+, как раз таки 21.06.2006 является «началом эпохи». т.е. фактически, не может быть ни одного драйвера, который написан до 21.06.2006.
При этом мы имеем возможность «сохранить» истинную дату разработки драйвера (на всякий случай), «закодировав» её этим прибавлением 1000 лет к возрасту, что позволяет путём нехитрых преобразований всё-таки извлечь её. И всё это делается достаточно прозрачным и непротиворечивым для механизмов системы Plug and Play способом. PnP пофигу на то, что драйвер датирован 11 веком, он просто старше и всё. Вне системы PnP ясно же, что это бред и это своего рода «сигнал» для того, чтобы прибавить заранее оговоренные 1000 лет и получить-таки «нормальную» дату разработки встроенного драйвера.
Более функциональный костыль :)
Скорее всего, парсер INF-файлов не правили уже лет двадцать.
дата та же — 21.06.2006 (хрен знает как PnP отрабатывает эту ситуацию и как выбирает драйвер «посвежее»).
В посте как раз и объяснено, как PnP отрабатывает эту ситуацию: выбирает по номеру версии.
Вот только небольшое уточнение — в посте говорится о том, что при совпадении дат разработки драйверов дальше он выбирает не по номеру версии, а по дате создания файла, а уж если и они совпадают, тогда уже сравниваются «номера версии».
Всем драйверам во всех версиях Windows присваивается стандартная дата, которая соответствует дате выхода Vista RTM. Эта фиксированная дата не зависит от версии драйвера или реальной даты создания файла. В то же время обновляется номер версии драйвера — это следующий фактор, который учитывается при выборе драйвера, после даты создания файла.Или под «датой создания файла» Ализар имел в виду всю ту же «дату разработки». Хз.
Так или иначе, ума не приложу как этот PnP может сравнивать что-нибудь вида «6.1.7600.16385» с чем-нибудь типа «6.1-rc2».
Или под «датой создания файла» Ализар имел в виду всю ту же «дату разработки». Хз.
Если бы alizar не переврал переводимый текст, вот это была бы новость.
В первоисточнике:
My colleague Zac explains: When the system looks for a driver to use for a particular piece of hardware, it ranks them according to various criteria. If a driver provides a perfect match to the hardware ID, then it becomes a top candidate. And if more than one driver provides a perfect match, then the one with the most recent timestamp is chosen. If there is still a tie, then the one with the highest file version number is chosen.Т.е. учитываются три фактора: hardware ID, дата и версия.
Так или иначе, ума не приложу как этот PnP может сравнивать что-нибудь вида «6.1.7600.16385» с чем-нибудь типа «6.1-rc2».
Номера версий в Windows всегда состоят из четырёх числовых компонент, от 0 до 65535 каждая, и сравниваются просто как 64-битные числа.
And if more than one driver provides a perfect match, then the one with the most recent timestamp is chosen. If there is still a tie, then the one with the highest file version number is chosen.Что буквально означает то, что Windows плевать на то, что драйвер по своей версии может быть древним как говно мамонта, если дата создания его файла каким-либо образом оказалась свежее, чем дата создания другого драйвера.
Браво, Microsoft!
Её, конечно, тоже возможно отредактировать; но если у вас в системном каталоге могут неожиданно для вас редактироваться файлы, то возможность использования не самых свежих драйверов — это наименьшее, что должно вас волновать.
В таком случае вообще не понятно зачем надо было устраивать эти «изящные» танцы с датами (которые их уродуют), если можно было всё-таки сделать всё по-нормальному, добавив хотя бы в те же INF-файлы встроенных драйверов какое-нибудь специальное поле-метку для PnP.
А так всё равно остаётся ненулевая вероятность того, что какая-нибудь «фирма» выпустит драйвер у которого в INF-файле дата разработки будет 21.06.2006 (или ещё раньше), а в качестве версии число меньшее, чем число, обозначающее версию встроенного драйвера. Концепция «встроенные драйвера имеют меньший приоритет» в таком случае проваливается.
В итоге получается, что по факту версия драйвера понятие второстепенное относительно понятия даты его разработки (что мягко говоря не прибавляет ему смысла), сами эти даты разработки как минимум для встроенных драйверов — вообще фикция для работы костыля, а сам этот костыль определения системой PnP приоритета использования сторонних драйверов всё равно получается полурабочим.
…
Браво Microsoft! :)
А так всё равно остаётся ненулевая вероятность того, что какая-нибудь «фирма» выпустит драйвер у которого в INF-файле дата разработки будет ...
Так же есть ненулевая вероятность неправильного прописывания любых идентификаторв, версии и т.п., но дата это имхо самое стандартное и очевидное поле, по которому можно хоть как-то ориентироваться в «свежести» драйверов. Объясните, в чем именно «костыльность» решения?
В чём заключается «костыльность»? Хм… я даже не знаю… может во всём?
Кстати, никакого «стандартного и вшитого поля» нет. Эта дата тире критерий отбора драйвера всего-лишь часть строки в текстовом файле с расширением *.inf, вида:
DriverVer=06/21/2006,10.0.14393.0которая просто считывается PnP. То есть там скорее всего вообще никакой проблемы добавить какую угодно «метку встроенности» драйвера не было.
Ввод дополнительного поля приоритета решает проблему. <...> Но этот метод не имеет преимущества перед тем, что использует Microsoft, кроме того, что не выглядит костылем. При этом он требует дополнительное поле.… что и требовалось доказать :)
Кстати, «не имеет преимущества, кроме...» = «имеет преимущество»
1) Решает поставленную задачу.
2) Не требует изменения устоявшихся стандартов и форматов файлов.
3) Позволяет делать разные хитрые штуки. Как в моем примере ниже.
А то что я, как разработчик, могу с легкостью заставить систему использовать мой драйвер, путем изменения даты — это +.
2) Не требует изменения устоявшихся стандартов и форматов файлов.Не сказал бы что там прям уж такие жёсткие и устоявшиеся стандарты и форматы файлов (например, у некоторых драйверов от Logitech версии состоят из 3, а не 4 частей и т.д.). Опять таки с той же датой разработки сама Microsoft «играется» как хочет.
3) Позволяет делать разные хитрые штуки. Как в моем примере ниже.Вот только «откатить» подобное «насилие» вы скорее всего уже не сможете. См. пример подобной «хитрой штуки» в моём комментарии ниже.
А то что я, как разработчик, могу с легкостью заставить систему использовать мой драйвер, путем изменения даты — это +.
И как ориентироваться по «стандартному и очевидному полю», если оно может быть изменено / не изменено любой из «фирм» как её индусам заблагорассудится?
Любое поле может быть изменено как заблагорассудится разработчику драйвера. Вот присваивать драйверу атибуты «встроенный» или сторонний — это точно костыль! А использование даты это принцип ранжирования всех доступных ОС драйверов (например при установке драйвера ОС натравили на папку, в которых их 10 штук, как тут выбрать лучший?). И сама ОС очень элегантно пользуется этой же системой ранжирования для установки рейтинга для своего драйвера.
У меня создается впечатление, что все злятся на Майкрософт за такое просто и элегантное решение, поэтому называют костылем :)
Любое поле может быть изменено как заблагорассудится разработчику драйвера.Вот именно. Поэтому логично что-либо менять исключительно в «своих», подконтрольных тебе же, как разработчику, драйверах (что Microsoft, впрочем, и сделала). То есть не использовать «общие» поля (тем более имеющие весьма косвенное отношение к приоритету использования этого драйвера), а маркировать уникальными метками, присущими только этим «обособляемым» драйверам.
Вот присваивать драйверу атибуты «встроенный» или сторонний — это точно костыль!Хм… почему костыль-то? Эта прямое решение задачи, которую Microsoft себе же и поставила — пометить «встроенные» драйвера для понижения приоритета их использования.
… например при установке драйвера ОС натравили на папку, в которых их 10 штук, как тут выбрать лучший?Ну, если завтра какой-либо производитель напишет драйвер и случайно в его INF-файле поставит что-нибудь вроде 11.02.3017 (ну вот дрогнула у хирурга рука :) ), то этот драйвер будет «лучшим» ближайшие 1000 лет и если в нём надо будет залатать что-нибудь, то можно хоть «запатчится» в доску, а толку будет ноль, пока не поставят новому драйверу дату, например, 12.02.3017, ну или 11.02.3017, но с более свежей версией (так и пойдёт эта ерунда дальше, уже не остановишь :) ) Элегантно.
У меня создается впечатление, что все злятся на Майкрософт...А у меня создаётся впечатление, что многие опять зачем-то тащат сугубо технический вопрос в какую-то эмоциональную плоскость из разряда злятся / не злятся, любят / не любят, Microsoft / Apple и тому подобное :)
Ну, если завтра какой-либо производитель напишет драйвер и случайно в его INF-файле поставит что-нибудь вроде 11.02.3017...
И ничего не случится. Он не получит цифровую подпись драйвера от Майкрософт и все на этом. Такой драйвер не установится просто так. Вы упускаете из виду всю картину, а зациклились на «костыле» для «своих» драйверов. Если же пользователь на столько умный, что сможет установить такой драйвер без подписи, то все, о чем здесь пишут, просто не имеет никакого значения.
Он не получит цифровую подпись драйвера от Майкрософт и все на этом.Почему? Не получит на основании того, что дата разработки не соответствует действительности? ;)
А если я, как разработчик скажу, что это в свою очередь у меня уже такое элегантное решение назрело, которое даёт наивысший приоритет моему драйверу именно этой версии (ну хочется мне так)? Неужели Microsoft скажет что-нибудь вроде: «Вам, в отличие от нас, такие элегантные
Например, «поставив» туда «0» или даже ничего не поставив, вы всё-равно получите какую-то дату (скорее всего начало «Unix Epoch» — 01.01.1970).
Поэтому «пометить» можно только числом-датой, что и сделали — «пометили» датой 21.06.2006.
Лучше уж совсем не видеть даты чем видеть торчащий костыль
До этой статьи вы хоть раз смотрели на «дату разработки драйвера»? Я — нет.
Этот «торчащий костыль» на самом деле спрятан глубоко под капотом, куда не полезет никто, кроме «индусов», которые знают, в чём дело.
Plug and Play (сокр. PnP), дословно переводится как «включил и играй (работай)» — технология, предназначенная для быстрого определения и конфигурирования устройств в компьютере и других технических устройствах. Изначальная технология называлась NuBus и была разработана Western Digital. Шина NuBus позволяла добавлять устройства и настраивать их программными средствами. Технология PnP основана на использовании объектно-ориентированной архитектуры, её объектами являются внешние устройства и программы. Операционная система автоматически распознает объекты и вносит изменения в конфигурацию абонентской системы.
Ваш капитан.
Костыль святого Грааля, я наконец-то нашёл тебя!
А вообще забавно, что Майкрософт не догадались решить проблему самым здравым способом — предоставить пользователю возможность выбора. Грубо говоря, при установке дров на устройство спрашивать "заменять драйвер на свежий, если такой появится в Windows update?"
Напоминаю, что вы в любой момент можете зайти в Device Manager и выбрать вместо любого драйвера любой другой. Этой возможности выбора недостаточно?
Костыль, возведенный в ранг идола.
Семь раз отмерь — один отрежь.
Система работает так, что всегда будет использовать драйвер от производителя, если он есть.
- На версию драйвера полагаться система не может, т.к. с версиями полная неразбериха даже у производителей.
- Приоритет по поставщику драйвера выглядит правильным. Но такой подход не сработает, если в составе ОС идет драйвер, поставщиком которого является не Microsoft. Может быть такое или нет, я не знаю.
- Ввод дополнительного поля приоритета решает проблему. Драйвера поставляемые с ОС имеют приоритет ниже, чем у драйверов производителя оборудования. Но этот метод не имеет преимущества перед тем, что использует Microsoft, кроме того, что не выглядит костылем. При этом он требует дополнительное поле.
Таким образом, используемый Microsoft способ выглядит самым оптимальным. Я бы даже сказал, что он очень хорош!
Рассмотрим пример:
Вы установили ОС Windows и для некоторого оборудования, например, Wi-Fi был установлен драйвер из состава ОС.
Далее вы устанавливаете драйвер от производителя Wi-FI датированный 16.02.2016. Система начинает использовать этот драйвер. Но в мае 2016 года в драйвере обнаружена серьезная уязвимость или проблема и производитель ее не закрывает. При этом драйвер из состава ОС либо не имеет этой проблемы, либо она закрыта в обновлении. Тогда Microsoft может изменить в своем драйвере дату на 17.02.2016. Система начнет использовать этот драйвер и проблема будет решена.
Позже производитель может выпустить драйвер с исправлением, датированный позже, чем 17.02.2016.
Давайте я подскажу поверхностные проблемы этого подхода:
- Крайне неожиданно, но юзер не может узнать дату релиза драйвера из предназначенного для этого меню. Удивительная логичность ситуации: пункт «Дата разработки» есть, а реальной даты нет. Не смущает?
- Хуже того (и да, достойно отдельного пункта) «дата» вводит в заблуждение неподготовленного человека. Этот «атата» можно исправить независимо от предыдущего пункта, например, очередным костылем: видишь специальную дату, отображай «нет инфы» или что-нибудь поинтересней в соответствующем поле
- Это решение очень плохо поддерживаемое. Разработчик не может довериться логике названия поля, нужно знать особенность системы: даты не просто так, а в них может крыться спец смысл. При смене поколений девелоперов, новый может быть не посвящен в эти таинства, в результате чего мы будем обсуждать очередную статью «свежие системные драйвера неожиданно имеют приоритет выше вендорских», а человек всего лишь сделал доброе дело и поставил наконец нормальную дату в описание нового драйвера
Система может быть проста, последовательна и логична. Дата обозначает дату, флаг «системный» — источник драйвера. Я могу понять, когда программисты суют костыли по причине острой нехватки времени и/или квалификации, но вот людей, которые целенаправленно этот подход одобряют- увы, не в состоянии.
Что вас останавливает от более широкой трактовки даты в таком случае? Почему бы четным годам до 2006 не поставить в соответствие, скажем, наличие в драйвере поддержки режима X, а месяцем «декабрь» отмечать те, что являются краткосрочными и будут скоро обновлены? А дату «29 февраля» интерпретировать как «заглушка драйвера с минимально возможным функционалом»? Красота такого решения, надо полагать, будет непревзойденной: ни одного лишнего флага вводить не придется.
P.S. писать на GT через неделю после публикации сродни некропостинку, но я, как человек из sustain команды, проклинающий авторов подобного кода до 7 колена включительно, не могу смотреть на то, какой пример вы
1) Мне ни разу не было необходимости смотреть дату системного драйвера. Зачем она мне?
2) С программистом вообще надуманная проблема.
Вы упускаете суть.
Во-первых, это не руководство как надо делать, а пример того как они вышли из сложившейся ситуации.
Во-вторых, ОС, после нахождения лучшего совпадения железа, расставляет приоритет драйверов по дате. Так почему бы этим не воспользоваться?
P.S. Костыль это или фича — вопрос чисто религиозных предпочтений.
Мне ни разу не было необходимости смотреть дату системного драйвера. Зачем она мне?
Ну раз вам не надо, то и никому не надо, очевидно же. Вот же майкрософтовцы, напридумывали полей пользователям отображать почем зря, но потом исправились и стали отображать их неверно. Очень правильный подход.
Я вот еще раз переспрошу, ну, на всякий, вас точно не смущает, что окошко дату типа отображает, но делает это некорректно? Это модная фича? Разумный подход? Или зависит от религиозных предпочтений?
С программистом вообще надуманная проблема.
Да не говорите, работая в sustain ни разу не возникало трудностей с неожиданным и нетрадиционным использованием данных. А, нет, подождите, возникало. Вот недавно всплыл баг из-за того, что isPasswordEmpty неожиданно определял не только наличие пароля, но и предпочитаемый тип хеша для его сохранения, а дизайнер, который правил этот участок, особенностей кода не заметил. Нет бы флаг изначально добавить для этой функциональности, не было бы беды. Но на хак с датами драйверов ни капельки не похоже, да.
Вообще, костыль является эталонным в том плане, что он на ровном месте делает логику программы неочевидной одновременно и пользователям и разработчикам. Обычно вредят только одной из сторон.
что окошко дату типа отображает, но делает это некорректно
Дата отображается корректно, но не та, которую вы, возможно, ожидаете увидеть.
Ваш пример не корректен. Тут дата осталась датой, и не несет дополнительной информации о погоде в Редмонде.
Если компания ставит на проект программиста, предварительно, не ознакомив его с соглашениями, принятыми в данном проекте, то это проблема чья угодно, но не программистов которые писали проект.
Расскажите нам, как нужно было решить проблему с приоритетом?
Расскажите, для чего вам реальная дата драйверов из состава ОС?
Есть очень классный, естественный, а главное простой подход: информация не нужна — не показывай, показываешь — показывай корректно. Даже если считать дату релиза излишней (с чем я несогласен) текущий вариант ни разу не оправдан.
Оффтопик: Почему несогласен? Дата релиза это быстрый способ оценить «насколько драйвер свежий». Если у меня глючит девайс, то глянуть инфу по использующемуся драйверу — один из естественных шагов сбора данных о проблеме. И, обнаружив в системе окаменелости 2006 года, я полезу вбивать в гугл «почему оно не обновляется», т.е. решать несуществующую проблему.
Дата отображается корректно, но не та, которую вы, возможно, ожидаете увидеть.
Я это в рамочку повешу. Смотришь в поле «Дата разработки» и видишь дату, которая не является датой разработки, но отображается, безусловно, корректно.
Ваш пример не корректен. Тут дата осталась датой, и не несет дополнительной информации о погоде в Редмонде.Это, простите, как? Дата перестала быть датой релиза драйвера от слова совсем, а превратилась в метод назначения наименьшего приоритета. Хотя да, погоду в Редмонде туда пока не засунули.
Если компания ставит на проект программиста, предварительно, не ознакомив его с соглашениями, принятыми в данном проекте, то это проблема чья угодно, но не программистов которые писали проект.
Если программист пишет костыльный непродуманный связный неустойчивый плохо поддерживаемый код, который требуется разъяснять всем новоприбывшим (что, кстати, технически невозможно: в крупных проектах разъяснение ВСЕХ костылей займет времени заведомо больше времени жизни отдельно взятого разраба, что никак не оправдывает написание новых костылей), то это называется чудесным термином технический долг и является достаточно тяжелой ношей для кармы и совести программиста (при наличии последней, конечно же). У компании в этой ситуации, впрочем, тоже есть проблемы: организация сроков и метрик, вероятно, подталкивает к быстрым непродуманным фиксам, а практика code review недостаточно развита, чтобы настучать автору по рукам.
Достаточно писать логичный самодокументированный код, в котором дата релиза это реально дата релиза, и никаких разъяснений новоприбывшим не потребуется, никаких потенциальных факапов не будет заложено, никаких статей на GK не будет выложено. Но да, для этого требуется и подумать подольше, и покодить побольше, что сложно.
Расскажите нам, как нужно было решить проблему с приоритетом?
Концепт без специфики. При установке драйвера есть некий источник (набор источников?), откуда система получает о нём информацию (версию, дату, whatever). Источник контролируется автором дров. Очевидно, в нём не хватает информации о приоритетности драйвера. Следовательно, формат этого источника необходимо расширить необязательным полем «low_priority_source». При отстутсвии такого поля или при значении false считать драйвер нормальным вендорским, в противном случае ставить как системный.
хотя некоторые скажут, что у них всё нормально устанавливается и работает
Потому что так оно и есть. Однако много зависит от типа устройства, когда на ПК редко возникают ошибки, то на ноутбуках этот процент выше, а про планшеты и подавно.
Эти утилиты призваны облегчить установку драйверов, но никак не «запустил и оно само дальше», чего многие не понимают. Хотя DriverPack Solution как раз пытается сделать всё само и предоставляет минимум возможностей для управления установкой. Да и принципы работы у нее в лучших традициях вредоносного ПО — установим чего ты хочешь(скорее всего), а еще программы «полезные» и в автозагрузку!..
В массе, «махровые» «виндоузятники»!
Как вам такой пример: Ставим в две доступные PCI CM8737(да, не тридцать восемь)
Windows «крашится» еще на стадии установки(думается МНЕ, что и установленный работать не будет, ибо ID на шину и устройство ОДИН)
«Поднимаем» риск-диск линуха, и что видим: HW0 и HW1 устройства в наличии — можно «тупо» rmmod снести «неугодное».
Проблем драйверов не замечал.
А, да, интегрированные ICH9-сетевухи порой «любят мозг». Поднять модуль ядра — дело нескольких секунд.(не про пересборку(на моем i3,4Gb уходит около сорока минут — сейчас 4.9.7))
И эти бесконечные пляски с nvidia-drivers…
В общем-то, я далек от мысли восхвалять лишь Win (или Linux), просто меня удивляют восторженные пользователи с обеих сторон, у которых мистическим образом абсолютно все и всегда работает. Понятно, что можно долго спорить, что лучше — глючный и тормозной центр обновления Windows или глючный и тормозной Portage, мейтейнеры которого считают зря прожитым день без добавленных в основное дерево конфликтов и кривых зависимостей, но зачем отрицать наличие проблем?
Пожалуй, я бы сказал так: Linux создает больше проблем, но зато позволяет их решить.
nvidia-drivers
Даже не поспоришь!
На ядро выше 4.4.4 не накатишь драйвер для старухи GT 9800, только nouveau. А оное убрали из дерева. Целая пачка сорок четвертой серии от 39 до 48 включительно, а 4.4.0 нету.
китайская беспроводная мышка
Нет windows — нечем проверить. С отечественным производителем(DEXP) «борюсь» xmodmap в ~/.xinputrc
Еще одна — развернул архив с файлами, созжанными на маке. Файлы оказались «зашифрованными» — отображаются зеленым. Но никакого пароля не надо — открываются. Невозможно сменить атрибут шифрования! Владельцем числюсь я со всеми правами (и еще пару раз так и сяк менял владельца и назначал права) — не может убрать атрибут шифрования!
И такое встречается регулярно. Вот и эта статья добавила шар на чашу весов.
Но есть простой способ расшифровать его — открыть в программе на редактирование и сохранить под другим именем уже без шифрования. Или для копирования использовать сторонние программы, которые не будут копировать шифрованный поток.
Да нет, это именно что странности. Какой смысл при распаковке файлов из архива автоматически делать их зашифрованными?
Файл остаётся зашифрованным на НОСИТЕЛЕ, но для программ выполняющихся из-под твоей учетки это абсолютно прозрачно — они видят его незашифрованным. Просто у вас есть права на этот файл, и вместе с ними ключ для дешифровки который привязан к учетке. Попробуйте файл вынести на FAT32 и всё это пропадёт к чертям.
Все эти странности — лишь от непонимания как работает на самом деле система разграничения прав. Иногда нужно действительно нашаманить чтобы сделать так как требуется, но это лишь от непонимания как работает система прав.
Почему все драйверы в Windows датируются 21 июня 2006 года