Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Какое оборудование у провайдеров в подъездах и как организован интернет в городе?

Лучший ответ:
в ядре стоит что-то типа циски 6500 серии с BGP . В богатых компаниях джуниперы.
PPPoE раздают PPPoE концентраторы, IPoE -BRAS серверы. Этим всем управляет биллинг по всяким протоколам типа snmp и т.д.
На кольце стоят коммутаторы в основном с оптическими портами. 
В домах - всякие des-3200 
Ппоешники изолированы с помощью ACL на коммутаторах, допуская на портах только кадры PPoE, а другие в отдельных VLAN.
Подпись. Инженер СЭС одного маленького провайдера.
Советую просмотреть/прочитать курс СДСМ от linkmeup - там объясняется всё на пальцах. Есть на ютубе

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

Лучший ответ:
Чтобы уверенно читать исходники, нужно, во-первых, несколько лет их писать. 
Тогда вы сможете понимать логику пишущих и узнавать популярные решения. 
Вместо исследования письма Чужих к Хищнику.

Худший ответ:

ctags https://github.com/universal-ctags/ctags
cscope cscope.sourceforge.net
Understand https://scitools.com/features/

Последнее платное и довольно дорогое но есть на торрент трекерах
Вопрос: Как убрать ошибку «Uncaught ReferenceError ym is not defined» при работе с GTM?

Лучший ответ:
Сам нашел решение. Нужно доработать: <script>
  document.addEventListener('yacounterXXXXXXXXinited',function(event){
  	yaCounterXXXXXXXX.reachGoal('bookForm');
  });
</script>

Худший ответ:
Помогло обновление кода самой Яндекс Метрики.
Вопрос: Почему не работает mixin в scss?

Лучший ответ:
Вы документацию читаете вообще? :))@mixin button() {
    display: inline-block;
    font-size: 14px;
    font-weight: 600;
    background: #54cff0;
    color: #fff;
    border-radius: 50px;
    padding: 15px 30px;
    margin-top: 20px;
    text-transform: uppercase;
}

Худший ответ:
По тому, что пора переходить на Stylus =)
Вопрос: Неправильный сбор ноутбука или руки крюки?

Лучший ответ:
Отдайте в сервис. Как надоели уже умельцы, которые чуть ли не ножницами лезут разбирать ноутбук. Ну хоть бы набор отвёрток купили подходящих. Если не подходит, даже чуть-чуть - не надо пытаться откручивать. Иначе придётся потом мучиться с откручиванием. Ну и откручивать надо равномерно, нельзя открутить все винты на системе охлаждения, а один даже не стронуть -перекос радиатора легко сколет кристалл чипа (процессора, видео и чего угодно).

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

Да, и проверить, вдруг он с обратной резьбой? :/ Dell может подлянку сделать такую...
Вопрос: Какую ответственность несет системный администратор за установку пиратского софта?

Лучший ответ:
Вся вина ложиться на генерального директора, как владельца юр.лица. Админ идет вероятнее всего как соучастник.

Худший ответ:
Использование пиратского ПО ложится на фирму или директора(если ИП), НО если в трудовом договоре прописано, что за установку ПО отвечает сис.админ, то соответственно директор может перекинуть вину на админа в случае проблем, поэтому, чтобы обезопасить себя админ должен получить какую-нибудь бумажку(например приказ) подписанную директором, которая подтверждает, что именно директор указал устанавливать данное ПО.
Далее все зависит от суммы ущерба (т.е. сколько должно стоить ПО(лицензия) которое было установлено без лицензии), маленькие суммы, там и маленькие штрафы, большие суммы вроде до 200т, а если будет доказан сговор ответственных лиц (и директора и админа), то до 500т или лишение свободы.
При этом если все-таки дело дойдет до сговора, админу нужен будет адвокат, который докажет что админ действовал по указанию директора и не обязан был уведомлять кого-либо о нарушении закона.
PS: еще ни разу не слышал чтобы кого-то поймали на использовании нелицензионного ПО в России, хотя мало кто закупает лицензии на винду и офис в небольших компаниях, т.к. для некоторых фирм расходы на лицензии будут превышать доходы компании)
Вопрос: Как добавить в видео внешнюю аудиодорожку?

