Как стать автором
Обновить
108
0
Михаил Борисов @MichaelBorisov

Пользователь

Отправить сообщение
Чем более зеркальная поверхность — тем меньше она излучает собственного теплового излучения. Высокой погрешности можно ожидать только при измерении температуры объектов с зеркальными поверхностями сравнимого качества.
В химических лабораториях еще используются т.н. «азотные ловушки» — вредные газы проходят около поверхностей, охлаждаемых жидким азотом. При этом всякая органика и прочее непотребство конденсируется.
А что насчет диоксида азота, который образуется как при электрическом разряде в воздухе, так и при высокотемпературном горении?
А это потому, что в нашем мозгу имеется встроенный «раскрашиватель». Хотя результаты его работы и не воспринимаются так, как будто их видят глаза, но на эмоции явно влияют.

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

Здесь я вижу сходство с системами подавления шума в аудиозаписях. Большинство «отреставрированных» записей я бы лучше слушал с шумом, который там изначально был. Ведь в ходе «реставрации» теряются слабые звуки заднего плана, придававшие музыке особый колорит.
У нас была где-то в 1996г лабораторка по голограммам. Записывали как плоские, которые можно было смотреть только в лазерном свете, так и объёмные, методом Денисюка. Потом еще рассчитывали параметры, вроде глубины, на которую можно было рассматривать изображение. И тогда еще все студенты мечтали о голографическом кино, а преподы их обламывали.

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

1) Подмена выходных сигналов отладочной информацией. В той ситуации было совершенно невозможно использовать другие методы отладки. Ни эмулятора, ни точек останова, ни debug printf, ни GPIO/LED. Вместе с тем, прошивка формировала некие выходные сигналы. Временно заменив эти сигналы отладочной информацией, удалось вывести эту информацию наружу и по ней обнаружить и исправить ошибки в программе.

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

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

4) Создание «пыточной» программы установления сетевых соединений. Изредка затыкался сетевой стек. Ошибка была практически невоспроизводима «на заказ». С помощью программы, постоянно устанавливающей и рвущей соединения, удалось воспроизвести ошибку за полчаса-час «пыток». Дальше дело техники — внутрисхемный отладчик, останов программы, изучение ее состояния — и вот ошибка найдена и исправлена, повторные несколько суток «пыток» показали, что результат достигнут.

Да, что еще важно… Никогда не отмахиваться от сообщений коллег или клиентов о сбоях. Оно обычно само не проходит, не рассасывается — как беременность.
Раз вы занимаетесь оформлением сертификатов на драйверы через MS — не могли бы сказать, примерно, сколько денег берут в MS за это?
главное условие — прохождение их тестов WHQL

Тут вопрос, где они будут запускать эти тесты. Правила сертификации за последние годы несколько раз менялись в сторону ужесточения. Многие веб-страницы с информацией по теме (в том числе на сайте Microsoft) устарели.

Если я правильно понял результаты своего последнего поиска — то тесты должны исполняться на компьютере Microsoft. А поскольку драйвер не работает без железа — то в Microsoft необходимо выслать по почте железо, с которым будет работать драйвер. Может быть, вместе с компьютером. Там в тексте были слова «Submit your hardware». Может, их можно толковать как-то иначе, но бесплатно разъяснять сотрудники Microsoft отказались.

Мы бы и не против выслать в Microsoft железо. Но связанные с этим манипуляции со стороны Microsoft (вставить карточку в компьютер; включить; рисковать поломкой компьютера) требуют довольно высокой квалификации персонала и могут стоить немалых денег. Знать бы, какого порядка сумма. У нас просто решалась судьба проекта: сколько надо в него вложить денег для того, чтобы были дрова под новые версии Windows; и окупились ли бы эти вложения.
Спасибо за статью, очень интересная тема!

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

Мне пришлось однажды по работе заниматься драйвером. Не с нуля разработать, а портировать под 64 бит. Это оказалось достаточно легко, но потом… Просто режим TestSigning работал в Windows 7, но в Windows 10 всё гораздо сложнее. Необходимо сначала особым образом вызвать перезагрузку системы, тогда при старте появится специальное меню. И там, в глубине, есть один пункт, который позволяет снять требование сертификации загружаемых драйверов. На один раз. При следующей перезагрузке процедуру необходимо повторить заново.

