Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Стоит ли учить С/С++ если не планируешь писать на нём?

Лучший ответ:
Не стоит. Без практики, все ваши знания выветрятся через неделю.

Худший ответ:
Хрень какая-то. С такой логикой надо сразу с ассесблера стартовать для лучшего понимания, как оно работает. 
Вот есть сварщики. Много кто из них знает, как работает их сварочный аппарат в подробностях? Как происходит преобразование напряжения, какие при этом происходят процессы, какой химический состав электродов, как работает маска? Большинство знает это всё поверхностно, без особого углубления в то, как оно точно работает, но это не мешает им нарабатывать опыт и становиться хорошими сварщиками. Так и тут.
Вопрос: Как правильно отлаживать try ... except в Python?

Лучший ответ:
try:
    validate(request_json, request_json_schema)
except ValidationError as e:
    print('Schema not valid, и вот почему:')
    print(e)

Худший ответ:
try:
    validate(request_json, request_json_schema)
except ValidationError as e:
    print('Schema not valid, и вот почему:')
    print(e)
Вопрос: Как отключить скайп в виндовс 10?

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

Худший ответ:
Пользуйся! Только аккуратно.
И вот ещё, чтобы долго не искать "что это за зараза такая и где же она спряталась?"\\live.sysinternals.com\tools\autoruns.exe\\live.sysinternals.com\tools\procexp.exe
Вопрос: Как освободить RAM на web-сервере uwsgi?

Лучший ответ:
Обработку изображений лучше сделать асинхронной, занося задачу в очередь сообщений.
Обработчик очереди будет работать в отдельном процессе. Если обработка изображения занимает много памяти, то, возможно, можно её сильно оптимизировать.
А что за обработка, если не секрет? Масштабирование? Приведение к единому формату файлов?

Худший ответ:
Действительно celery / gearmand и можно картинки обрабатывать хоть на дешевом VDS.
Вопрос: Лучше создать набор CSS классов для сетки или стилизовать каждый блок сайта отдельно?

Лучший ответ:
Тут нет однозначного ответа, оба варианта возможны в зависимости от ситуации.
Практика показывает, что первый вариант чаще подходит к сайтам, которые собираются из множества кирпичей как конструктор и вариаций сочетаний этих кирпичей очень много (например, админки).
Для сайтов с более-менее уникальным дизайном чаще лучше второй подход, потому что ну не бывает сложных дизайнов, которые полностью можно было бы описать 12-ю равными колонками. Хотя под капотом там всё равно обычно присутствуют некоторые элементы первого подхода, только в виде миксинов.

Худший ответ:
Для глобальной сетки (взаиморасположение крупных блоков верхнего уровня) можно создать свой блок .container, который будет центровщиком, а в разметке его примиксовывать или делать блоком оберткой (когда есть фон на 100%):<div class="features  container">
    Some content
</div>

<div class="features">
    <div class="container">
      <section class="features__element">
          some content
      </section>
      <section class="features__element">
          some content
      </section>
    </div>
</div>
Затем, блокам сетки задать правила для адаптивности. Например…// Каскад от Мобильных к Десктопам

.container {
	width: 280px;
	padding: 0 20px; 
}

@media (min-width: 768px) {
	.container {
		width: 640px; 
		padding: 0 60px; 
	}
}

@media (min-width: 1200px) {
	.container {
		width: 960px; 
		padding: 0 100px; 
	}
}
Более мелкие блоки сетки — колонки, можно прописывать в файле конкретного блока, а если расположение колонок часто повторяется, то как элемент блока сетки.
Вопрос: Фреймворк для команды с нулевым опытом в ООП?

Лучший ответ:
У вас в тегах как раз нужный список фреймворков

Худший ответ:
Я бы рекомендовал yii2 starter kit, для новичков он всех проще, хоть вы его забраковали. 
П.с а так лучше всего вобще не на PHP начинать делать)
Вопрос: Как мне стать middle-frontend?

Лучший ответ:
Года три старательно отработать в офисе.

