Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Entity Framework Code First — почему при создании отношения one to many, в таблице создаются 2 колонки?

Лучший ответ:
Код-то покажи? Думаю, что что-то неправильно написалpublic class Article
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public Guid Id { get; set; }

       ...

        public virtual ICollection<Comment> comm { get; set; }
    }

public class Comment
    {
        [Key]
        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public Guid Id { get; set; }
        public Guid ArtId { get; set; }
        
       ...

        [ForeignKey("ArtId")]
        public virtual Article art { get; set; }
    }

Худший ответ:
Да, у меня по другому написано, зачем делать свойства виртуальными? и в той и другой сущности?
Также, не добавил атрибут [ForeignKey("ArtId")] так как мне казалось что фреймворк сам разберётся какой ключ делать внешним
Вот мой вариантpublic class Article
    {
        ...

        public List<Comment> CommentList { get; set; }

        public Article()
        {
            CommentList = new List<Comment>();
        }
        ...
}
public class Comment
    {
        public int ID { get; set; }

        public int ParentID { get; set; }

        public string FullText { get; set; }

        public string Author { get; set; }

        public string Email { get; set; }

        public DateTime DatePublication { get; set; }

        public Article Article { get; set; }
        ...
Вопрос: Как скопировать все фотки из домашнего архива исключая формат RAW?

Лучший ответ:
robocopy путь новый_путь /E /XF *.raw
запускать из командной строки

Худший ответ:
скопировать все отдельно, вбить в поиск формат RAW , выделитть все равы и удалить
Вопрос: Как установить OS X на VB?

Лучший ответ:
Необходимые требования:
1) Процессор от Интел с поддержкой виртуализации.
2) 64-битная система на хосте (чтобы VB мог запустить 64-битную OSX)
3) Образ El Capitan (это последняя текущая версия)
4) Инструкции по установке системы в VB - в интернете по запросу "OSX VirtualBox" находятся на первой же странице выдачи, важна не столько установка системы (там ничего сложного), сколько настройка VB.

Худший ответ:
самую последнюю версию не обязательно ставить
ставь ту которая поддерживает нужную версию икскода
Вопрос: Дрожание 2D персонажа при столкновении с колайдерами, как исправить?

Лучший ответ:
А что вас конкретно не устраивает? Персонажа и должно отталкивать от коллайдеров.
Но попробуйте пару вариантов:
1) Двигайте персонажа не через transform.Translate, а через rigidbody.AddForce. Подозреваю что проблема в этом: персонаж у вас проходит в коллайдер и его отталкивает из коллайдера назад.
2) Создайте для коллайдеров (в т.ч. игрока) физический материал и поставьте bounciness на 0, но судя по всему проблема решится 1ым вариантом.

Худший ответ:
Нужно включить поле isKinematic на Rigidbody отталкиваемого объекта.
Вопрос: Как правильнее хранить даты?

Лучший ответ:
Грубо говоря, дата - это клеточка в календаре, а таймстемп - это мгновение, момент времени.
Нужно понять, чего требует конкретная задача - и выбрать.
Например.
1. Я заселился в гостиницу 22 мая и съехал 26-го. Тут речь о днях, а не конкретных мгновениях.
2. Пишем в логи хит на сайте - это момент.

Худший ответ:
Использование unix timestamp избавляет от всяких граблей с таймзонами, секундами координации
Вопрос: Почему не происходит удаление записи с помощью AJAX?

Лучший ответ:
Я хотел бы начать с того, что в процессе чтения этого кода у меня неоднократно текла кровь из глаз.
Я уже молчу про салат из PHP и HTML .
По порядку.
1. Читайте про области видимости в JSvar count=$(this).attr("id");
Эта переменная не будет доступна далее по коду, так  не попадет в общую область видимости. Объявите её вне коллбэка.
https://habrahabr.ru/post/78991/
2. Зачем вам дублирующийся код? Удаление и в основном файле и в ajax-обработчике.
https://kb.mista.ru/article.php?id=273
3. Код уязвим к инъекциямmysqli_query($link,"delete FROM imagess WHERE name='".$name."'");
Допустим, я вызову delete.php?name=' OR 1 OR name!='
Как думаете, что произойдет?
https://habrahabr.ru/post/148151/
Это далеко не все проблемы в вашем коде, но начните с исправления хотя бы этих.
И отказывайтесь уже от MySQLi. Это расширение давно уже морально устарело. Используйте PDO

