Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Можно ли пробросить pci внутри виртуальной машины?

Лучший ответ:
Можно, другое дело что не все гипервизоры поддерживают такой проброс, как правило это гипервизоры первого типа, такие как Linux + KVM, XEN, ESXi, есть информация что Hyper-V может, но хз какой редакции. В линуксовой версии VirtualBox внедрили фичу, но потом убрали.

Если требуется пробросить ВК в ВМ то помимо поддержки ЦП и матерью iommu, будет  требоваться поддержка доп.инструкций, например для интела vt-d + vt-x

Мои статьи на эту тему (для ноутбука и для ПК):
https://habr.com/ru/post/575654/
https://habr.com/ru/post/437598/

Худший ответ:
Да, возможно.
И тогда это pci-устройство станет недоступно на хосте (если без хаков)

Но есть некоторые лицензионные ограничения - например Nvidia не позволяет использовать свои потребительские видеокарты в таких сценариях. (Говорят, уже не актуально)

Знаю, что такая фича точно есть в vmware
Гугли "pci passthrough"
Вопрос: Как Swift — разработчику найти свою первую удалённую работу на компанию из США?

Лучший ответ:

Сегодня вообще не надо. Вышка если где-то иногда и нужна то либо для релокейта либо в компании в которые вас не пустят как не коренного американца
Достаточно чтобы пройти собеседование. В IT меряют знанием, а не выслугой лет и никто не будет это менять
Чем выше тем лучше. B1+, B2 это для того чтобы вас просто не отсеяли на старте. Удаленная работа это огромное число коммуникаций
Вам либо надо иметь ИП либо иметь счет в американском банке - им же надо зп вам куда-то перечислять
Шансов примерно 0


Худший ответ:
Глобально просто едешь сейчас в США и ищешь работу, все. Именно так сделали почти все кого я знаю из США
Вопрос: Как хорошо изучить базовую математику?

Лучший ответ:
Мы в школе (физ.-мат. ) учились по Сканави именно решать задачи.
Например, вот.
https://4ege.ru/up/file/skanavi.pdf
или
https://postypashki.ru/wp-content/uploads/2020/09/...

Решаешь и теория подтягивается. Впрок учиться нельзя - вылетит.

Худший ответ:
Школьные учебники начала 1950-х годов. Легко находятся на специализированных ресурсах. Там же и задачники брать.
Вопрос: Почему современные языки отказываются от ООП?

Лучший ответ:
Они не отказываются. Скорее происходит отказ от "парадигмы" разработки. Языки стали мульти-парадигменные. Посмотрите на С++20 или Scala. Их невозможно положить в коробочку ООП или ФП. В них есть почти полный набор фич и оттуда и отсюда. И с каждым годом число фич растет и граница размывается. Нашим потомкам будет вообще непонятно где идет раздел.

По поводу golang. Это язык ограниченной разработки. Его создавали специально чтобы порог вхождения был низкий. Фактически делали лайтовый С++ которому можно обучить школьника за 14 дней. Но с перформансом выше чем у Питона. Поэтому выражать какие-то сложные конструкции на типах там скорее всего не получится. У golang есть свой манифест. Я забыл как он называется и где он. Вобщем там довольно четко обоснованно почему такие принципы и почему такая идеология.

Худший ответ:
Современные языки наоборот развивают ооп.
Вопрос: Какую базу и способ хранения выбрать?

Лучший ответ:
База на 30гб? Какая смешная кроха.

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

Худший ответ:
Вопрос: вывезет ли PostreSQL такой объём, если я ничего не буду менять? (предполагаю, что ответ нет, отсюда следующие вопросы).
В теории выдержит. Лишь бы железа хватило (ну мало ли у тебя там 5 гигов диск)

Но вообще раз это биржа - возможно есть смысл хранить информацию о цене каждого инструмента в базе с временными рядами. А метаданные - в обычном реляционном виде.
В рамках постгреса - TimescaleDB
Вопрос: В чем разница между delete и nullptr?

Лучший ответ:
g = nullptr не удалаят память, оно просто записывает в переменную g значение со смыслом - "указатель вникуда". Память при этом остается нетронутой и к ней можно обращаться, что вы и делаете, запомнив указатель в другой переменной.