Худший ответ:
"место для обучения я выбрал фриланс" начинаю понимать, почему некоторые люди с подозрением относятся к фрилансерам. Фриланс это не место для обучения, если по уму это место где можно зарабатывать, если вы не только эксперт высокого уровня в своей области, но также имеете некоторую финансовую грамотность, имеете опыт создания собственного бизнеса или хотя бы хорошо понимаете его потребности, у вас есть опыт переговоров с людьми из бизнеса далекими от технических терминов, есть навыки в маркетинге, чтоб правильно себя подать, продать свои услуги и т.п. и т.д.
Когда клиент ищет фрилансера, ему нужна услуга по созданию некоторого продукта, без постоянного контроля и пинков со стороны, как вы такие услуги оказывать собрались если "не могу даже на половину сверстать простой макет"?
"Года три старательно отработать в офисе." на мой взгляд хороший совет, альтернатива - создание своей небольшой компании или pet-project.
С созданием компании прямо сейчас у вас могут возникнуть трудности хотя бы в связи с возрастом, но вполне можно попробовать некоммерческий pet-project, возьмите 1, 2 - 3 области, хобби, которые вам интересны и сделайте самый лучший сайт о них, попробуйте набрать аудиторию, собрать обратную связь. Если получится все хорошо глядишь к 18 откроете ИП, как-то их монетизируете. Если получится нормально хотя бы с технической точки зрения - будет портфолио для попыток зайти во фриланс. Если получится никак - будете знать наверняка, что без офиса и советов от старших товарищей вам не продвинутся.
Вопрос: Организация грамотного бэкапа серверов на windows?

Лучший ответ:
Программы подбираются под ситуацию. Общего универсального средства нет.
Можно использовать и штатные механизмы WIndows, работают отлично, хотя не всегда удобны.
Как правило делается образ системных дисков серверов - для быстрого развертывания.
Диски виртуальных машин как правило удобнее делать отдельно.
Такие вещи как БД лучше бэкапить штатными средствами в большинстве случаев.
Тут главное обращать внимание на несколько основных моментов -
1) У вас должен быть план развертывания. Вот представьте ситуацию, полетел сервер, есть бэкапы и нужно срочно развернуть - и что дальше? Какие ваши действия по пунктам?
Вот тут у большинства и начинаются проблемы - они настраивают бэкап, по принципу - будет проблема разберемся как восстановить, а при реальном сбое в условиях дефицита времени совершают ошибки, вплоть до случайного уничтожения бэкапа.
Поэтому забэкапили - создали план восстановления, и проверили его.
2)Работа механизма бэкапа должна обязательно контролироваться - чтобы в случае неуспеха и проблем приходили сообщения ответственным лицам. Иначе по факту зачастую оказывается бэкап есть, но за прошлый год.
3)Доступ к хранилищу бэкапов по сети должен быть только у пользователей которые создают бэкап, больше ни у кого, даже у администраторов не должно быть доступа. В идеале сам сервер бэкапа забирает бэкап.
4)Регулярно надо проводить плановые проверки и развертывания - инфраструктура меняется, и возможны ситуации что при настройке бэкапа эти изменения не учли.
5)Особо критичные данные должны хранится территориально удаленно.

Худший ответ:
Систему можно бэкапить встроенными средствами, базы данных - своими, с файлами - надо думать в зависимости от ситуации. Хранить бэкапы или ещё лучше их копии - на Linux-сервере, с подключением только на время копирования - недавно в гости зашел шифровальщик - часть бэкапов на виндовых шарах была потеряна, до потери данных дело не дошло.
Вопрос: Чем отличаются теги Google analytics, Adwords, Remarketing и Tag manager?

Лучший ответ:
Google Tag Manager - это что-то вроде контейнера, который один раз устанавливается на сайте и через который можно размещать все остальные счётчики и коды без корректировки уже непосредственно сайта. Все операции после первичной его установки производятся уже через интерфейс Google Tag Manager.
Google Analytics - аналитическая система, код счётчика которой устанавливается или непосредственно на сайт, или через Google Tag Manager. Через Google Tag Manager установка проще, но тонкая настройка может вызвать некоторые затруднения.
В Google Adwords есть ещё разные коды для отслеживания конверсий, настройки ремаркетинга. Но они все не нужны, если на сайте уже установлен Google Analytics.
Таким образом, можно сказать, что Google Tag Manager - это более универсальный тег, через который можно настроить все остальные. Но установка Google Analytics так или иначе (через GTM или без него) всё равно нужна.