Лучший ответ:
Ffmpeg умеет, качайте, такая типовая операция гуглится за минуту.

Худший ответ:
Для удаления/добавления дорожек/субтитров и прочего, мне по душе MKVToolNix. В первую очередь, потому что  GUI, во вторую - потмоу что просто склеивает, без перекодирования.
Вопрос: Почему в 1С не работает печать штрикодов?

Лучший ответ:
Почему в 1С не работает печать штрикодов?Потому что 1с не может подключить внешнюю компоненту печати штрихкодов.
О чем кстати недвусмысленно сообщает.

Худший ответ:
Если используете х64 клиент, то попробуйте запустить 32битный и проверить снова печать.
Сталкивался с подобным в конфигурации БП: некоторые печатные формы, содержащие штрих- и QR-коды требовали именно х86 клиент (о чём явно было сказано в сопутствующем сообщении журнала регистрации).
Вопрос: Перебор массива?

Лучший ответ:
Если набор городов фиксированный, то можно так:function extractCity($str) {
    $cities = ["киев"=>["kyiv", "київ"], "одесса", "днепр"];
    foreach ($cities as $city=>$aliases) {
        $city = is_numeric($city) ? $aliases : $city;
        if (mb_strpos(mb_strtolower($str), $city) !== false) {
            return $city;
        }
        if (is_array($aliases)) {
            foreach ($aliases as $alias) {
                if (mb_strpos(mb_strtolower($str), $alias) !== false) {
                    return $city;
                }
            }
        }
    }
    return "не определен";
}

var_dump(extractCity("Продам что-то Киев")); // string(8) "киев"
var_dump(extractCity("Обменяю что-то, в Киеве")); // string(8) "киев"
var_dump(extractCity("Куплю що то :: Київ можна")); // string(8) "киев"
var_dump(extractCity("Продам что-то Москве")); // string(23) "не определен"
Если набор городов не фиксированный, то тогда необходмио подключать более умный пасрсер текста типа Наташи

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

Лучший ответ:
используй словари

Худший ответ:
 что бы переменная была у каждого диалога своя
Храните данные вместе с chat_id. При дальнейших запросах будете проверять айди чата (диалога) и взаимодействовать с нужной переменной.
Вопрос: Стоит ли мне продолжать учиться разработке?

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

Худший ответ:
Короче у меня два вопроса:
Как это лечится?
Получится ли у меня стать хорошим разработчиком, если я начинаю свой путь в it с такими проблемами?
Проблема не в скобках и не в в невнимательности.

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

С таким подходом не стоит в принципе заниматься деятельностью, где требуется самостоятельность.
Вопрос: Как работает данная рекурсия?

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

Худший ответ:
paw(2, 5) = 2 * paw(2, 4)
2 * paw(2, 4)                   --> paw(2, 4) = 2 * paw(2, 3)
2 * (2 * paw(2, 3))             --> paw(2, 3) = 2 * paw(2, 2)
2 * (2 * (2 * paw(2, 2)))       --> paw(2, 2) = 2 * paw(2, 1)
2 * (2 * (2 * (2 * paw(2, 1)))) --> paw(2 ,1) = 2
2 * (2 * (2 * (2 * 2)))
На 3 строчке не готовый результат, а просто значение res и оно просто подставляется вместо рекурсивного вызова функции на пятой.
Вопрос: Как сделать загрузочную флешку win 10 в mint linux?

Лучший ответ:
Попробуй winusbsudo add-apt-repository ppa:nilarimogard/webupd8
sudo apt-get update
sudo apt-get install winusb
Форматируем нашу флеху в файловой системе ntfs.sudo mkfs.ntfs /dev/sdX
Запускаем прожигsudo winusb --install win10_x64.iso /dev/sdX

