Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Назовите лучший сервис/онлайн школу для изучения Английского языка, с возможностью поиска онлайн преподавателей?

Лучший ответ:
Имхо слишком щепетильно подходите к выбору преподавателя. Словно жену себе выбираете)
При сдаче сложных экзаменов (СAE, CPE) это будет актуально.
Чтобы дойти до Upper Int, вам и студент вуза подойдет. 
Вы просто проходите учебник, учитель сопровождает, объясняет что-то при необходимости. Учите, читаете, слушайте, делаете задания, запоминайте все равно вы.
Носитель вам тоже сейчас ни к чему совершенно.
Пример. 
Вам надо проехать 100 км. И вы выбираете авто. Это должен быть вот такой, импортный, с турбированным двигателем, 300лс не меньше, полный привод и т.д. А может гоночный болид взять? Вот примерно такой ход мысли.
Не примите за упрек. Просто сложно будет с таким представлением что-то выучить.
Можете выбрать EF - неплох слышал.
Можете выбрать ***. Интересная платформа, но слегка тормозит.
Занимайтесь по курсу. Делайте ДЗ. Занимайтесь самостоятельно.
Сказать не можете - найдите партнеров и общайтесь регулярно.
И не ищите золотой курс/золотого учителя. Это форма прокрастинации.

Худший ответ:
Добрый день. Для начала - могу Вам выслать тест для определения уровня знания грамматики и сообщу Вам результаты. Отталкиваясь от Вашего уровня, можем подобрать учебник. Преподаватель Вам объясняет правило (по скайпу или в аудиозаписи), Вы делаете д/з, отправляете на проверку и получаете обратную связь. По такому формату можно пройти пробный урок и понять подходит Вам это или нет. К IELTS есть смысл начинать готовиться с уровнем грамматики не ниже Intermediate.
Если вопрос ещё актуален для Вас-обращайтесь. Рада помочь.
Вопрос: Где находится основной офис с программистами Microsoft?

Лучший ответ:
там же, в Редмонде

примерно 25% сотрудников

потом Долина и остальное сейлзы по миру

Худший ответ:
где находится штаб-квартира - знаюНу это и есть основной офис.

но ведь не факт, что именно там все программисты.Откуда там программисты? Это же основной офис, там управленцы, а не рабочие находятся.
Вопрос: Почему скорость загрузки сайта на мобильных через testmysite.withgoogle.com такая странная?

Лучший ответ:
По тому что из разных точек мира время загрузки контента разное

Худший ответ:
Смотрите лучше инструментами более профессиональными.
Берите gtmetrix и в нем смотрите, что именно загружается в waterfall.
loading.express в нем смотрите по каким параметрам надо работать.
Ну и правильно тут пишут, что гугл пейджспид для понятной оценки.
Вопрос: Как реализовать доступ к локальному веб-серверу за NAT через VPS?

Лучший ответ:
Для начала поднять между малинкой и vps VPN вроде такого.  
Выполнить на vps команду echo 1 > /proc/sys/net/ipv4/ip_forward чтобы ядро перенаправляло сетевой трафик.
Для того чтобы firewall не блокировал транзитный трафик
iptables -A FORWARD -o $vps_main_interface -j ACCEPT
iptables -A FORWARD -o $wireguard_interface -j ACCEPT
Основной NATiptables -t nat -A POSTROUTING -o $vps_main_interface -j MASQUERADE
Проброс портов iptables -t nat -A PREROUTING -p tcp -i $vps_main_interface --dport 80 -j DNAT --to $client_ip.
Как это прописать, чтобы всё сохранялось после перезагрузки зависит от дистрибутива. Также это упрощённая "магия" может сломаться по различным причинам и для того, чтобы разобраться почему это произошло, нужно, чтобы это перестало быть для Вас магией.

Худший ответ:
Разместить сайт на VPS.
Вопрос: Пробуждения экрана смартфона при помощи JS возможно?