delete[] же освобождает память, а значит, все последующие обращения к ней, что при помощи g, что при помощи gg - будут вызывать UB

Худший ответ:
В С++ тебе нужно понять истину: никакого garbage collector не существует!
Вопрос: Какой простой способ обьеденения двух массивов на java?

Лучший ответ:
Я использую стримы vavr  : 
public static void main(String[] args) {
        var s1 = Stream.of(2, 1, 3); // Stream < Integer >

        var s2 = s1.zip(List.of(7, 8, 9));  // Stream <Tuple2< Integer, Integer >>

        var integers = s2.map(tuple2 -> tuple2._1 + tuple2._2).collect(Collectors.toList());

        integers.forEach(System.out::println);
    }

Если листы разного размера, оставшаяся часть в расчетах не участвует.

Худший ответ:
Math.max(первыймассив, второймассив)
Вопрос: PostgreSQL — какой тип данных лучше использовать для валюты?

Лучший ответ:
НИКОГДА. НЕ. ПИХАЙТЕ. ДЕНЬГИ. В ЧИСЛА. С. ПЛАВАЮЩЕЙ. ЗАПЯТОЙ.

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

Юзайте numeric, который был придуман именно, блин, для этой цели.

И запомните, что преждевременная оптимизация приносит зачастую больше проблем, чем пользы.

Худший ответ:
Вообще, если говорить о деньгах, то крайне маловероятно что у вас будут доли копеек (центов и т.п.). Поэтому, можно хранить денежные суммы в виде пары "целое число" (long) + "код валюты" (целое или строка, код валюты ISO). К этой структуре, тогда, нужно иметь справочник валют, в котором будет точность валюты т.е. множитель для перевода из рублей в копейки, из долларов в центы, из евро в евроценты (1 к 100). А, например, у юаня этот множитель будет 1, так как эти денежные единицы не делятся на доли. У биткоина этот множитель будет 10^8 (сатоши).

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

Лучший ответ:
В объекте ключи бессмысленно расставлять в каком-то порядке. Выводит вам браузер для удобства чтения. А Object.keys возвращает массив. Вот и сортируйте как вам надо.

Худший ответ:
В объекте ключи бессмысленно расставлять в каком-то порядке. Выводит вам браузер для удобства чтения. А Object.keys возвращает массив. Вот и сортируйте как вам надо.
Вопрос: Сколько поддерживает ОЗУ ноутбук?

Лучший ответ:
Обратите внимание, что в характеристиках есть два варианта максимума - 8Гб и 12Гб. Откуда такая "некруглая" цифра 12?
Сопоставляем с тем, что говорит Crucial. А он говорит о 4 Гб распаянных и ещё одном слоте.
Напрашивается вывод что в слот здесь можно вставить только 8 ГБ. И получаются два варианта платы:
1) Только со слотом - максимум 8Гб
2) С распаянными 4Гб и одним слотом - максимум 12Гб
Какая плата у Вас? Вот такой красивый вариант рассуждений - но не обязательно верный, только предположение!

А по существу вопроса, я бы искал планку на попробовать - у друзей, в сервисе, а может и прямо в магазине, где память брать собираетесь, договорился о тестировании. Даже если за это придётся отдать денежку, зато будете уверены, что прокачали ноут как надо.

Худший ответ:
12 Гб это сколько Lenovo ставил. А процессор может поддерживать и больше, смотрите какой у вас процессор и на сайте intel или WikiChip ищите ее спецификации.
Вопрос: Будет ли kali linux на флешке полностью функционировать?

Лучший ответ:
Функционирование такого инструмента в первую очередь зависит от квалификации пользователя.

Худший ответ:
Рекомендую поставить дебиан и руками, через боль и слезы сделать из нее свою кали. А поставить кали без опыта = убить винду и потом задавать кучу глупых вопросов "как сделать загрузочную флешку виндовс 10 на линукс без терминала"
Вопрос: У меня подгорела вилка на блоке питания для ноутбука, что делать?

Лучший ответ:
Это значит, что у вас завёлся злой домовой, который посылает сильные разряды тока, чтобы уничтожить вашу технику ну или вас, если засуните туда пальцы. /s