Худший ответ:
Есть такая программа - unetbootin, она существует как для Linux, так и для Windows. Подсовываете ей дистрибутивный ISO-файл с Виндой, она раскрывает его на указанную вами флэшку, и дело сделано. Причём не требуется никаких взмахов бубном.
Вопрос: Как сопротивление может влиять на напряжение?

Лучший ответ:
А мне нравится другая метафора.
Представьте, что у вас в школе есть длинный коридор (это проводник).
Коридор полон слоняющихся в нём туда-сюда школьников (это электроны). В среднем в коридоре ток равен нулю.
Вдруг (прозвенел звонок) и в коридор с одного конца стали ломиться новые школьники, движимые желанием идти нахрен подальще от класса (минус "батарейки"). Напор школьников - это потенциал. Он разный в начале и в конце коридора.
Школьники давят с одного конца, а второй конц коридора открыт на улицу (плюс).

Разница потенциалов (напоров) между началом и концом коридора - это напряжение.
Представьте, что перед звонком в коридоре хаотично расставили стулья.
Стулья мешают - это сопротивление. Школьники спотыкаются, ломают стулья, накаляют обстановочку (часть энергии желания школьников погулять тратится на это).
Чем больше стульев, тем больше разница давления школьников между началом и концом коридора.

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

Худший ответ:
totorialman, это влияние внутреннего сопротивления вашего источника напряжения:

Чем больший ток потребляет вольтметр, чтобы замерить напряжение - тем больше напряжения "потеряется" на внутреннем сопротивлении вашего источника.
Вопрос: Ошибка при обработке масива?

Лучший ответ:
Очевидно, $products у вас — это не массив. Вы его, поди, через json_decode получаете, не передавая второй аргумент в функцию.

Худший ответ:
Очевидно, $products у вас — это не массив. Вы его, поди, через json_decode получаете, не передавая второй аргумент в функцию.
Вопрос: Как работает password_hash?

Лучший ответ:
Берет пароль. Генерит к нему случайную соль. Выбирает алгоритм хэширования (по умолчанию, раз вы ничего не задали).
Выдает строку, в которой склеены метка алгоритма хэширования, соль и получившийся хэш.
Для проверки достаточно иметь пароль - и разделить эту самую строку на информацию, которая позволяет однозначно его проверить.

Худший ответ:
Берет пароль. Генерит к нему случайную соль. Выбирает алгоритм хэширования (по умолчанию, раз вы ничего не задали).
Выдает строку, в которой склеены метка алгоритма хэширования, соль и получившийся хэш.
Для проверки достаточно иметь пароль - и разделить эту самую строку на информацию, которая позволяет однозначно его проверить.
Вопрос: Как на css сделать полную обводку текста на при переносе на две строки?

Лучший ответ:
Перевел кое как на английский вопрос, и погуглил, не думал что правильно сформулирую вопрос на англ, вопрос, но получилось. Решение такое, может кому пригодиться
Стиль такой к блоку с бордером-webkit-box-decoration-break: clone;
	box-decoration-break: clone;
Не знаю насколько кроссбраузенрно но работает 
Вот живой пример
https://codepen.io/rpsthecoder/pen/yjVMLB

Худший ответ:
можно попробовать переносить блок принудительно, тегом br, в случае, если текст не помещается в одну строку
и обертывать каждую строку бордером
если строка помещается в длину, br не отображаем
Вопрос: Как вынести тень блока на передний план?

Лучший ответ:
До недавнего времени всё было нормально:
А потом вы задали overflow: auto; для body.

Вообще не нужно ограничивать ширину body и задавать ему overflow. Сделайте лучше контейнер, сложите всё в него и уже ему задавайте центрирование, ширину и всё, что хотите.