Лучший ответ:
Да, возможно

Худший ответ:
Нашел решение которое работает на Android и использует API без костылей. Правда не знаю как это работает в более старых андроид и новее, а так же в iOS. 
const requestWakeLock = async () => {
    try {
        const wakeLock = await navigator.wakeLock.request('screen');
    } catch (err) {
        // the wake lock request fails - usually system related, such low as battery
        console.log(`${err.name}, ${err.message}`);
    }
}
Вопрос: Используете ли вы annotations в Python?

Лучший ответ:
Да, потому что сложно помнить все аттрибуты на твоих классах. А когда пишешь анотацию - IDE сама все подсветит и даст подсказки.

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

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

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

В общем, как обычно это делают: идут в магазин с ноутбуком, в магазине вставляют память - если не завелась, то пробуют другую. Покупают ту, которая заработала.
Если бы в ноутбуке был биос, позволяющий вручную задавать частоту памяти и все тайминги - можно было б запустить любую планку без проблем, но обычно в биосах ноутбуков все эти опции не отображаются, поэтому приходится экспериментировать. А самой памяти пофиг - они и так многие с завода выпускаются как 2133МГц, а потом самые лучшие модули на заводе разгоняются до 3600Мгц к примеру, и продаются дорого, модули похуже до 3000МГц и продаются подешевле немного, ну и так далее.

Худший ответ:
Я пробовал ставить в свой ноут ddr 1600, при поддерживаемой 1333, не встала
Вопрос: Откуда столько разделов и как их очистить(можно ли)?

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

Худший ответ:
1 - судя по всему загрузка EFI? тогда скрытых разделов 2 а не один, как для легаси на mbr. это могут быть 1000 Мб и 266 Мб
2 - при некоторых обновлениях, не всегда, но к примеру при обновлении до 1903 точно было, делаются резервные копии этих разделов, самой виндой. возможно второй 1000 Мб и 352 Мб, как раз и есть такие резервные копии
3 - 20 Гб в самом конце, очень смахивает на раздел восстановления от производителя. восстановление в точности той версии винды, и с тем комплектом софта, которые были на момент продажи изделия. процедура такого восстановления не имеет ни чего общего с виндовым "восстановлением". чаще всего инициализируется через биос. сохранять этот раздел или нет, зависит от вашего уровня знаний. лично я бы удалил, но судя по вашему вопросу, вам, скорее бы посоветовал не спешить удалять
4 - про линукс вы вроде бы и так все сами знаете
5 - что с этим делать - вам уже посоветовали ))
ps если будете удалять третий по счету раздел (1000 Мб, 99% что это бекап и его можно удалить) и присоединять это место к системному разделу, заготовьте заранее инструкции и средства восстановления загрузки windows (или линукс, если вы его сохраните) при чем желательно на отдельном загрузочном носителе (флешке). инструкции можно и распечатать.
суть в том, что при изменении начального сектора системного раздела, как правило, все загрузчики его теряют. это не смертельно. но если в этот момент нет ни интернета, ни системы, ни знаний, то вы можете оказаться в неловкой ситуации ))
Вопрос: Почему так странно ищет substr?

Лучший ответ:
Во-первых в этой строке есть кириллица, а значит нужно использовать функции для работы с многобайтовыми строками.
Во-вторых переменные $posnamevalstart и $posnamevalend у вас имеют одинаковые значения. Раз вы ищете в обеих переменных одинаковые значения, то нужно смещать начальную точку:$posnamevalend = mb_strpos($findstr, "\"", $posnamevalstart + 1);
В-третьих третьим параметром в функции substr() передается ДЛИНА ВОЗВРАЩАЕМОЙ СТРОКИ. Значит нужно написать эту строку следующим образом:$namevalue = mb_substr($findstr, ($posnamevalstart + 1), ($posnamevalend - $posnamevalstart - 1));
Ну и самое главное - зачем вы вообще это делаете? Если просто понять как работать с strpos() и substr() то окей. А так у вас там обычная сериализованная строка (только почему-то обрезанная вами), которая представляется в массив функцией unserialize()