Худший ответ:
Tag manager  есть мнение, что не секурно, но на данном этапе для вас это не криттично
ставьте все
Вопрос: Как реализовать динамический title?

Лучший ответ:
1 страница - 1 title. Иначе - никак.
Если очень сильно надо - создай 2 идентичные страницы, но это очень глупое решение.
Оптимально - написать эти страницы специализированно (т.е. различающиеся).
Если ты это из-за сео - то есть еще тег description, по нему ищут поисковики, или в title несколько ключевых слов.

Худший ответ:
Не вижу оптимального способа реализовать это, как и не вижу смысла в этом
Вопрос: Запись условия if в переменную?

Лучший ответ:
Возможно Вам хватит этого

$if = (0.5 < 0.6); //true
if ($if) {
    echo 'YES';
} else {
    echo 'NO';
}

Внимание, прежде чем использовать eval() в своём коде внимательно изучите документацию по этой функции  https://www.php.net/manual/ru/function.eval.php

Особенно обратите внимание на это предупреждение
Предостережение
Языковая конструкция eval() может быть очень опасной, поскольку позволяет выполнить произвольный код. Использование данной функции не рекомендуется. Если вы полностью убеждены, что нет другого способа, кроме использования этой конструкции, обратите особое внимание на то, чтобы не передавать какие-либо данные, предоставленые пользователем, без предварительной проверки.
Автор данного ответа не несёт ответственности за простреленные ноги.

Через eval()
<?php
$if = eval('return 0.5 < 0.6;');
var_dump($if); //true

eval('$if = 0.5 < 0.6;');
var_dump($if); //true

Худший ответ:
Этой наркоманией занимается https://www.php.net/manual/ru/function.eval.php
Вопрос: Как бороться с брутфорсом?

Лучший ответ:
Все очень зависит от того, что за сервис вы разрабатываете, как и кем он будет использоваться и что в нем есть интересного для брутфорсера. Пока ваш сервис не имеет большой пользовательской базы и не особо интересен атакующим и его брутят только стандартные боты-краулеры которые ищут доски объявлений, будет работать все что угодно, в том числе и простые рейтлимиты, как вы предлагаете и капчи. Если у вас популярный сервис с большой и разнообразной пользовательской базой, то окажется что с одного IP могут ходить и хорошие пользователи и плохие, помимо прямого брута (по паролю) бывает обратный (с одним паролем по разным пользователям), что пользователи очень не любят капчи  (а иногда и физически не имеют возможности их ввести, например из-за плохого зрения или дальтонизма) и т.д. В таких случаях защита от брутфорса требует более интеллектуальных подходов и вряд ли вам о деталях их реализации кто-то подробно расскажет.

Худший ответ:
как вариант, если от взламывающих приложений, можешь поставить input type="hidden", реальный пользователь не увидит этого поля, а вот приложение будет туда писать, и если там что то есть, то сразу блокировать его, это как еще один вариант от взломов
Вопрос: Почему возникает ошибка «FATAL ERROR: CALL_AND_RETRY_LAST Allocation failed — JavaScript heap out of memory»?

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

array[i+1]=true;
Размер вашего массива увеличится, последний элемент перестанет быть последним, и цикл, вместо того, чтобы завершится, уйдёт на следующую итерацию. А там опять array[i+1]=true; (или array[i+1]=false;, в зависимости от условия) - массив снова увеличился, опять цикл не завершился, ну и так далее - массив будет жиреть до тех пор, пока станет невозможно выделить ему ещё памяти.

UPD. Я так понял, речь об этой задаче.
Решается вот прям совсем просто.
const ops = {
  OR: arr => arr.some(Boolean),
  AND: arr => arr.every(Boolean),
  XOR: arr => !!arr.reduce((p, c) => p ^ c, 0),
};