Худший ответ:
пропиши z-index, там где нужно выделить его передним планом сделай z-index больше
Вопрос: Почему в среде Linux админов Vim — это тру, а Nano — для слабаков?

Лучший ответ:
Традиции - они такие традиции. Просто vi есть везде и всюду, даже на хостах ESXi (и это единственный текстовый редактор там) - поэтому видимо и пишут так. На самом деле всем плевать. Я вообще mcedit использую и не комплексую :)

Худший ответ:
VIM приследует идиалогию работы без мышки как и Linux.
Вопрос: Через какой платёжный сервис принимать платежи от граждан СНГ для пополнения баланса?

Лучший ответ:
Если нет юрлица или ИП - выбирайте новый протокол от QIWI - https://p2p.qiwi.com/
Нет модерации. Деньги падают на кошелек киви.

Худший ответ:
из агрегаторов сейчас есть
pokupo.ru
робокасса
если проект хайповый, то фрикасса для нормальных проектов не рекомендую подключать. 
Если у вас ИП или юридическое лицо, то возможности для приема оплаты гораздо шире
Вопрос: Mtproto — действительно безопасен?

Лучший ответ:
на 100500%

если. конечно, ключи у кого надо ключи

Худший ответ:
Вполне. 
Он основан на популярных криптоалгоритмах, сомневаться в их надежности не стоит.
Чем его отличие, например, от Signal Protocol?Основное его отличие в том, что это другой протокол.
Вопрос: Почему процессор сильно греется?

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

Худший ответ:
На стандартных частотах работает, не гнался?
Вопрос: Правильное подключение страниц к WP?

Лучший ответ:
Делаете шаблоны страницы и регистрируете их правильно. После создаете пункты в меню и выводите их на странице.
https://wp-kama.ru/function/wp_nav_menu

Худший ответ:
если я правильно понял вопрос, то верстаете нужные страницы и создаете шаблоны уникальных страниц. например page-about.php, page-contacts.php.
для этого в начале файла прописывается подобный комментарий:/* Template name: About page */
теперь при создании новой страницы у вас будет выбор, какой шаблон для страницы использовать.
ну и соответственно садите верстку на этот шаблон
Вопрос: Как мне правильно изменить объект?

Лучший ответ:
Object.assign(users.find(n => n.id === id), user);

или, если неизвестно, есть ли объект с заданным id:

const u = users.find(n => n.id === id);
if (u) {
  Object.assign(u, user);
} else {
  // добавляем, например
  users.push({ ...user, id });
}

Худший ответ:
У тебя номер объекта неправильно прописан
Вопрос: Как с помощью css располагать так блоки?

Лучший ответ:
1) flex-direction: column
2) flex-wrap: wrap
3) order 2му и 3му поменять местами
https://codepen.io/origami1024/pen/QWLgKWG

Худший ответ:
Masonry, как уже тут писали самый адекватный вариант. Все остальное посредством сиэсэс это костыли. А гриды еще и использовать рано.
Вопрос: Удалил домен записи Windows, как войти в пользователя?

Лучший ответ:
Повторно ввести ПК в домен под доменным админом.

Худший ответ:
Пользователя нельзя вернуть, это пользователь домена, а у вас нет доступа к домену. Если комп уже выведен из домена, то авторизация этого пользователя невозможна, без ввода компа в домен.
А вот с настройками есть варианты, типа такого. Это первая, внешне похожая ссылка в гугле, просмотрел бегло, за полную достоверность не ручаюсь.
Вопрос: Как в VS Code включить такой синтаксис для JS?

Лучший ответ:
Шрифт с лигатурами нужен, например Fira Code

Худший ответ:
Это не расширение, а лигатура шрифта.
Например, FiraCode
P.S. А, вообще, посмотрите https://www.programmingfonts.org/ , там и более интересные варианты есть.
Вопрос: Можно ли запитать устройство 5v 3a от повербанка через USB Type-C без PD триггера?