Худший ответ:
1. это не JSON, а сериализованная строка
2. возможно из за мультибайтовой кодировки https://www.php.net/manual/ru/function.mb-substr.php
Вопрос: Какой код нужен в CSS чтобы две картинки появились на одном уровне, а не одна под другой?

Лучший ответ:
вот именно что ни какого css не надоsnippet

Худший ответ:
.red{
   float:left;
}
Или можно обернуть картинки в контейнер и выровнять флексами
Вопрос: Подключение к базе данных MySql, как правильно и современно?

Лучший ответ:
Вопрос хороший, но неправильно сформулирован.
Поскольку тут на самом деле два вопроса - какой драйвер использовать и уже потом - как правильно соединяться. 
Ответ на первый вопрос очевиден. Если выбирать из  mysql_connect, mysqli и PDO, то достаточно зайти на страницу мануала, посвященную каждому варианту, и посмотреть, что там написано. Ну или попробовать использовать в своем коде и посмотреть что получится.
А вот вопрос, как правильно подключаться в двух оставшихся вариантах, действительно важный, и ответ на него, как обычно, почти никто не знает, поскольку все друг у друга списывают статьи не 2-х, а 22-х летней давности. К счастью, есть сайты с актуальной информацией.
Теоретически, можно использовать mysqli. Но не нужно. Потому что это низкоуровневый драйвер и пользоваться им без подготовки очень неудобно. Но если вот прям так приспичило, то вот как правильно соединяться используя mysqli
Ключевые моменты:
- необходимо задавать режим выброса исключений
- необходимо задавать кодировку
- при подключении необходимо перехватывать исключение и выбрасывать его снова, чтобы в сообщении об ошибке не было логина и пароля.
Но правильным ответом, если выбирать из перечисленных трех, будет PDO. Здесь тоже не так просто, поэтому смотрим как правильно соединяться используя PDO - учитывая те же ключевые моменты, которые указаны выше.
Хорошим вариантом будет использовать высокоуровневую абстракцию типа redbean. Но поскольку нормальной документации по нему нет, а есть только пара хайповых видео, где он используется, причем без каких бы то ни было объяснений и разбора основ, то я бы рекомендовал редбин уже опытному разработчику, а не начинающему. Но в любом случае как в нем соединяться, написано в документации
Пароль в базе данных не шифруется а хэшируется. Делается это с посощью функции password_hash

Худший ответ:
Друзья, вы советуете забывая про то что он новичок. Как думаете он знает что такое объект и сможет ли с ним работать? Не отпадет ли у него желание вообще что либо делать после частичного погружения в ООП? Мне кажется для начинающего выбор очевиден mysqli_connect. Говорить что тот или иной способ безопаснее я бы не стал, тем более для новичка, для безопасности нужно думать не о способе подключения. Сейчас работаю только с doctrine orm, но начинал как раз с того самого способа что из семёрки удалили. ООП постиг не сразу, было достаточно "больно", но на процедурке штамповал с легкостью. Всех сейчас толкают к ООП, тем самым убивая главный плюс php низкий порог входа
Вопрос: Сортировка перед добавлением в массив?

Лучший ответ:
так не подойдет?arr = Object.values(obj).sort((k, kk) => kk[2] - k[2])

Худший ответ:
const obj = {
key1: [5, 7, 10, 4, 8],
key2: [0, 7, 1, 3, 16],
key3: [2, 8, 9, 1, 14],
}
const keys = Object.values(obj)
keys.sort((a,b) => {
		if(a[2] < b[2]){
			return 1
		} else if(a[2] > b[2]){
			return -1
		} else {
			return 0
		}
	})