const logicalCalc = (arr, op) => ops[op](arr);


Худший ответ:
array[i+1]=true;
Вы массив бесконечно увеличиваете, вот оно и падает в  out of memory
Что за ад-то вообще с синтаксисом и т.д.
Не говоря уже про саму реализацию и оптимизированность в целом.
Вы что JS скриптов никогда не видели?
Вопрос: Нужно ли перед версткой загружать все шрифты в фотошоп?

Лучший ответ:
Желательно, но не обязательно

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

Лучший ответ:
Поспорю с Андреем.
2) Не храните все символы в одном шрифтовом файле, если у Вас мультиязычный сайт, то есть на сайте есть функционал, который позволяет сменить язык, то храните символы каждого "языка" в отдельных файлах. Это крайне просто.
Зачем так делать? Опять же повторюсь, если сайт мультиязычный, то нет смысла заставлять английского пользователя скачивать кириллические символы. Уменьшив файл в несколько раз вы ускорите загрузку шрифтовых файлов. Для этого в CSS есть директива unicode-range.
Например, для подключения кириллицы@font-face {
    font-display: swap;
    font-family: 'Lato';
    src: url('/fonts/lato-light/lato-light.cyrillic.woff2') format('woff2'), 
        url('/fonts/lato-light/lato-light.cyrillic.woff') format('woff');
    font-weight: 300;
    font-style: normal;
    unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116; // только кириллица
}
Как это работает? Браузер анализирует ваш DOM понимает какие символы используются на сайте и если есть совпадение, то шрифт закачивается, то есть в данном примере если на сайте есть кириллица, то lato-light.cyrillic.woff2 скачается и отрисуется, а шрифт lato-light.latin.woff2 даже не закачается.
Для разделения символов можно использовать инструмент fontmin, либо его gulp аналог

Худший ответ:
1. Храните шрифты во всех нужных форматах (woff, woff2 итд)
2. Используйте шрифты в которых есть символы для всех нужных языков.
Неплохим вариантом может быть использование Google Fonts
Вопрос: Интересный вопрос от Я! Как решить проблему неправильных монет?

Лучший ответ:
Предположим, что мы бросили n-1 монет и получили какое-то количество единиц (орлов). Бросаем следующую монету (n). Если выпадет ноль (решка), то количество единиц не изменится, и чётность останется той же. Если выпадет единица, то чётность изменится.
Poddn = Poddn-1*P0n + Pevenn-1*P1n
Pevenn = Pevenn-1*P0n + Poddn-1*P1n
Но, поскольку события Pevenn и Poddn образуют полный набор вариантов (либо чёт, либо нечет), то Pevenn + Poddn = 1.
Аналогично, P0n + P1n = 1.
Отсюда, Poddn = Poddn-1*(1-P1n) + (1-Poddn-1)*P1nvar Podd = 0;
var Peven = 1;
for (var i = 1; i <= 100; i++) {
  P1 = 1 / (2 * i + 1);
//  P0 = 1 - P1;
//  Po = Podd * P0 + Peven * P1;
//  Peven = Podd * P1 + Peven * P0;
//  Podd = Po;
// Всё, что выше, ужимается в
  Podd = Podd * (1 - P1) + (1 - Podd) * P1;
}
console.log(Podd);
// 0.49751243781094556

Худший ответ:
Орёлс, решкас... Стыдно-с лепить горбатого.from fractions import Fraction


def foo(n):
    a, b = Fraction(1), Fraction(0)
    for i in range(n * 2, 0, -2):
        a, b = (a * i + b) / (i + 1), (a + b * i) / (i + 1),
    return b


print(foo(1))
print(foo(100))Мое решение, рАвно как и ответ, претендуют на правильность, да-да-да )
Вопрос: Забудется ли язык программирования если на нем не писать целый год?

Лучший ответ:
А вам есть что забывать? Судя по вашим предыдущим вопросам, нет. Были нулём - нулём и останетесь.

