Дело не в износе и ущербе, а в нелегальном использовании. Как думаете, сильно Suno обрадуется, узнав, что кто-то нашёл способ бесплатно пользоваться её премиумной подпиской?
Насчёт использования музыки в образовательных роликах - согласен, 10 секунд маловато. Но в новости-то речь не об этом.
И борьба идёт не с ИИ, тут борьба с нелегальным использованием контента. Если бы Suno не требовали копеечку за свои услуги - ни у кого не было бы никаких претензий. Да даже если бы они обучали модельку только на музыке без АП, но брали деньги - ни у кого бы не было претензий. Вот только они одновременно хотят заработать на чужом труде (да, не полностью на чужом, но всё же) и не платить за него
Насчёт состояния современной музыки пусть каждый сам для себя решит, но вот в данном случае я полностью на стороне лейблов и исполнителей. Я бы тоже не хотел, чтобы мой дом кто-то другой сдавал в аренду без моего согласия и без роялти в мою пользу (да хоть часть дома, да хоть неиспользуемую). Suno тоже не альтруисты: или подписочка платная, или права на музыку остаются за ними
В интернете куча доступной и необременённой авторскими правами музыки. Никто не запрещает им обучать модель на ней
Во-первых, спасибо, Николай, за счастливое детство и цикл статей по NVRAM
Во-вторых, расскажу про Интелловскую VT-d, вдруг пригодится кому. Там за защиту от DMA отвечает контроллер DMA Remapping unit (возможно, несколько), который перехватывает DMA-запросы и сверяет с управляющими структурами. Структуры следующие: Root-Entry table, Context-Entry table для описания каждой PCI-шины и каждого PCI-устройства (в том числе и функции). Для каждого устройства формируется многоуровневая таблица страниц, по которой DMAR unit проходится, исходя из адреса, который был в запросе. В итоге он получает права доступа, которые предоставлены устройству (чтение\запись\выполнение) и область памяти, на которую необходимо перенаправить запрос. Если возникает какая-то ошибка, вызывается callback, который может считать инфу об ошибке из специальных регистров.
Таким образом получается и изолировать устройства друг от друга, и защитить память, и логирование устроить . Можно также перенаправлять запросы на исходный адрес, просто настроить права доступа и получить просто защиту.
Лучше не знать, как там всё под капотом работает, если честно. Чего только стоит то, что структуры, которые я в статье описал, общие для всех модулей. Любой модуль может спокойно подменить указатели на функции на собственные
Я не говорю, что подобными вещами стоит заниматься постоянно. Но иногда приходится. Например, некоторые библиотеки из EDK II ждут, что в вашем модуле будет объявлена глобальная переменная gST (поправьте, если неправ).
Я понял вас, но мне кажется, что тут уже пошла вкусовщина и дело привычки. Я не очень люблю большую вложенность и мне как-то проще воспринимать вариант с continue. Но согласен с вами, злоупотребление может доставить кучу проблем другому человеку. Хотя в конечном счёте опираться в выборе стоит на устоявшиеся в компании нормы. Опять же, если они адекватные
Отступы я поправил, но я не понимаю, чем вам не понравился вариант с `for`. Есть список указателей на структуры, есть порядок строгий порядок условий, которые нужно проверить, и действий, которые нужно выполнить. Не подходит по сигнатуре? Переходим к следующей. Флаг говорит о занятости? Переходим к следующей. И так далее
Немножко не про точки возврата функции, но из той же оперы. Помню, в вузе нам преподаватель говорил, что каждый цикл должен иметь только одну точку входа и одну точку выхода. Такой подход приводил к чему-то подобному:
Может кому-нибудь пригодится: я для себя нашёл Reactive Resume. Бесплатный, простой и приятный
Да, вы во всём правы. Для С++ это всё действительно характерно. Надо свыкаться с тем, что С++ и С уже очень сильно разошлись
Дополню сразу
И далее можно выполнить одну проверку всех условий разом
Самое главное - проверять размер union'ов
Дело не в износе и ущербе, а в нелегальном использовании. Как думаете, сильно Suno обрадуется, узнав, что кто-то нашёл способ бесплатно пользоваться её премиумной подпиской?
Насчёт использования музыки в образовательных роликах - согласен, 10 секунд маловато. Но в новости-то речь не об этом.
И борьба идёт не с ИИ, тут борьба с нелегальным использованием контента. Если бы Suno не требовали копеечку за свои услуги - ни у кого не было бы никаких претензий. Да даже если бы они обучали модельку только на музыке без АП, но брали деньги - ни у кого бы не было претензий. Вот только они одновременно хотят заработать на чужом труде (да, не полностью на чужом, но всё же) и не платить за него
Насчёт состояния современной музыки пусть каждый сам для себя решит, но вот в данном случае я полностью на стороне лейблов и исполнителей. Я бы тоже не хотел, чтобы мой дом кто-то другой сдавал в аренду без моего согласия и без роялти в мою пользу (да хоть часть дома, да хоть неиспользуемую). Suno тоже не альтруисты: или подписочка платная, или права на музыку остаются за ними
В интернете куча доступной и необременённой авторскими правами музыки. Никто не запрещает им обучать модель на ней
Во-первых, спасибо, Николай, за счастливое детство и цикл статей по NVRAM
Во-вторых, расскажу про Интелловскую VT-d, вдруг пригодится кому. Там за защиту от DMA отвечает контроллер DMA Remapping unit (возможно, несколько), который перехватывает DMA-запросы и сверяет с управляющими структурами. Структуры следующие: Root-Entry table, Context-Entry table для описания каждой PCI-шины и каждого PCI-устройства (в том числе и функции). Для каждого устройства формируется многоуровневая таблица страниц, по которой DMAR unit проходится, исходя из адреса, который был в запросе. В итоге он получает права доступа, которые предоставлены устройству (чтение\запись\выполнение) и область памяти, на которую необходимо перенаправить запрос. Если возникает какая-то ошибка, вызывается callback, который может считать инфу об ошибке из специальных регистров.
Таким образом получается и изолировать устройства друг от друга, и защитить память, и логирование устроить . Можно также перенаправлять запросы на исходный адрес, просто настроить права доступа и получить просто защиту.
Лучше не знать, как там всё под капотом работает, если честно. Чего только стоит то, что структуры, которые я в статье описал, общие для всех модулей. Любой модуль может спокойно подменить указатели на функции на собственные
Я не говорю, что подобными вещами стоит заниматься постоянно. Но иногда приходится. Например, некоторые библиотеки из EDK II ждут, что в вашем модуле будет объявлена глобальная переменная gST (поправьте, если неправ).
Я понял вас, но мне кажется, что тут уже пошла вкусовщина и дело привычки. Я не очень люблю большую вложенность и мне как-то проще воспринимать вариант с continue. Но согласен с вами, злоупотребление может доставить кучу проблем другому человеку. Хотя в конечном счёте опираться в выборе стоит на устоявшиеся в компании нормы. Опять же, если они адекватные
Отступы я поправил, но я не понимаю, чем вам не понравился вариант с `for`. Есть список указателей на структуры, есть порядок строгий порядок условий, которые нужно проверить, и действий, которые нужно выполнить. Не подходит по сигнатуре? Переходим к следующей. Флаг говорит о занятости? Переходим к следующей. И так далее
Немножко не про точки возврата функции, но из той же оперы. Помню, в вузе нам преподаватель говорил, что каждый цикл должен иметь только одну точку входа и одну точку выхода. Такой подход приводил к чему-то подобному:
Если отбросить подобные мне непонятные правила, то фрагмент превращается в более читаемый:
Кстати, такой же пример я приводил под роликом, где человек призывал отказаться от циклов `for` из-за того, что это просто обёртка над `while`