Лучший ответ:
Все зависит от доброты китайца, проектировавшего банк. Если китаец злой и следует стандартам, больше 500mA он вам без умного контроллера не отдаст. 

Кстати, кроме PD есть еще QC разных модификаций, и там для того чтобы сработал триггер, достаточно насобирать правильную конфигурацию резисторов на пинах разъема.

Далее, хвосты USB-C -> barell jack 5, 9, 12, 20V торгуются на том же Али буквально по цене борща в столовке - нет никаких помех, чтобы на устройстве поставить стандартную дырку под barell jack и обзавестись таким проводом с али - микросхема у него внутри разъема сидит - к вам придут 2 провода сразу с нужным напряжением.


По второму вопросу (распайка) - все опять же зависит от доброты китайца. По стандарту, без комбинации резисторов на пинах (то есть, вы распаяли просто + и просто -), он вам больше 500mA 5V не отдаст.

Чтобы не изучать всю гору спецификаций в питании (это реально несколько толстенных PDF), просто возьмите хвост с али за сто рублей на нужное напряжение.

Да и пайка разъема usb-c на плату или на кабель - то еще удовольствие - без хорошего инструмента и прямых рук - вы будете портить платы и детали до приобретения инструмента и навыка пайки.

Худший ответ:
купить нужный по энергоемкости павербанк и в него (прям на выводы батареи аккумов) впаять модуль DC/DC на 5В 3А для твоего устройства

вариант посложнее: набрать нужное количество 18650 банок, к ним модуль DC/DC преобразователь на твое рабочее напряжение, а также модуль зарядки твоих банок сиречъ CC/CV на напряжение батареи + корпус под это все.
Вопрос: Как изменять контент всплывающих окон в зависимости от того, какая кнопка нажата?

Лучший ответ:
Причем тут табы и модалки? Сделайте просто функцию генерации модалки. Передавайте в неё нужный контент и вставляйте сбилженую модалку в какой нибудь <div id="my-modal-box"></div>
Вот простой пример:
HTML<button id="btn-1">First button</button>
<button id="btn-2">Second button</button>
<div id="my-modal-box">
  This is may be modal window component, use css ...
</div>
JSfunction buildModal(containerID, content) {
  document.getElementById(containerID).innerHTML = content;
}

document.getElementById("btn-1").onclick - function() {
  buildModal("my-modal-box", "Content from first button")
}

document.getElementById("btn-2").onclick - function() {
  buildModal("my-modal-box", "Content from second button")
}

/* showModal() and hideModal() write yourself */

Худший ответ:
Попробуйте использовать Event Deligation Pattern
https://learn.javascript.ru/event-delegation
Суть проста - вешает один листенер на контейнер и в коде просто проверяете куда кликнул юзер. От того какой сработает event.target будет срабатывать разные обработчики.
Вопрос: Какую ОС выбрать для Web-Программирования?

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

Худший ответ:
Avrora OC лучше всего с таким справляется
Вопрос: Стоит ли ставить в Windows 10 антивирус?

Лучший ответ:
Если стандартный Защитник Windows не устраивает. Если устраивает - то зачем?

Худший ответ:
нет
Вопрос: Как объединить локальные сети двух роутеров в одну?

Лучший ответ:
Зависит от моделей роутеров. В общем случае - каждый маршрутизатор должен знать, через какой адрес отослать в соседнюю сеть (адрес шлюза). 
Тут больше вызывает вопрос - каждому маршрутизатору надо по одному порту - смотреть в сторону соседней сети, а WAN порт обычно только один (у бюджетных версий). Интернет в такую сеть как будет попадать? если оба WAN порта будут заняты тем, что смотрят друг на друга?
Секретное ключевое слово - МАРШРУТИЗАЦИЯ.
На двух дешманских роутерах это сделать правильным образом - примерно никак (можно взять третий, тогда получится, но со сложностями).
Стартовая точка, когда это хоть как-то реально реализовать - на микротиках (от 1500 рублей)
Новые прошивки зукселей позволяют тоже довольно гибко работать (но под рукой нет)
На нормальных маршрутизаторах хотя бы SOHO сегмента всё скорей всего будет хорошо.
Cisco и иже с ними - будет совсем хорошо.
Схему приложил на цисках
Минутка рекламы - изучайте материалы "сети для самых маленьких" и читайте CCNA