Это типичное поведение любых розеток, все вилки чернеют со временем из-за нагрузки в сети.

Виновата нагрузка

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

В названных случаях искра объясняется практически схемой входной цепи подключаемой нагрузки. На входе у них стоит выпрямитель и конденсатор фильтра, от которого постоянным напряжением (примерно 310-340 вольт в пике) питается высокочастотный импульсный преобразователь.

Так вот, пиковый ток в момент зарядки через выпрямитель от сети пустого входного конденсатора очень велик, он достигает десятков ампер, и встроенный ограничитель «пускового тока» (зачастую на одном лишь термисторе) просто не в состоянии полностью избавить цепь от токового броска в момент втыкания вилки. Если не хотите каждый раз испытывать дискомфорт при втыкании вилки — пользуйтесь переходником (удлинителем) с кнопкой-выключателем.
electrik.info/sockets/1293-pochemu-iskrit-vilka-v-...

Худший ответ:
Ничего страшного. Это дуга простреливает, в розетку когда включаешь. Ни на что не влияет.
Вопрос: Я перезапустила ноутбук от 8 до 10 раз в течение 5 часов. Это может, как-то отразиться на нем негативно?

Лучший ответ:
Нет. Если Вы делали это через кнопку пуск

Худший ответ:
Если жёсткий диск уже совсем дохлый - от постоянной нагрузки может и помереть. Но тут вопрос не в том, что он умер от того, что включали 10 раз за пять часов, а в том, что он изначально был совсем дохлый и в любом случае умер бы не сегодня, так завтра. Просто так он сделал это несколько быстрее))
Вопрос: Почему [2] + 2 это 22, а не 4?

Лучший ответ:
Массивы не имеют ни Symbol.toPrimitive, ни функционирующего valueOf, они реализуют только преобразование toString, таким образом, здесь [] становится пустой строкой, [1] становится "1", а [1,2] становится "1,2"

https://learn.javascript.ru/array

Худший ответ:
сначала у массива вызывается метод valueOf, но он возвращает не примитив, а сам массив, и приходится вызвать toString, который дает строку, потому складывается строка с числом.

вот, поэкспериментируй в консоли браузера
var v12 = {
    valueOf: () => {console.log('valueOf'); return [1];},
    toString: () => {console.log('toString'); return '2';}
}

console.log(v12 + 2);
если убрать квадратные скобки, то toString не понадобится
Вопрос: Как правильно сделать запрос в бд?

Лучший ответ:
Я даже не представляю, сколько раз на этот запрос здесь уже отвечали. Но разве ж тут что найдёшь...
WHERE date BETWEEN '2021-10-01 00:00:00' and '2021-10-30 23:59:59'

Худший ответ:
как сформировать запрос чтоб было равенство 2021-10-30 23:59:59 = 10.21
Если критерий предоставляется именно в такой форме - '10.21',- то
SELECT * 
FROM `table` 
JOIN ( SELECT '10.21' AS parameter) criteria
    ON  `date` >= CONCAT('20', SUBSTRING_INDEX(parameter, '.', -1), '-', SUBSTRING_INDEX(parameter, '.', 1), '-', '01' AS DATE)
    AND `date` < CONCAT('20', SUBSTRING_INDEX(parameter, '.', -1), '-', SUBSTRING_INDEX(parameter, '.', 1), '-', '01' AS DATE) + INTERVAL 1 MONTH
Условие - SARGable.
Вопрос: Как отключить репотизиторий от vs code?

Лучший ответ:
Найти и удалить в твоем проекте скрытую папку .git

Худший ответ:
Удалил проект и залил как новый , все стало ок :)
Вопрос: Почему ссылка работает в хром но не работает через href в html?

Лучший ответ:
Потому что символ & (как и некоторые другие символы) в HTML должен экранироваться как &amp;

upd: Проблема была в чём-то другом. См. комментарии.

Худший ответ:
Скорее всего криво вбит токен или айди, внимательно сравните урл в хреф и тот что руками вставлен.
Вопрос: Как создать OLE объект для интеграции perco S-20 с внешним ПО?