Худший ответ:
Так у вас при клике выполняется только var count=$(this).attr("id");
а функция дел висит в воздухе и не выполняется вообще никогда.
Вы скобку передвиньте.$('.but').on('click', function() {
  // действия, которые будут выполнены при наступлении события...
  var count=$(this).attr("id");


    var name = count;
    
    $.ajax({
        type: "POST",
        url: "delete.php",
        data: {fname:name}
    success: function() {
                $("."+name).remove();
            },
  })

});
Вопрос: Пример MiddleWare в Laravel для обработки UTM-меток?

Лучший ответ:
Всё достаточно просто, можно через if сделать условие что при таком то параметре давать такую-то куку и всё.
https://nginx.ru/ru/docs/http/ngx_http_rewrite_mod...
https://nginx.ru/ru/docs/http/ngx_http_core_module...
nginx.org/ru/docs/http/ngx_http_userid_module.html

Худший ответ:
$_GET же
https://stackoverflow.com/a/15081132
Вопрос: Как подключится к RDP на Python 3?

Лучший ответ:
Может проще поставить на целевой стороне ssh сервер ??

Худший ответ:
Для RDP есть https://github.com/citronneur/rdpy
но лучше посмотрите в сторону https://github.com/diyan/pywinrm/
Вопрос: Какой алгоритм для рекомендательной системы выбрать SlapOne или SVD?

Лучший ответ:
Если "много теории" и "очень много информации" не помогли определится с выбором алгоритма, используй random - хуже не будет.

Худший ответ:
Датасет обычно делят на три части, на двух тренируют модели, на третьей - сравнивают обученные модели. Там и будет видно, что лучше.
Вопрос: Является ли небольшое вздутие аккумулятора на MacBook Pro нормой?

Лучший ответ:
Вздутие аккумулятора весьма небезопасно. Если немного повредить упаковку, есть неиллюзорный шанс возгорания. Так что аккумулятор нужно менять. Правда, есть минимум два важных "но":
1) Аккумулятор на MacBook Pro Retina является частью топкейса и официально меняется только вместе с ним. Так что менять у официалов не рекомендую, дорого. Можно заказать на Али и поменять самостоятельно, это просто. Можно ощутимо дороже заменить у неофициалов, но, возможно, это будет лучшим вариантом, потому что...
2) Без аккумулятора MacBook превратится в печатную машинку. То есть, работать он будет, но производительность снижается системой очень сильно. По ощущениями, максимум процессор выдает процентов 15, ибо даже открытый "мониторинг системы" способен загрузить одно ядро процентов на 75-80. Сделано так, потому что МакБук может потреблять на пиках нагрузки больше энергии, чем получает от адаптера и, соответственно, в обычных ситуациях батарея это компенсирует. А без батареи ноут даунгрейдится макОсью до уровня печатной машинки. Потому заменить у неофициалов за двойную-тройную цену с Али, но "здесь и сейчас" может быть предпочтительным вариантом.

Худший ответ:
После чистки от пыли температура какая на ЦП? На фото АИДА64 видно что темп 90 градусов.
Акум можно проверить в самой системе MacOS. 
https://support.apple.com/ru-ru/HT201585
Железо проверять можно на любой ОС. Если норм установлены и работают все драйвера.
Загрузите программу Aida64 из магазина Аппстор. И проверьте темп и прочее. По диску - опять же в системе есть необходимая инфа.
По диску.
https://support.apple.com/ru-ru/guide/disk-utility...
Еще можно посмотреть программой CrystalDiskInfo
И закройте крышку. Иначе охлаждение может работать неправильно. Да и пыли насобирает.
Вопрос: Алгоритм переворота строки как реализовать?