const arr = []
keys.map(i => arr.push(i))
console.log(arr)
Как то так вот
Вопрос: Как сделать закругление картинки с одной стороны на css?

Лучший ответ:
border-top-left-radius — для верхнего левого угла;
border-top-right-radius — для верхнего правого угла; 
border-bottom-left-radius — для нижнего левого угла;
border-bottom-right-radius — для нижнего правого угла (в твоем случае)

Худший ответ:
Можно сделать отдельный див-треугольник и разместить его там . Или можно в изображении сразу сделать это .
Вопрос: Как поделить базу между микросервисами?

Лучший ответ:
Но немаловажная суть микросервисов в том, что бы минимизировать зависимости, в том числе обеспечить каждый микросервис своей БД.
Именно.

Дублировать данные для каждого микросервиса нет никакого смысла.
В микросервисной архитектуре в дублировании как раз есть смысл. 

Может быть вам просто не нужны микросервисы, какую проблему вашего проекта решает микросервисная архитектура? А может вы наоборот зря заморачиваетесь по поводу дублирования, какие проблемы у вас с ним?

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

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

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

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

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

Худший ответ:
Я думаю, что нужно не бояться ошибаться. Пиши как умеешь. Все начинают говнокода - это нормально. Но, увы, в рунете +100500 человек ищет возможность тебя обосрать, чтобы поднять свое ущемленное ЧСВ, вместо того, чтобы просто и понятно человеку разъяснить, почему лучше по-другому написать, чем у него сейчас есть - все непременно начнут кидаться какашками и строить из себя гуру. Вот этот этап, особенно если ты зависим от чужого мнения, может деморализовать. Нужно не обращать внимания на выскочек, но обращать внимание на конструктивную критику.
Вопрос: Как получить связанные данные из БД (mysql) в одном элементе массива?

Лучший ответ:
начните с этого, может поможетSELECT dta.id, dta.doc_name, dta.doc_title, dta.link, dta.status, GROUP_CONCAT(DISTINCT dty.doc_id ORDER BY dty.doc_id ASC SEPARATOR ', ') AS type_id
FROM doc_table dta
INNER JOIN docs_types dty ON dta.id=dty.doc_id
GROUP BY dta.id;
илиSELECT dta.id, dta.doc_name, dta.doc_title, dta.link, dta.status, GROUP_CONCAT(DISTINCT t.type_name ORDER BY t.id ASC SEPARATOR ', ') AS type_name
FROM doc_table dta
INNER JOIN docs_types dty ON dta.id=dty.doc_id
INNER JOIN types t ON t.id=dty.type_id
GROUP BY dta.id;

Худший ответ:
Используй groupBy('id')
Вопрос: Что изучать чтобы стать C# разработчиком?

Лучший ответ:
Я вошел в отрасль примерно так. 

В УПК учил алгоритмы, пресловутые коробочки и автоматы.
В институт попал практически случайно. Там "Аппаратные и программные методы защиты информации". 
Академ. 
Куча работ связанных как то с IT. Java, C++, 3D studio Max .
Игроделание, где я в принципе пинал дизайнеров и был замом главного редактора газеты.
Потом это все надоело. И пошел на первую нормальную стабильную вакансию.
Написал тестовое на C# хотя до этого не знал его. Как то втянулся. 

Выше посоветавали , от себя добавлю https://metanit.com/sharp/

Худший ответ:
Я бы посоветовал пройти курсы Itvdn, я сам смотрел по ангуляру, у Охрименко, зачетный препод. У него есть курсы по c#, только не могу никак добавить сюда, Asp mvc, Core и т.д.
Вопрос: Будущее для ИБшника, что делать дальше?

Лучший ответ:
Плохо значит учился, если ничего не понял. Иди в ВУЗ, может там до тебя что-то дойдет.

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

В общем, если ты пришел в ИБ, насмотревшись сериалов про хакеров - ты сделал ошибку, чувак.
Вопрос: На какой платформе сделаны сайты?