Лучший ответ:
Это функция в модуле System.Win.ComObj. Добавляете его в uses и вызываете. Результатом его является объект с интерфейсом IDispatch. Чтобы вызывать у него нетипизированные методы, значение ссылки на IDispatch можно привести к типу OleVariant. У переменной типа OleVariant, если написать точку, Delphi не покажет список подсказок, но вызов скомпилируется. Конечно, если в названии метода опечатка или типы значений не подходящие, то при исполнении будет ошибка.

Чтобы получать подсказки и вообще работать типизированно, нужно генерить модуль импорта COM. В таком модуле Delphi создаст псевдокласс, у которого вместо конструктора Create будет классовая функция Create, и синтаксически похоже: НазваниеCOMКласса.Create. Также можно создавать самостоятельно типизированные ссылки: CreateOleObject(…) as IИмяОсновногоИнтерфейса.

Худший ответ:
Ну для начала не городить грабли, если мы говорим о COM, то SDK скорее всего зарегистрировал в системе библиотеку типов(TLB) из который Delphi сам создаст полноценный модуль со всеми интерфейсами и сам же пропишет функцию типа CoCreateMySuperDuperSDK: ISuperDuperSDKInterface, которую только что и останется вызвать и больше не думать о том "как вызвать что-то ещё". 

И делается это так:
Меню Component -> Import Component... -> "Type library" -> ищем свою халабуду. И далее 3 раза Next ничего не трогая, потом Finish. И вуаля, delphi сделал за всю всю работу, полностью сгенерировав обертку над предоставляемыми интерфейсами.

А если нет, то такую tlb можно поискать внутри dll/exe идущих вместе с SDK или лежащий вообще где-то рядом, потому что COM/OLE распространяются вместе библиотекой типов которая описывает все интерфейсы. Или спросить у разработчиков SDK о ней.
Вопрос: Если обновить centos 7.7 то будет ли она такаяже как centos 7.9?

Лучший ответ:
Нет, не будет.

Худший ответ:
Подтверждаю. Нет, не будет.
Вопрос: Google chrome потребляет трафик?

Лучший ответ:
удалите хром полностью
очистите все папки в appdata итд
посмотрите будет ли сетевая активность на ПК, если нет - 
ставите хром по новой
если да - ищите вирусню в винде

Худший ответ:
Попробуйте вайпнуть ВСЕ данные хрома и посмотрите что будет. Не поможет, попробуйте ответ Drno. Больше подсказать не могу.
Вопрос: Как понять как все работает внутри?

Лучший ответ:
"Изучаем Python" Лутца для понимания языка. "Python к вершинам мастерства" Ромальо для углубления. "Inside The Python Virtual Machine" авторства Obi Ike-Nwosu для понимания работы интерпретатора. И не помешает почитать Таненбаума для понимания окружения, в котором работают программы.

Худший ответ:
"Структура и интерпретация компьютерных программ", легендарный фолиантище, на нем выросло не одно поколение профессионалов.
Вопрос: Как искать зашифрованные данные через like?

Лучший ответ:
Если верно понял требования, то вот мои мысли.

Использовать Transparent Data Encryption (TDE)

Выполнить шифрование данных на уровне таблиц:
https://www.postgresql.org/docs/current/encryption...
https://dev.mysql.com/blog-archive/controlling-tab...

То есть расшифровывание будет происходить на уровне СУБД, а с точки зрения приложения - обычные запросы LIKE.

Худший ответ:
Хм, если вы можете его обратно расшифровать, то зачем эти телодвижения? 
Алсо, мне кажется, в рамках вашего тз, реализовать такое малореально. Либо поиск, либо шифрование. 

Мысль: Так как защита такого рода будет работать только с учетом того что код и базу будут ломать отдельно, а при взломе кода вся защита сразу пойдет по п... бороде, и база по разумению заказчика более уязвима, можно попробовать создать "типа индекс" средствами ЯП, файл например, и искать там, вытаскивать айди и уже тогда ломиться с ними в бд. По сути смысл - если код сольют, все пароли шифрования и доступ к бд и так будут у злоумышленника, так что хуже не будет.
Вопрос: Как сделать так, чтобы одновременно могло работать не более одного экземпляра функции?

Лучший ответ:
Вы чо ребята?! Это же debounce с кешем результата.