Лучший ответ:
На основе Вашего примера: https://jsfiddle.net/v85dtg49/2/const str = 'abcde'

function reverseString(str) {
  let tempString = ''
  for(let j = str.length - 1; j >= 0; j--){
   	tempString += str[j]
  }
  return tempString
}

console.log('str:', str)
console.log('reverse:', reverseString(str))
Вариант покороче: https://jsfiddle.net/v85dtg49/1/const str = 'abcde'

function reverseString(str) {
 return str.split('').reverse().join('')
}

console.log('str:', str)
console.log('reverse:', reverseString(str))

Худший ответ:
В вашем решении надо оставить только один цикл. Лучше его заменить на while. i++ и j-- выплняются каждую итерацию.var j, i
 while (i < j;) {
      temp = str[i];
      str[i] = str[j];
      str[j] = temp;
      i++; 
      j--;
    }
  }
Вопрос: Как психологу устроиться на работу в сфере искусственного интеллекта?

Лучший ответ:
В сельскую школу. Там бывает такое: трудовик или физрук преподает экономику или информатику. Попросите чтобы вас сделали учителем по информатике для начальных классов.

Худший ответ:
Податься на ф-т Кибернетики\Нейронных сетей в технический ВУЗ
Вопрос: Что за ошибка при реализации аутентификации через логин и email на Symfony3?

Лучший ответ:
У вас аннотация перезаписывается в сущности (2 раза аннотация Entity. Первый с репой, второй раз пустая)

Худший ответ:
Похоже на то, что в качестве репозитория для вашей сущности Users выступает не zenaku\AppBundle\Entity\Repository\UsersRepository, а Doctrine\ORM\EntityRepository.
Вопрос: Ошибка 0xc000000f при установке windows 10, как исправить?

Лучший ответ:
Видимо сборка кривая.
Сборки нужно брать не от дяди Васи, а на сайте майкрософта.
Идете на https://www.microsoft.com/ru-ru/software-download/...
Скачиваете утилиту MediaCreationTool в утилите указываете какая именно вам нужна версия Windows, после чего утилита скачивает нужную версию и записывает ее на флешку или диск.