В конце концов всё заработало, и мы попытались связаться с Microsoft для выяснения стоимости и условий сертификации. Даже дозвониться до службы поддержки проблема — телефоны открыто не публикуются, а веб-интерфейс стремится перенаправить человека на форумы и т.д., где цены не публикуются, а условия указаны расплывчато. Ожидаемо, сотрудники телефонной поддержки даже не знали, что это такое — сертификация драйверов. После открытия бесчисленного количества тикетов и перенаправлений к другим сотрудникам в другие офисы и другие страны, наконец-то, удалось поговорить с кем-то, кто хоть чуть-чуть в курсе дела. Они обещали помочь, но… Перезвонили и сообщили, что «из соображений безопасности» до того, как наша фирма получит EV сертификат (который стоит около 2000$ и сам по себе не связан с Microsoft или сертификацией драйверов) с нами вообще не будут разговаривать, в том числе не назовут цену за получение ЭЦП драйвера от Microsoft.

Так и похоронили этот вопрос.

А у вас есть какая-либо информация о том, как подписать драйвер в Microsoft? Сколько это стоит, что для этого нужно? Правда ли, что нужно направлять железо, к которому разрабатывается драйвер, на тестирование в Microsoft?
В Windows есть structured exception handling, в юниксы — не завезли.

Создать exception другому потоку не так просто. В юниксах есть сигналы — один поток может послать другому что-то типа аппаратного прерывания. В рамках потока-«жертвы» исполнение кода приостанавливается, поток исполняет процедуру обработки прерывания и возвращается к прерванному коду (если обработчик этому не помешает). Насчет межпоточных сигналов в юниксе не знаю, но межпроцессовые сигналы точно прерывают код.

А вот в Windows этого нет. В User-mode нет никаких средств, с помощью которых один поток может прервать исполнение другого в произвольном месте. Можно прервать код с помощью Kernel-mode APC, но этот механизм доступен только из ядра и не документирован официально. User-mode APC код не прерывают (см. доку на QueueUserAPC). Они срабатывают только когда поток-жертва войдет в специальный режим ожидания.

Кстати, интересно, как вы себе представляете всякие lock-free алгоритмы, адаптированные к тому, что в них в любой момент может произойти исключение? Не может ли от этого существенно снизиться производительность?
Если код той сложной обработки рассчитан на это, то он будет аккуратно производить все свёртки

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

Я бы все же предпочел иметь систему, где malloc возвращает NULL в случае нехватки памяти. Пусть даже придется проверять результат — это значительно проще, чем переделать все алгоритмы так, как вы предлагаете. Пусть даже программу, которой не хватило памяти, прибивают сразу. Но не та система, что есть сейчас — когда вместо одной программы может быть прибита другая, и не в момент malloc, а в произвольном месте.
Слишком ярким оказался конкретный соблазн.

Вот тут не понял. Кто чем соблазнился?
Предлагаемое вами решение может, конечно, снизить остроту проблем, создаваемых принципом Overcommit. Но, боюсь, оно не решит их в корне.

Если в старых системах, где malloc() при исчерпании памяти возвращает NULL, программа могла продолжить работу, хотя бы воздержавшись от дальнейшего выделения памяти — то в современных системах этого недостаточно. Надо не только прекратить запрашивать память, но активно и срочно освобождать память, выделенную ранее.

Допустим, у вас многопоточное приложение. Один поток получает уведомление, что в системе заканчивается память. Что он может с этим сделать? Самому потоку, ждущему уведомлений, обычно память не нужна, и освобождать ему нечего. Нужно послать сигнал другим потокам, которые используют в данный момент память и могут ее освободить. Если потоки заняты в данный момент вычислениями, архивацией, шифрованием и т.д. — то во все эти алгоритмы необходимо вставить опрос флага, сигнализирующего о необходимости срочно прекратить работу.