Худший ответ:
Есть вариант.
1. Придумывается третья подсеть, в которую соединяются роутеры портами WAN (каждому, естественно, нужно назначить свой IP).
2. На обоих роутерах отключается NAT;
3. На каждом роутере добавляется статический маршрут для чужой подсети; в качестве шлюза указывается IP-адрес соответствующего роутера в третьей подсети;
4. Хождение пакетов проверяется с помощью tracert/traceroute.
Вопрос: Почему не работает last-child?

Лучший ответ:
.bl:last-child (Почему?)

Худший ответ:
Ваш псевдоселектор направлен не на потомков класса, а к контейнеру с классами, вы пытаетесь взять последний элемент с классом .wrap_third_block а он у вас всего один и да, к нему добавляется margin-right: 0;

Если вы хотите взять последний элемент из трех, то 
.bl:last-child {
  margin-right: 0;
}
Вопрос: Как можно обосновать необходимость организации услуг связи ВОЛС в тендере?

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

Худший ответ:
как вариант на госзакупках найдите ТЗ ДИТ Москвы на услуги связи и спишите оттуда.
Вопрос: Критичны ли погрешности при верстке макета?

Лучший ответ:
Это вопрос к клиенту. Ему решать. Однако, во множестве случаев, pixel perfect возможен только ценой кучи костылей. Если требуются костыли, но клиент настаивает - он идиот.

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

Лучший ответ:
В настройках сетевой карты А убрать шлюз. В настройках карты Б шлюз прописать (шлюз для сети Б). Инет пойдет через Б. Это если вручную.

Худший ответ:
Не совсем понятно что вы имеете под 
меня компьютер постоянно использует интернет А, независимо от того, в какой порт вставлен.

Но написать локальные маршруты на машине,
Поиграть с метрикой на интерфейсах.
Вопрос: Маска сети назначаемая при установлении VPN соединения в Windows 10?

Лучший ответ:
А зачем вам /24 маска на PtP соединении?

Худший ответ:
Я может и туплю в час ночи, но для клиента l2tp разве же не маска /32 выдаётся?
Вопрос: Как настроить vpn на mikrotik так чтобы на клиентах не надо было прописывать маршрут?

Лучший ответ:
Я бы юзал openvpn - там в конфиг прям маршруты пишутся...

Еще можно попробовать в настройках бриджа микротиков (где локалки висят) указать proxy-arp, и соответственно в конфиге vpn тоже на микриках. в какой бридж им добавлять vpn клиентов

Худший ответ:
Кроме уже перечисленных решений – нет. При чем самое приемлемое – с указанием маршрутов.
Разве что, попробовать занатить маппингом всей подсети 172.16.0.0 на сеть предприятия. Клиентам правда придется ходить по другим адресам на хосты в локальную сеть предприятия https://wiki.mikrotik.com/wiki/Manual:IP/Firewall/...

Наилучшим вариантом будет использовать VPN с возможностью пушить роуты (openvpn, softether) и выделенный под это сервер. Ну или virtualrouter openwrt на Микротике с этими решениями, если клиентов парочка.
Вопрос: Где можно купить «белый» IPv4 адрес «навсегда»?

Лучший ответ:
То, что вам нужно, называется PI-адрес. Для его поддержки необходима BGP-сессия с вышестоящим интернет-провайдером.

Худший ответ:
Нигде.
Адреса IPv4 уже закончились.
Поэтому получить возможности нет.
А продать - никто вам по одному адресу продавать не будет, если продадут, то целый диапазон, и это будет крайне недешево.