Худший ответ:
Создайте класс и используйте паттерн Singleton.
Можно, конечно, реализовать и функцию, но способы достаточно костыльные. Правильное решение - класс с реализованным паттерном.
Реализация функции, только нужно запомнить состояние самого 1 вызова функции:
var something = (function() {
    var executed = false;
    return function() {
        if (!executed) {
            executed = true;
            // do something
        }
    };
})();
something(); // "do something" happens
something(); // nothing happens
Вопрос: Если у меня еще нет аккаунта на upwork и paypal могу ли я зарегестрировать через впн аккаунт как будто не из России?

Лучший ответ:
можешь, но забанят моментально и потом никогда не сможешь на upwork работать.

Худший ответ:
А разве документы перестали проверять при регистрации аккаунта? VPN решает только вопрос с доступом, но не подменит Ваши паспорт, банковские карты, прописку и т.п.
Вопрос: Какие есть эффективные способы защиты формы от ручного спама?

Лучший ответ:
от ручного ввода может помочь только обученный спам-фильтр на сервере. 
например, spamassassin, если сообщения валятся на мыло.

Худший ответ:
А ваша форма как отправляется?
Важно настроить строгую проверку, чтобы гарантировать что данные на сервер приходят именно с этой формы. 
Далее, можно в JS поставить проверку Event.isTrusted
Разного рода капчи. В этом смысле хорош reCaptcha -- она может заставить пользователя пройти проверку 3-4 раза, даже если он всё правильно вводит.

Полностью защитится от ручного спама на клиенте скорее всего никак. Но можно его значительно усложнить. Злые капчи, стоп слова и прочее. Достаточно добиться чтобы спамить вас стало не выгодно (по затратам времени/денег).
Вопрос: Как изменить css внутри iframe?

Лучший ответ:
Нельзя. Никак.

Худший ответ:
никак нельзя
Вопрос: Можно ли создать компилятор без AST?

Лучший ответ:
Качественный нельзя.

Худший ответ:
В однопроходном компиляторе этапы синтаксического и семантического анализа могут быть объединены. AST становится виртуальной, существующей в памяти разборщика в момент его работы в виде стека контекстов и другой служебной информации, в явном виде (как в ANTLR) не создается . Предположительно именно так были реализованы классические компиляторы Turbo Pascal и Delphi.

Результатом работы такого разборщика становится промежуточное представление, уже не являющееся AST — семантический граф, промежуточный (трехадресный) код со служебной информацией, либо же какой-то свой тип. В своем проекте, скажем, я буду генерить обратимый код, поддерживающий отекстовку в сильно вариативный синтаксис.

Короче, причиной выбора подобной архитектуры компилятора должен быть особый случай, обусловленный особенностями проекта и описанный в его концепциях. Если вопрос был в том, можно ли написать разбор входного языка вручную, без использования генераторов синтаксических деревьев, — ответ «да», так пишут. Это хороший опыт.
Вопрос: Что это значит в JAVA?

Лучший ответ:
VarArgs  - аргументы переменной длинны. По сути, это значит что можно сколь угодно передать стоковых аргументов.

Худший ответ:
обозначает возможность передать любое количество строк в качестве параметров функции.
Вопрос: Почему нет php5.6 (он установлен в системе) в /usr/bin?

Лучший ответ:
Поищите пых так:whereis php

Худший ответ:
find / -type f -name 'php5*'
то что у вас есть конфиги в /etc/php/5.6/ ещё не означает что сами бинарники не удалены
Вопрос: Возможно ли загрузить .jar файл в реальном времени с помощью JNI?

Лучший ответ:
Да.

Худший ответ:
Автор посмотри системные переменные. System.getProperties() там полно всякой информации по текущему процессу. В том числе текущий директорий, и много другой полезной информации. Это поможет ответить на вопрос где лежит твой бинарник. А именно полный физический путь к файлу.

Как скачать это - целая цепочка вопросов и ответов например КУДА качать и ОТКУДА. Ведь по вопросу непонятно где ты сам находишся в этом стеке технологий. Поэтому когда задаешь вопрос - дай хотя-бы обзор твоей технологии.  Графическое приложение AWT/Swing/SWT/JavaFx. Веб-приложение. Stand-alone процесс. Апплет ( :)).
Вопрос: Как профессионалы, создающие большие проекты, используют Vim / Emacs?