Худший ответ:
3 раза брался) в 2006, 2013 и в 2019, недели достаточно, чтобы глаза к коду привыкли, пары недель достаточно чтобы основную часть знаний востановить при активном кодинге))
Вопрос: Лучше ли USB 3.1 чем SSD?

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

стоит ли ждать значительное прибавление производительности в играх?Нет.  Никак не повлияет.
К тому же SSD стоит не дороже чем флешка. Дешевые флешки вообще нет смысла применять для этой технологии. 
Технология устарела морально. Раньше когда  SSD на 120Гб стоил более 5тыс и в продаже его не найти,  еще  был какой-то смысл взять флешку  тысчи за две под эту технологию, ну чисто посмотреть как оно работает, и убедиться что никак.
Сейчас дешевле купить SSD за две тысячи и не возиться с технологиями технологиями которые уж десять лет как устарели и никому не нужны.

Это что касается диска.
А если у вас оперативки мало - никакие флешки и SSD вам не помогут. Память надо добавлять.

Худший ответ:
Купи памяти она же нынче дешёвая
Вопрос: Какую взять CMS для управления проектами?

Лучший ответ:
Откройте для себя мир продуктов Atlassian и не изобретайте велосипеды.

Худший ответ:
Trello?
Bitrix24 платный
Вопрос: В какой программе компилировать .с файлы для консоли?

Лучший ответ:
Вариант 1: www.mingw.org/wiki/HostedCrossCompilerHOWTO
Вариант 2: Для Windows 10 установить консоль Linux и в ней делать компиляцию (https://docs.microsoft.com/en-us/windows/wsl/insta... )
Вариант 3: Виртуальная машина VirtualBox c установленным Linux

Худший ответ:
стандартный gcc можетгуглите кросс-компиляция.
GCC это умеет
Вопрос: Работа после контракта, вне апворка это нарушение?

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

Худший ответ:
Через 2 года (если правила не изменили) после вашего знакомства через Upwork - можно.
Иначе - нарушение, караемое вечным баном.
Другой вопрос - а как узнают...
И еще одно соображение. Вне биржи - вы не защищены. Да, на комиссии экономите (хотя я думаю, тут же начнут прогибать по цене заказчики вас). Но не защищены.
Почему им это нужно - непонятно. Комиссии же вы платите. Тут им без разницы.
Может, хотят иметь лишний рычаг давления на вас.
Вопрос: Где взять стильную 3д карту?

Лучший ответ:
3D есть у MapBox, ну а стильность задизайните сами на свой вкус и тараканы.
https://docs.mapbox.com/mapbox-gl-js/example/3d-bu...

Худший ответ:
Это 2gis, маркеры вроде там и самому можно поставить, как и свои обьекты по слоям. 
https://2gis.ru/belgorod/firm/6474452745326629/36....
Вопрос: Как в WP разрешить чтение постов с другим статусом?

Лучший ответ:
Плагин не плагин, а регистрируется post_status в конечном итоге с помощью функции register_post_status. Как и многие другие функции WP, она принимает ряд аргументов, в том числе такие:public
(bool) (optional) Whether posts of this status should be shown in the front end of the site.
Default: falseinternal
(bool) (optional) Whether the status is for internal use only.
Default: falseprivate
(bool) (optional) Whether the posts of this status should be accessible by their urls.
Default: false
Эти аргументы определяют, будет ли доступен данный статус на фронтенде и будут ли генерироваться ЧПУ. Скорее всего плагин конфигурирует их как приватные, поэтому они недоступны. Есть 3 варианта (возможных):
1. В самом плагине есть возможность перенастроить эти свойства под себя.
2. Плагин предоставляет фильтр, с помощью которого можно изменить эти аргументы.
3. Менять эти аргументы напрямую в определении статусов, через глобальный доступ (фильтрами тут WordPress, увы, не радует): function make_archived_status_public()
{
	global $wp_post_statuses;

	// Меняем public на true
	$wp_post_statuses['archived']->public = true;

	// Повторяем для других аргументов, если нужно
	// ...
}
add_action( 'init', 'make_archived_status_public' );

Худший ответ:
Вопрос со ссылками решился подставлением в href echo str_replace("%object%", $post->post_name, get_post_permalink($post->ID, true));
Вопрос: Как лучше реализовать систему мониторинга HTTP ответов?

Лучший ответ:
Zabbix , там есть инструмент , так и называется Web monitoring, умеет код ответа проверять, умеет время ответа проверять, можно делать сложные сценарии.

Худший ответ:
Вообще непонятно зачем тебе /tmp и /archive задача вполне себе решается на базе той структуры что уже есть.
Тебе-же не надо хранить всю историю ответов от "рождества Христова"? Текущий response сравнивай на "лету".
Вопрос: Unity3D FPS Вопрос касательно ботов и их разложения на малекулы, и как это реализовать?

Лучший ответ:
если 3D модельки, то стоит сделал бы так ..
1. удаляем меш юнита
2. на мего месте спавним множество мелких мешей (штук 10 наверное сделал бы, хотя от масштабов юнита зависит) наполняя объём юнита
2. разбрасываем с использованием физики

Худший ответ:
Можно сделать систему частиц которые порождаются на поверхности модели. саму модель скрыть. Разлет частиц настроить по желанию :)
Для полноты картины можно еще и стартовый цвет частиц попробовать настраивать по цвету точки модели откуда где она родилась.
Вопрос: Как обосновать платеж на расчетный счет?