Лучший ответ:
Самописные

Худший ответ:
Делайте на той, которую лучше всего знаете сами
Вопрос: Централизованное управление пк?

Лучший ответ:
Задумались на счёт Ansible - отлично. Его собраться это Chef, Puppet, Salt

Худший ответ:
RDP плюс rdpmanager
Вопрос: Насколько дорогая SQL операция NOT IN/NOT EXISTS?

Лучший ответ:
SQL JOINВторой слева.

Худший ответ:
SQL JOINВторой слева.
Вопрос: Как залогиниться на сайте при помощи python requests?

Лучший ответ:
Да тут делов на 2минуты:
import requests
from bs4 import BeautifulSoup
import time
headers = {'user-Agent': 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:72.0) Gecko/20100101 Firefox/72.0'}

data = {'authenticity_token':'',
		'email':'', # Email
		'password':''  # Пароль
		}

url = 'https://www.strava.com/session'

session = requests.Session() # Сессия

def get_token():# Метод, для получения токена
	response = session.post(url,headers=headers)
	soup = BeautifulSoup(response.text,"html.parser")
	token = soup.find('input',{'name':'authenticity_token'}).get('value')
	return token # Возвращает токен


def auth(): # Метод, для авторизации
	response = session.post(url,headers=headers,data=data)
	return response.text

data['authenticity_token'] = get_token() # Вызывает метод для получения токена, и результат заносим в словарь

time.sleep(2) # Пауза 2 сек :)
html = auth() # Авторизируемся. В html будет наш ответ после авторизации

if 'Log Out' in html: # Если строка 'Log Out' есть в html, значит авторизация прошла успешно
	print('Login OK!')
else:
	print('Login Error!')
Если что не понятно, пишите.

Худший ответ:
Попробуйте промониторить через Network вход в аккаунт(нажимаете f12 и выбираете Network), логинитесь и отсылаете форму. Во вкладке Network должны были отослатся данные входа на сервер, посмотрите что передается, вероятнее всего вместе с паролем и именем передается какой-то токен, и из-за этого не получается выполнить авторизацию. Для авторизации нужно передавать все данные которые должны передаватся, а не только юзернейм и пароль.
Вопрос: Что обязательно знать хорошему C# — исту?

Лучший ответ:
Отец невесты в вашем городе есть? Кому и кобыла невеста (С)

Не пообщаетесь не узнаете.

Худший ответ:
Unity 3d и C#. Вроде все логично.
Вопрос: Можно ли в bash-скрипте прописать интерактивный ввод логина-пароля для GitHub и вызов MySQL-команды?

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

Худший ответ:
Взято с www.tech-notes.net/use-expect-in-bash
скрипт принимает в качестве аргументов имя пользователя и пароль, дальше подключается с ними к серверу 192.168.1.10 и выполняет там cat /etc/issue
#!/usr/bin/expect
log_file expect_log
set login [lindex $argv 0]
set pw [lindex $argv 1]
spawn ssh $login@192.168.1.10
expect "$login@192.168.1.10\'s password:"
send "$pw\r"
expect "$login@"
send "cat /etc/issue\r"
Выполнить его можно так:
expect -f script.exp user password
Второй вариант - запустить все прямо в bash:
expect -c 'spawn ssh user@192.168.1.10; expect `Password:` {send - `password\r`}; expect `user@` {send `cat /etc/issue\r`};'
Вопрос: Какие посоветуете книги и окружение для быстрого погружения в Docker?

Лучший ответ:
Та какие книги. Если с английским ok, то https://cognitiveclass.ai/courses/docker-essentials
Проходите все шаги за 2-3 часа.
Или https://www.katacoda.com/courses/docker
Там курсы даже не курсы, а чисто пальцем левой ноги прокликать.
Если есть время, на русском https://stepik.org/course/1612

