Именно так. Пример для чего это может быть нужно — шаренное хранилище образов для развертывания виртуальных серверов.
При этом можно не только присоединить его «только для чтения», но и на уровне протокола защитить диапазоны адресов от конкурентного доступа (группа команд Reservation в протоколе).
Да, там чуть иначе. «NSID=NSIDX+1» — примерно так идёт во всей прошивке.
Ну это смотря как писать)
Это применимо как к пространствам имён, так и к самим устройствам. Откуда это пошло — я не в курсе, к сожалению. Возможно, это некое наследие больного прошлого…
NSID=0 зарезервировано потому что 0 — пустое значение для любого поля в NVMe CommandEntry. Если бы можно было создать нулевой неймспейс, то любая команда от хоста, специфичная для неймспейсов, и содержащая пустой NSID, предназначалась бы для этого злосчастного неймспейса. Ведь порядок назначения NSID для создаваемых неймспейсов определен в стандарте, по возрастанию от наименьшего незанятого значения. А так 0 — это или «команда не использует NSID», или «Invalid NS or Format» если использует.
А что касается --controlers=1 у автора, то я не помню что бы CNTID или CNTLID не могли быть равны 0. NVMe 1.3c раздел 7.11:
Я не видел ни одной nvme, которая бы умела больше одной ns. И корпоративной тоже. Dell'овые топовые NVME тоже только 1 ns делают. Это нужно какому-то конкретному вендору для каких-то конкретных вопросов.
Enterprise SSD PE80 серии от Hynix умеют до 128 неймспейсов. Другое дело что заказчик определяет сколько их будет в прошивке.
В целом, я
1) Не доверяю управление разделами фирмвари nvme.
Фирмварь NVMe диска не управляет разделами. NVMe Namespace — это и есть сам диск. И на уровне протокола он выглядит для хоста изолированным устройством, как и обычный HDD. То, что несколько дисков находятся физически на одном устройстве — следствие растущей производительности и емкости NVMe накопителей.
2) Не доверяю шифрование фирмвари nvme
Тут я могу ошибаться, но шифрование внутри контроллера защищает данные только от прямого чтения из NAND (плюсом еще вроде как идет более равномерное распределение зарядов внутри чипов, но это уже совсем далеко от моей специализации). Это не отменяет необходимости шифровать ваши данные перед записью. Тем более потому что эта функция тоже может быть отключена по требованию заказчика дисков.
3) Не доверяю адекватность обработок ошибок thin provision nvme
Не совсем понимаю о каких ошибках идет речь. Thin Provisioning вообще очень специфичная функция и ее очень мало кто требует.
Другими словами, я им не доверяю. Я им и байты-то с трудом доверяю, не то, что сложные вопросы.
Ну по сравнению с «байтами», NamespaceManagement прост как дважды два, лишь только слой логических адресов над пространством накопителя.
Поддержка нескольких контроллеров и всякие «фабрики nvme» безумно далеки от реального мира, так что вся вот эта красота — она просто для усложнения имени устройства.
Вся эта красота — для упрощения. Упрощения создания облачных хранилищ, обеспечения безопасности доступа к данными. Один современный NVMe накопитель с несколькими неймспейсами и виртуальными контроллерами уже на уровне протокола позволяет безопасно и изолированно друг от друга хранить данные NN (Number of Namespaces) облачных серверов. Весь NamespaceManagement писался под сервера. И это уже становится востребованным.
Ну не так что бы и мало, в текущих-то экономических реалиях. Это не только налоги компаний, но и высокие зарплаты ITшников, которые возвращались в экономику через покупку недвижимости, автомобилей и т.п.
К тому же это (был) довольно стабильный и постоянно растущий источник валюты для страны.
В очень странном свете статья подана. Получается так, в стране созданы хорошие условия для развития IT-отрасли, на слуху большое количество классных IT-компаний, успешных стартапов.
Были созданы, когда дальновидные люди смогли убедить создать ПВТ (парк высоких технологий) и предоставить условия, налоговые льготы резидентам до 2040 (кажется) года. Теперь этого всего нет, отменяется.
В 20 году, а может и ранее, в стране проявляются ярко-выраженные протестные настроения (причины сего оставляем за скобками, тем более оставляем за скобками и оценочные суждения происходящего).
Только не «протестные настроения» мешают бизнесу и двигают миграцию, а их причина. И «настроения» — это реакция общества.
Бизнес диверсифицирует свои риски, так как они (риски) начинают превышать те плюшки, которые давала страна IT-компаниям. Миграция как одно из проявлений диверсификации. Короче, с моей точки зрения правильнее все же говорить о диверсификации рисков со стороны бизнеса, нежели о миграции, которая является следствием, но бесспорно имеет место быть.
Миграция (в том числе бизнеса) из Беларуси является следствием наступления фактического тотального беззакония. В текущей ситуации у нас ни бизнес, ни персоналии (за исключением служащих некоторых организаций) не могут чувствовать себя в безопасности. Презумпция невиновности практически упразднена, судебная система работает только в одну сторону, юридическая защита бесполезна (это факт, а не мое личное видение).
— Вернется ли бизнес обратно и если да, то на каких условиях?
Условия известны и озвучены. Они же, впрочем, очевидны. Но возвращения в ближайшие годы ожидать не стоит, увы.
— Что будет с IT-отраслью?
Отрасль точно не исчезнет, но и развиваться она уже не будет. Условия развития уничтожены. По сути из преимуществ осталась только стоимость разработчиков, да и то большинство хочет уехать или как минимум сменить налоговое резидентство.
И да, обидно в целом, строили, строили, вкладывались, вкладывались, а сливки лизнет кто-то другой.
Мне, как ITшнику и гражданину Беларуси обидно не столько за IT, сколько за то что делают со страной вообще. Наверняка так же очень обидно тем, кто строил, продавливал в верхах развитие IT в Беларуси. Но все это выброшено на свалку решением человека, который дальше своих усов не видит.
Подскажите, а чем вам Yocto не подошел? Там давно слой для малинки есть — подключил и собирай. Тем более сейчас это, по сути, стандарт для сборки Linux для embedded.
Какую именно особенность разработки сайтов для микроконтроллеров вы хотели отразить в статье? Из того с чем я сам сталкивался, это:
— как сделать сайт когда у тебя нет свободной RAM;
— как сделать красивый сайт когда у тебя нет свободной Flash.
Так-то получается что оптимизация по RAM отсутствует. Angular раздувает размер самого HTML файла (и сколько ему самому Flash надо?).
Естественно за это придется расплачиваться. Да SSE потребует немного больше ресурсов чем SSI. Но мы с помощью Embox легко вместились в STM32F4 причем без оптимизации и использовали всего 128 кб ОЗУ. Меньше просто проверять не стали.
128Кб RAM — это на всю ОС с сервером или только сервер? А python http.server сколько памяти кушает? А сам python3 сколько Flash занимает? А сколько будет потреблять основное приложение?
Просто хотелось бы понять на какой STM32F4 это все рассчитано. В предложенном варианте сайт не влезет уже в 5 из 12 линеек STM32F4 и еще в двух останется только 64KiB RAM для основного функционала. Остаются только дорогие варианты.
Статья выглядит не законченной.
В каких случаях требуются подобные расчеты? Что с точностью? Картинок бы каких добросили, графиков. Код? И ссылки на литературу тоже хотелось бы.
Кхм, но это же, откровенно говоря, не правда.
Кто бы что не говорил, но любая информация, которая при любой глубине выборки может указать на конкретное устройство и/или персону, не может быть обезличенной. Тем более ID, привязанный к железу.
Даже если набор данных не содержит идентификаторов, но он позволяет с высокой долей вероятности составить предположение о конкретном устройстве, то это уже можно считать слежкой.
Тут еще, конечно, вопрос в том, а нужны ли реально обезличенные данные компаниям.
ИМХО, конечно, но в описанном случае if-else действительно не очень. Switch-case уместнее.
В предложенном решении IDE покажет иерархию вызовов конечных функций? Можно будет «побегать» по цепочке и посмотреть все условия которые выполняются для вызова функции? Мне видится что нет, а это не удобно.
При такой схеме нет необходимости изменять существующий код, даже при создании новой команды или обработчика. Всё привязывается при запуске приложения.
Код и так будет изменен как минимум в двух местах, в чем проблема сделать ровно одно дополнительное изменение, один раз.
Да, это выглядит запутанным, и на первый взгляд покажется, что поддержка такого кода будет настоящим кошмаром.
Так и будет. Код не решает реальных проблем, только создает. Он плохо читается. Может только добавить ошибок. Он медленнее чем действительно простое решение (хоть масштабы «медленности» и не важны).
Смысл в том, что написав этот код один раз, вы больше не должны будете его касаться. Достаточно написать юнит-тесты, и всё будет в порядке.
Или не писать все это и все останется в порядке.
Ну правда, я прочитал статью и так и не понял какую конкретно проблему решает описанный подход? Вместо варианта с одной функцией switch-case (будем считать что if-else уже поменяли на switch) на ~20 строк, простого как топор, супер быстрого не зависимо от количества «reason» вариантов, читаемого, с работающим поиском путей вызова, получилось не читаемое решение на сотню строк с циклами и потенциальными ошибками.
Именно так! Я в свое время таким образом купил 20кг. Почти месяц пришлось копаться что бы более-менее рассортировать все это. В то время мне, как и автору машины, тоже хотелось «что-нибудь с ИИ» которое помогло бы мне из всей горы деталей надергать все пластины, кубики и далее по списку.
Это смотря как покупать детали.
Если нужны конкретные детали для конкретного проекта — добро пожаловать на Bricklink. Покупайте поштучно по списку. Хоть новые, хоть Б/У. Если у вас нет никаких наборов LEGO и вы не гонитесь за красотой и одинаковыми цветами, то я думаю что это будет стоить около $1500, может $2000.
Если же у вас есть уже немало наборов LEGO (а иначе зачем вам машина для сортировки деталей?), то вы можете ее собрать из имеющихся у вас деталей докупив необходимые где-то на $100-200.
А еще часто можно встретить в продаже оригинальное LEGO (но Б/У) на вес, где-то $15-20 за кило. Но состав деталей, само собой, будет случайным.
Можете рассказать в двух словах каким образом у вас организована поставка деталей на склад? Раз это производство, то по идее детали должны изготавливаться по заказ-нарядам (или как там называется документ?) в которых, среди прочего, должен быть указан код основного документа (чертежа или CAD файла), номер, ID, «имя» или что-то еще уникальное для детали. И на склад изготовленная партия, в теории, должна приходить с какой-никакой сопроводительной документацией (опять же код детали, кто ее изготовил и т.п.). Или на склад их приносят со словами «нате вам железо», а дальше это ваши проблемы?
P.S. Ваше решение классное, все дела. Просто хочется понять почему реальная проблема на производстве нуждается именно в таком, весьма сложном, решении.
Я думаю что сигнализация голосом для важных «уведомлений» в военной авиации применяется из-за перегрузок. Сомневаюсь что при перегрузках в несколько G у пилота есть физическая возможность смотреть приборы и индикацию. Да в принципе видеть проблематично в таких условиях. Так что звук, возможно, это единственный рабочий канал информирования пилота.
Если я правильно помню, из-за формы и низкого расположения крыльев у ТУ-154, они создавали огромный экранный эффект вблизи земли и самолет буквально «не хотел» приземляться.
Upd: увидел выше объяснение. Злоумышленник в этом случае попытается записать данными доступный объем и наткнувшись на преграду в виде «защиты скрытого тома» — сделает выводы.
Что бы заработала «защита скрытого тома» надо при монтировании тома-обманки поставить соответствующий чекбокс и в появившемся втором поле ввести пароль от скрытого тома. Без этого VeraCrypt тоже не знает о существовании скрытого тома, иначе это было бы известно и злоумышленнику.
Разве нет Yocto слоя для Kali Linux? Неужели его никто еще на ARM не собирал? Странно…
Как по мне, с Yocto все попроще получается. Да и поддерживать потом удобнее.
При этом можно не только присоединить его «только для чтения», но и на уровне протокола защитить диапазоны адресов от конкурентного доступа (группа команд Reservation в протоколе).
Ну это смотря как писать)
NSID=0 зарезервировано потому что 0 — пустое значение для любого поля в NVMe CommandEntry. Если бы можно было создать нулевой неймспейс, то любая команда от хоста, специфичная для неймспейсов, и содержащая пустой NSID, предназначалась бы для этого злосчастного неймспейса. Ведь порядок назначения NSID для создаваемых неймспейсов определен в стандарте, по возрастанию от наименьшего незанятого значения. А так 0 — это или «команда не использует NSID», или «Invalid NS or Format» если использует.
А что касается --controlers=1 у автора, то я не помню что бы CNTID или CNTLID не могли быть равны 0. NVMe 1.3c раздел 7.11:
Enterprise SSD PE80 серии от Hynix умеют до 128 неймспейсов. Другое дело что заказчик определяет сколько их будет в прошивке.
Фирмварь NVMe диска не управляет разделами. NVMe Namespace — это и есть сам диск. И на уровне протокола он выглядит для хоста изолированным устройством, как и обычный HDD. То, что несколько дисков находятся физически на одном устройстве — следствие растущей производительности и емкости NVMe накопителей.
Тут я могу ошибаться, но шифрование внутри контроллера защищает данные только от прямого чтения из NAND (плюсом еще вроде как идет более равномерное распределение зарядов внутри чипов, но это уже совсем далеко от моей специализации). Это не отменяет необходимости шифровать ваши данные перед записью. Тем более потому что эта функция тоже может быть отключена по требованию заказчика дисков.
Не совсем понимаю о каких ошибках идет речь. Thin Provisioning вообще очень специфичная функция и ее очень мало кто требует.
Ну по сравнению с «байтами», NamespaceManagement прост как дважды два, лишь только слой логических адресов над пространством накопителя.
Вся эта красота — для упрощения. Упрощения создания облачных хранилищ, обеспечения безопасности доступа к данными. Один современный NVMe накопитель с несколькими неймспейсами и виртуальными контроллерами уже на уровне протокола позволяет безопасно и изолированно друг от друга хранить данные NN (Number of Namespaces) облачных серверов. Весь NamespaceManagement писался под сервера. И это уже становится востребованным.
К тому же это (был) довольно стабильный и постоянно растущий источник валюты для страны.
Были созданы, когда дальновидные люди смогли убедить создать ПВТ (парк высоких технологий) и предоставить условия, налоговые льготы резидентам до 2040 (кажется) года. Теперь этого всего нет, отменяется.
Только не «протестные настроения» мешают бизнесу и двигают миграцию, а их причина. И «настроения» — это реакция общества.
Миграция (в том числе бизнеса) из Беларуси является следствием наступления фактического тотального беззакония. В текущей ситуации у нас ни бизнес, ни персоналии (за исключением служащих некоторых организаций) не могут чувствовать себя в безопасности. Презумпция невиновности практически упразднена, судебная система работает только в одну сторону, юридическая защита бесполезна (это факт, а не мое личное видение).
Условия известны и озвучены. Они же, впрочем, очевидны. Но возвращения в ближайшие годы ожидать не стоит, увы.
Отрасль точно не исчезнет, но и развиваться она уже не будет. Условия развития уничтожены. По сути из преимуществ осталась только стоимость разработчиков, да и то большинство хочет уехать или как минимум сменить налоговое резидентство.
Мне, как ITшнику и гражданину Беларуси обидно не столько за IT, сколько за то что делают со страной вообще. Наверняка так же очень обидно тем, кто строил, продавливал в верхах развитие IT в Беларуси. Но все это выброшено на свалку решением человека, который дальше своих усов не видит.
Какую именно особенность разработки сайтов для микроконтроллеров вы хотели отразить в статье? Из того с чем я сам сталкивался, это:
— как сделать сайт когда у тебя нет свободной RAM;
— как сделать красивый сайт когда у тебя нет свободной Flash.
Так-то получается что оптимизация по RAM отсутствует. Angular раздувает размер самого HTML файла (и сколько ему самому Flash надо?).
128Кб RAM — это на всю ОС с сервером или только сервер? А python http.server сколько памяти кушает? А сам python3 сколько Flash занимает? А сколько будет потреблять основное приложение?
Просто хотелось бы понять на какой STM32F4 это все рассчитано. В предложенном варианте сайт не влезет уже в 5 из 12 линеек STM32F4 и еще в двух останется только 64KiB RAM для основного функционала. Остаются только дорогие варианты.
В каких случаях требуются подобные расчеты? Что с точностью? Картинок бы каких добросили, графиков. Код? И ссылки на литературу тоже хотелось бы.
Кхм, но это же, откровенно говоря, не правда.
Кто бы что не говорил, но любая информация, которая при любой глубине выборки может указать на конкретное устройство и/или персону, не может быть обезличенной. Тем более ID, привязанный к железу.
Даже если набор данных не содержит идентификаторов, но он позволяет с высокой долей вероятности составить предположение о конкретном устройстве, то это уже можно считать слежкой.
Тут еще, конечно, вопрос в том, а нужны ли реально обезличенные данные компаниям.
В предложенном решении IDE покажет иерархию вызовов конечных функций? Можно будет «побегать» по цепочке и посмотреть все условия которые выполняются для вызова функции? Мне видится что нет, а это не удобно.
Код и так будет изменен как минимум в двух местах, в чем проблема сделать ровно одно дополнительное изменение, один раз.
Так и будет. Код не решает реальных проблем, только создает. Он плохо читается. Может только добавить ошибок. Он медленнее чем действительно простое решение (хоть масштабы «медленности» и не важны).
Или не писать все это и все останется в порядке.
Ну правда, я прочитал статью и так и не понял какую конкретно проблему решает описанный подход? Вместо варианта с одной функцией switch-case (будем считать что if-else уже поменяли на switch) на ~20 строк, простого как топор, супер быстрого не зависимо от количества «reason» вариантов, читаемого, с работающим поиском путей вызова, получилось не читаемое решение на сотню строк с циклами и потенциальными ошибками.
Если нужны конкретные детали для конкретного проекта — добро пожаловать на Bricklink. Покупайте поштучно по списку. Хоть новые, хоть Б/У. Если у вас нет никаких наборов LEGO и вы не гонитесь за красотой и одинаковыми цветами, то я думаю что это будет стоить около $1500, может $2000.
Если же у вас есть уже немало наборов LEGO (а иначе зачем вам машина для сортировки деталей?), то вы можете ее собрать из имеющихся у вас деталей докупив необходимые где-то на $100-200.
А еще часто можно встретить в продаже оригинальное LEGO (но Б/У) на вес, где-то $15-20 за кило. Но состав деталей, само собой, будет случайным.
P.S. Ваше решение классное, все дела. Просто хочется понять почему реальная проблема на производстве нуждается именно в таком, весьма сложном, решении.
Что бы заработала «защита скрытого тома» надо при монтировании тома-обманки поставить соответствующий чекбокс и в появившемся втором поле ввести пароль от скрытого тома. Без этого VeraCrypt тоже не знает о существовании скрытого тома, иначе это было бы известно и злоумышленнику.
Как по мне, с Yocto все попроще получается. Да и поддерживать потом удобнее.