Худший ответ:
Нужно проверить настройки BIOS или UEFI: используемый "тип контроллера" (AHCI), быструю загрузку (FastBoot), безопасную загрузку (SecureBoot) и... что-то ещё я забыл :(.
Чуть не забыл ссылку на ОСзону
Вопрос: Стоит ли реализовывать смену цветовых тем в настройках либо оставить светлую + темную?

Лучший ответ:
Одна, нормально продуманная.

Худший ответ:
Вроде ничего сложного в реализации цветовых схем нет. 3 переменных. Но это будет только для светлой или темной в большинчтве случаев. 
С темной на светлую и наоборот, как правило больше работы.
Вопрос: Нет ли в планах какой-либо возможности пометить ответ как неверный?

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

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

Лучший ответ:
С массивами это обычно делается или с помощью map или filter.
А в функциях делайте любые проверки. 
https://learn.javascript.ru/array-iteration

Худший ответ:
в обьекте {} можно удалить свойство, и общее количество элементов сократится автоматически
в массиве [] остаются дырки - получается разреженный массив
чтобы сохранить порядок следования элементов в обьекте {} можно добавлять к именам свойств приставку №_ (1_свойство, 2_свойство) - тогда можно будет их сортировать по порядку
Вопрос: Почему нельзя сделать драйвер электромотора на двух транзисторах?

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

Худший ответ:
Чтобы управлять вращением в обе стороны, нужно иметь возможность подключать к моторчику то + -, то - +
Транзистор может коммутировать ток, идущий только в одной полярности - поэтому нужно по два транзистора на один полюс моторчика, итого 4.п
Если есть источник питания со средней точкой, можно обойтись двумя транзисторами, так как один ввод моторчика можно прицепить к этой самой средней точке, а второй - подключать через транзисторы (2шт) то к +, то к - относительно средней точки.
Так не делают потому, что при батарейном питании понадобится в два раза больше батарей, а при стационарном - источник питания в 2 раза большей мощности, половина из которой будет работать вхолостую.
Вопрос: Что тормозит сайт?

Лучший ответ:
Еще один отчет.
Adobe Muse гавнокодит по черному. Оптимизации поддается, но менее трудозатратно просто переписать все это безобразие, который он генерирует. Ну, во-первых, море скриптов в хедере. Пока они не прогрузятся, мы лицезреем белый экран. Во-вторых, картинок не просто много, а нереально много. В-третьих картиночки надо бы сжимать. В четвертых, нужно устранить все 404 ошибки. В пятых, удалить Adobe Muse и забыть про него.

Худший ответ:
Отчет
Вопрос: Как бороться с элементами которые «залазят» друг на друга?

Лучший ответ:
С помощь относительного и абсолютного позиционирования. 
Седону можно сделать через before и ему задать абсолютное позиционирование слева на 50% и отрицательный маргин на половину его ширины. И конечно привязать к верху (top:0)

Худший ответ:
С помощь относительного и абсолютного позиционирования. 
Седону можно сделать через before и ему задать абсолютное позиционирование слева на 50% и отрицательный маргин на половину его ширины. И конечно привязать к верху (top:0)
Вопрос: Гик паранойя: чем опасно фото с паспортом в руках?

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

Худший ответ:
А когда вахтер требует у вас "документ удостоверяющий личность" и переписывает его себе в журнал или когда в современном бизнесцентре ваш паспорт сканируют чтобы выдать вам пропуск - вам не страшно?
Вопрос: Как правильно избежать дублирование view кода?

Лучший ответ:
Например, Thymeleaf умеет в подключение разных файлов в один как фрагментов.

Худший ответ:
Способов много. Если используете JSP, то можно, например, tag files
Тогда ваш код может выглядеть как-то так:<my:page title="Title">
   Content
</my:page>
Но обычно в JSP используют что-то вроде Tiles, поскольку JSP толком никто не знает.
Да и JSP нынче использовать немодно.
Вопрос: Ломается сайт когда вставляю html код?

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

Худший ответ:
Обнули отступы для h1 и еще было бы неплохо показать в какое именно место добавляешь + css свойства для этого участка.
Вопрос: Как решить проблему со временем в Ubuntu + Windows?

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

Худший ответ:
вот ответ на ваш вопрос
Вопрос: Есть адрес сети 192.168.01.0, нужно разбить на 20 подсетей с максимально возможным количеством узлов. Как выбрать маску?

Лучший ответ:
Для адреса сети 192.168.1.0 обычно используется маска 24 (т.е. 255.255.255.0), хотя было бы не плохо, чтоб в условии задачи была явно задана маска. 
Что бы поделить эту подсеть на 20 подсетей нужно увеличить маску на несколько бит. Число 20 может быть представлено минимум 5 битами. Поэтому увеличиваем маску на 5 бит. Получаем маску 29 (24+5) (т.е. 255.255.255.248). Количество хостов в каждой из 32, поучившихся подсетей максимум 8 (но т.к. 0 и последний адрес являются широковещательными, то на самом деле их 6).
Примеры получившихся подсетей:
192.168.1.0/29 - адреса хостов: 192.168.1.0 - 192.168.1.7
192.168.1.128/29 - адреса хостов: 192.168.1.128 - 192.168.1.135
192.168.1.168/29 - адреса хостов: 192.168.1.168 - 192.168.1.175
192.168.1.248/29 - адреса хостов: 192.168.1.248 - 192.168.1.255
Подсетей получилось 32, а не 20, т.е. 12 подсетей будет не использовано. На практике обычно бывает, что есть дополнительные условия. Например некоторые из 20 подсетей имеют больше 6 хостов, но в большинстве подсетей 2-3 хоста. В этом случае можно оптимизировать деление на подсети - использовать не равномерное разделение (одна маска), а разную длину маски для разных подсетей в зависимости от дополнительных условий.

Худший ответ:
Вот примеры, не понимаю логики
Чтобы понять нужно знать, какова маска исходной заданной сети. Для сети 192.168.8.0 маска -- 24 бита, для сети 172.27.0.0.маска -- 16 битов. Количество дополнительных битов должно быть таким, чтобы представить столько сетей сколько задано. Для 20 ближайшая степень двойки -- 32, т.е. потребуется 5 дополнительных битов.
Вопрос: Как «настроить» внешнее продвижение?

Лучший ответ:
А что для вас ВЧ запросы? "Частный вебмастер"? 
Внутряк у вас норм. Если начнете переделывать главную - можете потерять достигнутый результат, но тут 50 на 50, смотря, как переделывать будете (serpstat вам не подскажет в этом, ориентируйтесь на свой ТОП).
Для внешнего продвижения попробуйте форумы, сайты типа "вопрос-ответ", поищите блогеров по теме и др. Для привлечения клиентов - фриланс биржи, форумы, а лучше - сарафан)