Худший ответ:
https://dmkpress.com/search/product/?search_string...
первые две есть в нете / телеге
Вопрос: Заказчик хочет получить invoice. Подвластно ли это начинающему фрилансеру?

Лучший ответ:
Если заказчик иностранный, то последствий не будет никаких.
Это нужно ему для внутренней бухгалтерии. Наша налоговая никак об этом не узнает.
Поэтому достаточно взять в интернете любой invoice generator и заполнить базовые вещи: заказчик, исполнитель, список работ, цена, объём, дата. Я лично пользуюсь вот этим: https://create.onlineinvoices.com/invoices-generat...

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

Лучший ответ:
Погуглите ЧПУ ссылки

Худший ответ:
Это для php нужно поместить в .htaccess
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^view/?$ view.php [L]
RewriteRule ^view/(\d+)/?$  view.php?id=$1 [L]
Вопрос: Как можно ускорить работу данной программы?

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

что-то вроде:
PhoneOperator:
    code = CharField()
    name = 
    region = 

PhoneRange:
   minval = BigIntegerField()
   maxval = BigIntegerField()
   operator = ForeignKey(PhoneOperator)

Тогда
my_operator = PhoneOperator.objects.filter(
    code=my_number[0:3],
    phonerange__minval__lte=my_number[3:],
    phonerange__maxval__gte=my_number[3:]
)

Худший ответ:
Думаю надо просто в число преобразовывать номер и сравнивать. Числа то проще сравнить чем массивы гонять или нет?
Вопрос: Почему на сервере DNS присутствуют одинаковые IP-адреса?

Лучший ответ:
Адреса выданы DCHP сервером, лизинг кончился имя осталось. Т.к. в AD у машин есть права регистрировать записи в днс автоматом. 
Нужно настроить DNS Aging and Scavenging что б старые записи вычищались тоже автоматически.

Худший ответ:
Про настройку DNS Aging\Scavenging вам уже сказали.
А чтобы компьютеры не сами регистрировались в DNS, а это делал DHCP и чтобы не было лишних дублей - нужно  перенести DHCP на WIndows Server и DHCP дать права обновлять записи в DNS.
Для этого нужно создать сервисный (user account) аккаунт в AD, добавить его в группу DNSUpdateProxy и ввести логин и пароль в настройках DHCP.
https://www.serverbrain.org/implementing-2003-netw... 
https://support.microsoft.com/ru-ru/help/816592/ho...
Вопрос: Как подключить нескольких сетей с разными ip на одном устройстве?

Лучший ответ:
Если Вам нужно чтобы компьютер со SCADA общался со всеми этими устройствами. Если у Вас всё находится в одном VLAN. То проще всего, чтобы без перенастройки контроллеров, добавить адреса из сетей 192.168.140.x, 192.168.0.x и 172.16.170.x на компьютер со SCADA.
Если VLAN разные, то придётся настроить адреса из этих сетей на микротике, и прописать его шлюзом на всех контроллерах

Худший ответ:
Судя по описанию у Вас домашний роутер.  Вам надо либо менять адресные пространства c учетом суммаризации либо подбирать оборудование под задачу.

Если Вам производительности роутера хватает - можно предположить что на все оборудование 250 адресов хватит с избытком, а поменять от силы десяток адресов не должно быть проблемой. либо покупайте что-нибудь уровня хотя бы MikroTik RouterBoard RB2011L-IN если есть непреодолимая тяга к этому вендору и умение настраивать его оборудование и бюджет чрезвычайно ограничен. оно хоть и тоже на уровне домашнего устройства, но хотя бы умеет маршрутизить больше одной сети.
Вопрос: Дешевые виртуальные PHP хостинги такие слабые или я что-то недогоняю?

Лучший ответ:
виртуальные дешевые сервера по сути ничтожны по производительности?
С просветлением вас.

Худший ответ:
По-разному бывает. Такие вещи тестировать надо. Низкая цена может быть по разным причинам.