Если опрашивать этот флаг редко — то за время между опросами поток может потребить больше памяти, чем имеется в «сейфе на 1000 талеров». Если опрашивать часто — то придется глубоко лезть в сложные алгоритмы расчетов, архивации, шифрования, видеокодеки. Возможно, придется лезть в сторонние библиотеки. Придется разбивать большие операции чтения файлов на маленькие части, чтобы проверять между ними флаг. Риски и трудозатраты, связанные с такой доработкой алгоритмов и библиотек, представляются мне гигантскими.

И самое печальное, что все эти ухищрения нужны только для того, чтобы снизить (но не устранить) последствия порочного подхода, принятого в конкретной операционной системе.
В технике, гарантия обычно даётся на дефекты, допущенные в процессе производства, которые повлекли за собой преждевременный выход изделия из строя. Гарантия не распространяется на нормальный износ изделия в процессе эксплуатации. Как в стоматологии — не знаю, но, наверное, что-то подобное.
Отличный проект, давно ждал следующего поколения автокомпозиторов! Первым успешным, который я видел, была программа AlgoMusic для компьютеров Amiga. Также интерес представляет одна из новых программ, cgMusic. Все они работают на «классическом» принципе — музыкальная теория + случайные числа. cgMusic интересна тем, что может генерировать в нескольких жанрах на выбор (рок, поп, марш и т.д.). Algomusic генерирует только техно, но некоторые его «произведения» мне так понравились, что попали в фонотеку.

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

На принципе GAN построены сетки, генерирующие фотографии людей с пугающе высокой правдоподобностью, что не каждый человек не всегда поймет, что перед ним «мираж».
Вообще-то были опыты со стиранием информации. И они показали, что при этом фотоны возвращаются в состояние суперпозиции. См. Quantum Eraser Experiment.
Wireshark превратился в инструмент огромной мощности, незаменимый при анализе обмена данными по сети.

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

Я года 3 назад купил кассету в магазине. Долго искать пришлось — в большинстве магазинов их больше не продают. После однократной записи-воспроизведения с ленты посыпался магнитный слой.

Похоже, с кассетами устроили то же, что когда-то с дискетами. Если во времена расцвета дискет они годами служили, то для купленных в начале 2000х дискет большая удача была, если она не сдохнет после одного-двух вставлений в дисковод.
Согласен. По крайней мере поначалу, бессмертие будет доступно лишь считанным людям, «элите элит». Ну типа Рокфеллеров каких-нибудь, Соросов и т.д. Даже если процесс «лечения старости» будет не очень трудоемким — цена за него все равно будет составлять миллиарды долларов (так, чтобы ее могло заплатить 20-50 человек во всем мире), ведь превышение спроса над предложением в этой области воистину безгранично. Возможно, кроме магнатов, бессмертие получат некоторые выдающиеся ученые или другие приближенные магнатов, которые представляют для последних значительную ценность.

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

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

Так что, помимо победы над старостью, нужно еще страховаться от несчастных случаев. Не деньгами, конечно, а бэкапами. Так, чтобы в случае гибели человека его личность и тело можно было бы воссоздать.
Поздравляю вас, автор, вы изобрели стеганографию!
Цены упадут. Но не обязательно в 2 раза.

Допустим, на рынке есть 3 квартиры и 10 желающих их купить. Желающие могут заплатить: 1x 100$, 2x 90$, 5x 80$; 3x 60$.

Если квартиры продавать по 90$ — то платежеспособный спрос будет соответствовать предложению, и 3 квартиры уйдут за 90$.

Если на рынке будет 6 квартир — то продать их все можно за 80$, так как имеется достаточно покупателей, готовых заплатить такую цену.
Вот я не понимаю этой лихорадки по поводу замены цвета экрана смерти. Чем синий-то не устраивает?

Люди к нему привыкли. Сразу понимают, что произошло. А надежность винды уже достигла такого уровня, что этот экран появляется чрезвычайно редко; как правило — в случае проблем с железом или во время отладки на компе у разработчика драйверов. Так что синий экран уже не должен быть позорным для Microsoft.
1
23 ...

Информация

В рейтинге
Не участвует
Зарегистрирован
Активность