Лучший ответ:
Как займ.

Худший ответ:
на 24 рубля не попей пиваса и отправь уточнение по доходам
Вопрос: Коллективный блог: выбор CMS?

Лучший ответ:
Wordpress + допиливание под себя. Полностью готовое решение вряд ли найдете

Худший ответ:
Делайте лучше сразу по-человечески. На любом более или менее популярном PHP фреймворке реализовать не сложно.
Вопрос: Почему не работает AJAX при отправке POST?

Лучший ответ:
что бы был ответ, вероятно его надо отправить, хотя бы:echo $msg_box;
Ваш код ничего не выводит, ничего не возвращает, вообще ничего не делает. Отправляет почту и создает в пустоту переменные.

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

Лучший ответ:
Для примера codepen.

Создаем какой-нибудь проект или открываем новый. Например: https://codepen.io/aaroniker/pen/NWGZzXx

Внизу справа нажимаем Embed, настраиваем нужное отображение и копируем полученный код к себе на сайт.

Худший ответ:
Вот пример встраивания Python https://rustpython.github.io/demo/
Точно так же можно встроить практически все языки.
Вопрос: Как оставить :hover стиль элемента при наведении на пункты его вложенного списка?

Лучший ответ:
snippet
этого хотели ?

Худший ответ:
snippet
этого хотели ?
Вопрос: Как отсеивать повторяющиеся числа в Math.random?

Лучший ответ:
function getRandomSet(lo, hi, n) { // я привык к тому, что min и max - функции )))
    var res = new Set();
    while (res.size < n) res.add(Math.floor(Math.random() * (hi - lo + 1)) + lo);
    return res;
}

console.log(getRandomSet(0, 9, 5));

Худший ответ:
function getRandomSet(lo, hi, n) { // я привык к тому, что min и max - функции )))
    var res = new Set();
    while (res.size < n) res.add(Math.floor(Math.random() * (hi - lo + 1)) + lo);
    return res;
}

console.log(getRandomSet(0, 9, 5));
Вопрос: Как сделать по человечески корп сеть?

Лучший ответ:
Работает? Не трогай. Не работает — собираете требования/спецификации/ТЗ к сети и под эти требования делаете сеть.

Худший ответ:
Я бы не советовал заменять несколько свичей на один. Лучше пол офиса без интеренета, чем весь офис.
100мегабит это конечно жуткий архаизм, но если есть ip телефоны, то они всё равно скорость порежут.
в качестве шлюза посмотрите в сторону керио контрол. может там будет что-то интересное
Вопрос: Можно ли покрыть офис 2мя wifi роутерами?

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

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