Лучший ответ:
Vim надо уметь правильно настраивать.  Не понимая, если насовать кучу плагинов, то можно получить тормоза. Особенно это будет сказываться при неправильно настроенных автодополнениях и линтерах. 

По нынешним временам самый модный путь это nvim с конфигом на lua + асинхронные плагины с lsp: 
https://habr.com/ru/post/586808/

Худший ответ:
1. Используйте neovim, он внутри асинхронный, что благоприятно сказывается на скорости работы плагинов
2. Может быть у вас тормозит терминал? На macos популярен iTerm2 и вот он вносит ооочень заметные тормоза при работе на большом экране. Попробуйте вместо него Alacritty
Вопрос: Чем плох md5(md5($pass)) для пароля?

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

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

Возможно, непонимание происходит оттого, что существует не один, а несколько векторов атаки на пароль.

Поиск хэша по "радужным таблицам" (rainbow tables): огромным базам данных, где собираются заранее посчитанные хэши для любых возможных строк.
Метод грубой силы (bruteforce): перебирать все комбинации символов и применять к ним хэширующую функцию до тех пор, пока она не вернёт искомый хэш.
Поиск по словарю. Похож на брутфорс, но перебор не всех возможных значений, а всего нескольких тысяч самых популярных паролей, типа "123", "password" и пр.
phpfaq.ru/tech/hashing
И только одного элемента недостаточно, а нужны все в комплексе:
- Хэширующая функция должна иметь большую вычислительную сложность, чтобы усложнить подбор перебором. по этой причине md5() не подходит
- Хэш должен быть посолен уникальной солью, чтобы нельзя было, затратив 1 раз кучу вычислительных усилий, заранее построить хэши для любых комбинаций символов. По этой причине фарш  без соли - деньги на ветер.
- Пароль не должен быть слишком простым, иначе даже медленный перебор его раскроет. Этот момент тоже надо учитывать

Худший ответ:
По каким критериям оцениваем?

1. По скорости - лучший.
2. По криптостойкости - худший.
3. По коллизиям - один из худших.
4. По соли - критерий неприменим.

1. Когда важна скорость, и не важны прочие критерии, например при подсчёте контрольных сумм - MD5, наверное, один из лучших. Хэшировать пароли тоже можно - например кратко живущие длинные токены с большой вариативностью - никто в здравом уме не будет подбирать хэш для 20 символов, срок жизни которых - 5-10 минут. Хотя я бы и для токенов использовал что-то другое - тот же sha, от греха подальше )

2. Криптостойкость у MD5 низкая. Вложенность (md5(md5(...))) её только уменьшает, увеличивая коллизии и не сильно влияя на скорость перебора - на современных картах она уже составляет сотни гигахэшей. Может уже перешагнули за черту терра - не сильно за трендами слежу.

3. Коллизии. Наличие коллизий, по сути, увеличивает скорость перебора. С другой стороны - не позволяет точно определить оригинальный пароль, т.к. при наличии нескольких подходящих под определённый хэш паролей невозможно определить какой именно использовал юзер. Однако ничего не мешает перебирать эти варианты на других сервисах.

4. Соль к хэшированию не имеет прямого отношения и применяется только для исключения возможности использования атакующим радужных таблиц. Однако перебор по словарю и перебор по словарю с вариантами (добавление символов до/после слов, склейка и т.д.) вполне возможен и соль на него не влияет никак. В случае MD5, опять же, это очень быстро.
Вопрос: Как получить данные со второго домена через fetch, если Header set Access-Control-Allow-Origin * уже стоит?

Лучший ответ:
В любом современном браузере откройте DevTool (кнопка F12), перейдите на вкладку Network, совершите необходимое обращение к другому домену, и смотрите, что именно браузер получил в этом запросе (щёлкнуть запрос, смотреть в окошечке слева во вкладке Response). Вот 100% там будет HTML вместо ожидаемого JSON.

Худший ответ:
Ваш сервер возвращает не JSON из-за чего ошибка. Попробуйте прочитать ответ второго сайта, как просто текст:
fetch('http://back.ru/site').then(res => {return res.text()}).then(data => {console.log(data)});