Худший ответ:
Как seo-продвинуть сайт без денег?
сайт красивый, но бесполезный, 
посмотрите как у лидеров рынка сделано, хотя на данном этапе вы просто не поймете
Вопрос: Почему перенос строки после return игнорирует следующую строку?

Лучший ответ:
Потому что выражение 123 находится не на той же строке поэтому интерпретатор автоматически подставляет в конце выражения return точку с запятой и функция прерывается.

Худший ответ:
Потому что выражение 123 находится не на той же строке поэтому интерпретатор автоматически подставляет в конце выражения return точку с запятой и функция прерывается.
Вопрос: Зачем мне лучше использовать Vue.js в проектах, чем не использовать?

Лучший ответ:
1. это разные вещи
2. если не завязан на компоненты, использующие jquery (хотя тот же bootstrap есть отвязанный)
3. ничего, так как в лендингах обычно немного логики, разница ощущается при росте количества связей
4. смотря что за страницы, см. выше
5. single page applications, rich internet appalications
6. когда появляется input/блок содержимое которого связано с какими-то данными, меняющимися в другом inputе/блоке
7. тысячи их. например таблица с фильтром целиком на клиенте.

Худший ответ:
1) И Vue и jquery это все прокачанный JavaScript, просто Vue более прокачанный и соответствует текущему времени и современному подходу в разработке
2) Скорее всего да, более того используя Vue тянуть туда jQuery является моветоном и плохой практикой. Есть исключения о которых ниже.
3) Это и есть исключение. Единственное где бы я использовал до сих пор jQuery, был бы самый простой лендинг. Хотя кого я обманываю в 2018 году я бы и обычный лендос лучше бы  уже писал на чистом/ванильном JS.
4) Компоненты, привязку данных к view(не путать с  Vue), удобный роутинг, возможность использовать единое хранилище и тд.
5) Во всех проектах размер которых больше лендинга.
6) Во всех проектах размер которых больше лендинга.
7) Во всех проектах размер которых больше лендинга. Пет-проект - SPA, рабочий проект - большое SPA.
Вопрос: Как правильно обработать не существующую страницу?

Лучший ответ:
Нужно просто сделать код ответа несуществующих страниц 404, а не 200. Проверить код ответа можно тут www.bertal.ru

Худший ответ:
По простому говоря: По какому-то урлу у Вас из базы данных тащится информация, которая должна быть на этой странице.
Если при запросе какого-то урла никаких результатов возвращено не было, тогда отдаем 404 заголовки и шаблон, мол, извините, сеньон, страницы такой нЭма.
Вопрос: Как произвести валидацию модели до сохранения при использовании паттерна Repository?

Лучший ответ:
при использовании паттерна репозиторий вам стоит перестать думать о модели которая путешествует через систему, как о месте где должна случаться валидация входных данных. Такой подход получил распространение благодаря RAD-framework'ам (Yii и ему подобные) - упрощенка цель которой - быстрая скорость разработки.
Если смотреть на архитектуру с точки зрения "чистоты", то:
Модель которая путешествует через всю систему должна содержать в себе только доменную логику, или не содержать ее вовсе (т.е. по факту являться Value-object'ом).
Валидация входных данных описывается отдельной моделью - моделью реквеста - и содержит в себе логику валидации/маппинга/и пр.
т.е. более менее стандартный подход со стороны расширяемости, надежности, тестируемости и гибкости приложения к последующим изменениям - это иметь валидацию/парсинг входных данных отдельно для каждого случая (например отдельно для вебформ и отдельно для JSON/XML/etc API, конечно фрагменты могут быть переиспользованы, наследованы или примешаны и т.д.), модели - отдельно, работу со стораджом отдельно.
Последнее вы уже сделали = репозиторий как раз оно.
Так что ваше предположение - верно.

Худший ответ:
В случае репозитория у вас есть энтити, содержащее данные, которые будет обрабатывать репозиторий. Обычно валидация выполняется в сеттерах энтити, или конструкторе. Можно ее выполнять и в репозитории, в этом случае можно обрабатывать энтити по интерфейсу.
Вопрос: Mikrotik Как разделить сеть на два сегмента без изменения IP адресов и без VLAN?

Лучший ответ:
Если я верно понял текущую картину, то решение довольно простое: трафик между двумя сегментами сети, даже в одной логической подсети, должен проходить через устройство L3, и путь этот должен быть исключительно единственным.
Есть коммутатор, в который подключены все клиенты - Switch1.
Есть коммутатор, в который подключены все сервера - Switch2.
Есть абстрактный микротик с двумя портами: Lan1, Lan2.
Объединеяем порты Lan1 + Lan2 в Bridge1.
На Bridge1 вешаем адрес 192.168.195.1.
Switch1 => Lan1. Switch2 => Lan2. 
И все. Весь трафик между клиентами и серверами проходит через  Bridge1. Любые правила для фильтрации и ограничений.

Худший ответ:
загнать адреса пользователей в адрес лист, загнать адреса серверов в адрес лист. создать запрещающее правило в форварде, где источник пользователи, назначение - адреса серверов. а выше делать разрешающие правила конкретному пользователю(ям) до конкретного сервера и порта.
Вопрос: Как в Google Apps Script отличить запуск ф-ии по триггеру своего и чужого аккаунта?

Лучший ответ:
Id сработавшего триггера можно получить через e.triggerUid.

Худший ответ:
Возможно, вы уже читали статью "Эффективный пользователь против Активного", на основании которой ваш вопрос можно считать риторическим. Если у вас, конечно, gmail аккаунт, а не G Suite.

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

Но тут существует подводный камень. Это не всегда работает. В какой-то момент Google раскрыл для владельцев (не G Suite) адреса Effective Users. Это было неприятно. Представьте, я даю вам доступ по ссылке, вы открываете Таблицу, а мой триггер onOpen уже знает, кто вы есть (ну, как минимум ваш адрес электронной почты). Что было делать - отрубить и не давать.

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

Я одно время использовал монитор почты, но пользователю необходимо подписаться на изменения в Таблице. Может быть в новом API есть возможность подписать пользователя автоматически?
Вопрос: Arduino как реализовать прием данных, чтобы они не смешивались по RS485?

Лучший ответ:
С 08 февраля ничего не изменилось - по прежнему рулит Modbus
"одновременно" у вас не получится, только поочередно.

Худший ответ:
Одновременно можно через другие сети, напр., CAN.