pavki/hr_qa_sbs_best_bad huggingface dataset:
Вопрос: Как определить высоту браузера по body и html?

Лучший ответ: в современных браузерах вьюпорт можно померить window.innerHeight.

а вообще может ето пригодится 

document.documentElement.[scrollHeight,clientHeight,offsetHeight]
document.body.[scrollHeight,clientHeight,offsetHeight]
window.[inner,outer][Height,Width]

Худший ответ: Тут написано. Добавить особо то и нечего =)
И я бы немного изменил код:
1. Не стоит высчитывать долю в каждой проверке, лучше сохранить ее в переменной и ею уже оперировать.
2. Будет более читабельно, если использовать else if/**
 * Определяет позицию скролла по отношению к высоте полоски скролла.
 * @return {Number} 
 */
function getScrollPosition() {
	var scrollHeight = document.documentElement.scrollHeight;
	var scrollTop = window.pageYOffset || document.documentElement.scrollTop;

	return Math.round(scrollTop/scrollHeight);
};

function scrollfunction() {
	var body = document.body;
	var scrollPosition = getScrollPosition();

	if (scrollPosition < 0.07) {
		body.className = "white";
	} else if (scrollPosition < 0.20) {
		body.className = "red";
	} else if (scrollPosition < 0.30) {
		body.className = "violet";
	} else if (scrollPosition < 0.45) {
		body.className = "blue";
	} else if (scrollPosition < 0.60) {
		body.className = "green";
	} else if (scrollPosition < 0.75) {
		body.className = "orange";
	} else if (scrollPosition < 0.96) {
		body.className = "asphalt";
	};
};
Вопрос: Процессор на 478 сокет

Лучший ответ: Новый компютер.

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

Лучший ответ: import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

public class Application {

	public static void main(String[] args) {
		Map<Character, Integer> letters = new HashMap<Character, Integer>();

		ArrayList<Character> fakeArray = new ArrayList<Character>();
		fakeArray.add('a');
		fakeArray.add('a');
		fakeArray.add('a');
		fakeArray.add('b');
		fakeArray.add('b');
		fakeArray.add('c');
		fakeArray.add('c');
		fakeArray.add('c');
		fakeArray.add('w');
		fakeArray.add('w');
		fakeArray.add('w');
		fakeArray.add('w');
		fakeArray.add('g');

		for (int i = 0; i < fakeArray.size(); i++) {
			Character tempChar = fakeArray.get(i);

			if (!letters.containsKey(tempChar)) {
				letters.put(tempChar, 1);
			} else {
				letters.put(tempChar, letters.get(tempChar) + 1);
			}
		}

		for (Map.Entry<Character, Integer> entry : letters.entrySet()) {
			System.out.println("Буква = " + entry.getKey() + ", Повторений = " + entry.getValue());
		}

	}
}
И вот что выводит в консоль, когда скрипт отработал.Буква = w, Повторений = 4
Буква = g, Повторений = 1
Буква = b, Повторений = 2
Буква = c, Повторений = 3
Буква = a, Повторений = 3
Наверно можно лучше, сейчас бошка не варит сорри. Но задачу решает, копайте в эту сторону.

Худший ответ: Если возможных вариантов для элементов немного (например как в вашем примере char 256 возможных символов) , то за один проход можно посчитать количество вхождений каждого варианта. Иначе используйте map для этого.
Вопрос: Удаленная работа, как обезопасить себя?

Лучший ответ: Я сейчас скажу наверно очень спорную вещь, но я ее скажу: У меня на fl репутация 0. Больше того - я специально прошу теперь работодателей не оставлять отзывы. Я никогда не показываю какие-то работы до того как получу принципиальное согласие на работу. Т.е. подтверждение что человек согласен на цену и условия.
Все почему - года три назад я заметил, что работодатели делятся на две категории - одним шашечки, а другим ехать. Точнее заметил я это сразу, но вот три года назад сделал такое наблюдение: среди тех кому нужны отзывы/сертификаты/портфолио есть представители и той и другой категории. А вот среди тех кому на все это плевать только те которым ехать. Они не будут заниматься пикселхантингом, от них не будет пустых придирок лишь бы не платить деньги, пока никто из них меня не пытался кинуть. И у них всегда есть реальная работа.
Да, я теряю очень много нормальных заказчиков с таким подходом, но я одновременно не теряю время на всякую ерунду и могу заниматься только работой. Ну и меня не климатит потеря аккаунта ;)

Худший ответ: Я оч. давно работаю удаленно. Последний год так вообще сам на себя. Github очень даже хорошо, он нужен. Вакансии искал на hh.ru, теперь ищу резюме )) И там и там предложений много. Так же не забываем про ТМ ресурсы brainstorage.me ну и фрилансим. При хорошем пакете знаний, найти удаленную работу на 80-100к не проблема. (прим. hh.ru)
Уверенность в завтра - ну так вы когда устраиваетесь на работу/проект и т.д., обязательно должны заключать договор, где прописаны обязанности сторон, финансовые вопросы и т.д. Только при таком подходе вы будите более менее уверенны в завтрашнем дне.
Вопрос: Как связать 2 asteriska?

Лучший ответ: Раз 5 прочитал так и не понял(((
А точно у провайдера 100.xxx.xxx.xxx серые? Эт какой провайдер на такое пойдет?

Худший ответ: Нарисовав схему и немного подумав, оказалось,что надо прописать статичный маршрут.
Вопрос: помощь с WPF

Лучший ответ: Свойство WindowStyle сделать none.

Худший ответ: Для Windows XP — установить WindowStyle в None
Для Vista/7 при WindowStyle=None останется достаточно толстый бордюр от Aero, тут нужно использовать WindowChrome из Microsoft.Windows.Shell.dll (входит в Ribbon).
Вопрос: Язык программирования и технологии для экономических (финансовых) продуктов?

Лучший ответ: Весь финансовый мир сидит на Яве -))

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

Лучший ответ: Вам поможет Цифровая Обработка Сигналов - она же DSP
Что вам нужно:
1. постоянно вести запись звука и выполнять операции выделения "гудка"
2. если гудок появляется, то DSP это покажет через резкое увеличение какого-то параметра - нп. амплитуды какой-то частоты.
Самое сложное - определить характеристику гудка - частоту(ы), минимальную длительность. Тип гудка не стандартизирован, но нужно проверять - возможно они чем-то похожи. Проанализировать сигнал можно в программе ru.wikipedia.org/wiki/Audacity
Из DSP процедур посмотрите в сторону FFT(БПФ) и алгоритма Герцеля (Goertzel algorithm)

Худший ответ: У нас на платформе это уже реализована в качестве стандартной функции. Посмотрите VoxImplant
Вопрос: Как идти в правильном направлении? Каков план?

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

Худший ответ: Там где верстка, знание JS обязательно.
Стили - через css в файлах.
Манипуляторы - через js.
Если не хотите верстать - пишите HTML5 приложения (там в основном js).
Вопрос: Как запретить масштабирование на веб-сайте?

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

Худший ответ: Есть возможность заставить сайт самому подгоняться под ширину Тут
А маштабировать сайт надо позволить.
Вопрос: Чем MongoDB лучше ElasticSearch?

Лучший ответ: Согласен с un1t и с lega, но есть пара замечаний:
 - elasticsearch: fulltext и комплексный поиск по проекциям (модель для чтения). как основное хранилище не очень советую, т.к. убить ноды это 2 случайных клика в веб морде.
 - mongodb: основное хранилище (модель для записи), гибкая структура данных, скорость записи.
Посмотрите на mms.mongodb.com - система деплоя, мониторинга и бэкапа mongodb.

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

Лучший ответ: Развернутый ответ на ваши вопросы не поместится в десятке толстых книг. 
1. Микросхемы (а точнее микроконтроллеры, микросхемы бывают очень разными) состоят из миллионов элементарных деталей таких как транзисторы, диоды, сопротивления. Эти детали могут объединяться в отдельные блоки, например триггер, счетчик, сумматор. Из этих блоков строятся более сложные, а  те в свою очередь в еще более сложные. В итоге микросхема может обрабатывать электрические сигналы по некоторой программе, которая хранится у нее в памяти. По большому счету они представляют из себя маленькие компьютеры.
2. Изготавливать микросхемы в домашних условиях практически невозможно. Однако можно пользоваться готовыми (easyelectronics.ru отличный сайт на эту тему).
3. Для создания систем "умного дома", проигрывания музыки, видео обычно используют практически полноценные миниатюрные компьютеры, например Raspbery pi. На эту тему тоже можно найти очень много информации в google.

Худший ответ: ну я думаю вам сюда www.bmstu.ru
Вопрос: Нужно ли использовать префиксы к именам переменных и классов?

Лучший ответ: В java так не принято. Обычно просто название класса или интерфейса.
Т.е. просто ClassName независимо от того интерфейс это или класс.
переменные просто someVariable без префиксов и т.п.

Худший ответ: Почитайте рекомендации по стилю кода source.android.com/source/code-style.html#java-lan... . К классам префикс не нужен, к именам полей нужен.
Поля не static, не public начинаются c "m",
статические с "s",
константы - в верхнем регистре без префиксов,
остальные - как угодно начиная с буквы в нижнем регистре.
Вопрос: Bash как запросить права суперпользователя через GUI

Лучший ответ: В зависимости от системы.
Для убунту: gksudo command

Худший ответ: Есть ещё 
gksu command 
Оно, в принципе, позволяет запустить приложение от любого пользователя (задаётся опцией -u). А вообще оно нужно там, где у пользователя нет sudo, чтобы запустить приложение непосредственно от рута. Например, в дебиане судо из коробки нет. 
Но в убунте оно работать при этом не будет, т.к. из коробки в убунте у рута пустой пароль, а первый пользователь созданный при установке имеет sudo на всё.
Вопрос: Реально ли найти фриланс заказы, связанные с SQL разработкой без процедурных языков?

Лучший ответ: Фриланс точно нет. Я не знаю кто доверит свои базы кому то незнакомому. 
Только если устроитесь в компанию которая будет согласна, что Вы будите работать удаленно.
Если только в крупную компанию которая занимается фрилансом.  Но это по сути опять компания которая согласна на удаленную работу. 
Знаю случай когда как раз такому разработчику отчетов и ведения аналитической деятельности один известный банк разрешил работать дома. Но он в банке в должности около 5 лет проработал. И очень хорошо себя зарекомендовал. А когда нужно было уезжать по семейным обстоятельствам в другой город, банк решил ему предложить работать удаленно.

Худший ответ: Здравствуйте,
очень удачно нашел ваш вопрос,
необходимы услуги даного рода.
Свяжитесь со мной пожалуйста.
Спасибо!
Вопрос: Какой лучший сервис комментариев для WP?

Лучший ответ: disqus хороший и бесплатный. Но он ломает рейтинги товаров для Woocommerce. Если нет вуукомерс - то все норм.

Худший ответ: Так же можете попробовать svkament
Вопрос: Философия Java какое издание прочесть для android?

Лучший ответ: если только для android то без разницы. 
Прочтите любую книгу которая даст вам основы и начинайте писать код)) чистый код и архитектура  это конечно хорошо, но практика нужнее.
Патерны вы должны знать но без опыта не разберетесь где их применять, по чистому коду и того проще:
Давайте всему осмысленные имена
Поля и классы в camelCase, константы в  under_score 
Старайтесь чтобы было не больше трех уровней вложенности кода, если больше выносите в отдельный метод
Каждый метод должен  выполнять одно действие 
Этого минимума хватит для начала работы и для того чтобы ваш код был читаем.

Худший ответ: Ну а в чем вопрос? Читайте в оригинале самое последнее издание.
Вопрос: Какие хорошие книги есть по алгоритмам??

Лучший ответ: это классика
еще есть видео
itvdn.com/ru/video/algorithms-and-data-structures
https://habrahabr.ru/company/abbyy/blog/251561/

Худший ответ: Дональд Кнут. "Искусство программирования" все 4 тома
Вопрос: В чем разница for и foreach?

Лучший ответ: foreach - с начала и до конца (обычно динамические массивы)
for - от заданного до заданного с шагом (обычно координаты или любые не динамические массивы)

Худший ответ: можно и тем и тем пользоваться.
Для перебора массива очень удобен foreach(); а в остальных случаях for(); //конечно могут быть и исключения, зависит от случая
Вопрос: Вытеснит ли ASP.NET платформу J2EE с ниши enterprise приложений за счет своей кроссплатформенности?

Лучший ответ: надо учитывать стоимость разработки, .net разработчики немного дешевле
так же стоит понять почему - не по тому что хуже, а по тому что их больше. не только самоучек, но и отличных профи
и этому есть тоже есть объективная причина - вхождения ниже + средства разработки лучше и доступнее
открытие сорцов и приход *nix - правильно и своевременно (и даже не факт что надо было раньше)
в связи с этим, я вспоминаю времена, когда все высмеивали windows против os/2 - кто помнит про полуось теперь?
потом был этап, когда все высмеивали выход windows NT в сектор офисных сетей супротив Novell - что стало с Novell? и в какие сроки? .. (кстати чертовски динамичная и поучительная история, стоит проследить вплоть до Open/Enterprise SUSE - кому тперь принадлежит львиная доля патентов этой linux оси)
MS наступает по всему фронту - подготовка кадров, инструментария, библиотек, стеков технологий (и ни где не аутсайдер) .... и теперь кроссплатформенность...
тут все просто - если МС не кончится (распадется из какой то мега ошибки) - то победит

Худший ответ: А что в asp.net есть такого чтобы все массово побросали свои наработки, готовые стабильные решения,  толпы сертифицированных специалистов и убежали с jee?
Вопрос: Windows Store, привязка приложения к аккаунту

Лучший ответ: Все верно, покупка привязывается к определенному аккаунту по умолчанию
После покупки или скачки бесплатного приложения, оно появляется в разделе «ваши приложения» в Store (appBar вызовите, чтобы перейти)
Покупка делается 1 раз (те если человек купил программу, то даже после переустановки Windows при входе в этот акаунт, он скачает это приложение бесплатно) покупку нельзя передать другому аккаунту.

Вам останется реализовать только проверку покупки, ну я бы еще LiveID при прохождении посылал себе на сервис, чтобы тот, кто прошел, не мог промо код отдать другому и для проверки двойного прохождения одни игроком со своего акка.

Худший ответ: ни чего привязывать не надо, все покупки и так привязаны к LiveID
Вопрос: На какой CMS лучше делать сайт для школы?

Лучший ответ: Делайте на той, которую лучше знаете.

Худший ответ: Совет: При выборе хостера, узнайте где территориально будет располагаться Ваш сайт, это очень важно! В связи в ступившим законом о хранении информации о пользователях РФ на территории РФ. Т.к. районное министерство образования или областное может запросить у Вас информацию о расположение сайта, которую Вам должен будет предоставить хостер. И в случае нахождения за пределами РФ его нужно перенести или удалить.
Вопрос: St2 + Emmet ( не работает)

Лучший ответ: ну для начала неплохо было бы открыть конфиг emmet-a для ST2 и найти там "expand_abbreviation", после чего удивиться, как это так - он по дефолту забинден на Ctrl+E

Худший ответ: Возможно таб перебивается другим плагином
Вопрос: Рекурсия при вызове метода в плагине для jQuery?

Лучший ответ: Мне кажется вы изначально что-то не так сделали. вам стоит подучить раздел JavaScript по поводу контекста функции.

jsfiddle.net/kpVJv/ — из любопытства набросал простенький пример слайдера в виде jQuery плагина (самый простой, ничего инетересного), но может быть вы чего найдете интересного.

Худший ответ: Скорее всего Вы вызываете метод как
methods.any();

А что если попробовать так?
methods.any.call(this);
Вопрос: MySQL и память

Лучший ответ: Возникает пара вопросов, кто вам настраивал MySQL и какой тип таблиц вы используете?

Всё же навскидку могу сказать, что память уходит скорее всего из-за скортировок по неключевым полям. MySQL выделяет память под сортировку на каждое соединение, по умолчанию 8 мегабайт, память выделяется как только приходит запрос с сортировкой, причем выделяется сразу вся порция внезависимости от того, надо вам 100кб под данную операцию или все 8 мегабайт.

Во время нагрузки посмотрите SHOW FULL PROCESSLIST.
По сложным запросам посмотрите EXPLAIN.

Несколько стратегий:
1. Добавлять ключи для выборок и сортировок, если это приемлимо и их еще нет.
2. Увеличивать шансы на попадание запросов в кеш MySQL.
3. Кешировать данные на уровне приложения.
4. Перенести некоторые операции на уровнь приложения.

Худший ответ: Много запросов?)
Вопрос: Выбор репозиториев CentOS/Debian?

Лучший ответ: Для Debian — Debian testing.

А для CentOS… К вам вопрос: зачем ставить CentOS или RHEL, подключать к нему кучу неофициальных репозиториев и пересобирать руками то, чего в этих репозиториях не оказалось. Какой профит от CentOS, кроме нестабильной системы из-за помойки пакетов, собранных разными людьми, вы получаете? Почему бы просто не установить Debian testing/unstable?

Худший ответ: netselect-apt, но вообще для актуальности, лучше пользоваться src, ./configure, make, make install.
Вопрос: Сколько стоит нормальный сервер?

Лучший ответ: Использовали под подобное www.hetzner.de

Худший ответ: В качестве саморекламы предлагаю попробовать Flops.ru. SSD диски, быстрый деплой сервера, бесплатная локалка, статистика/мониторинг/SMS уведомления, снимки состояния/клонирование. 7 Linux/Windows дистрибутивов на выбор. Триальный период 2 недели или 500 рублей.
На главной странице есть прайс и любая конфигурация, которую вы можете задать сами.
Вопрос: Как изменить количество колонок в сетке через @media screen?

Лучший ответ: jsfiddle.net/haaLwm4L/3
//вендорные префиксы сами расставьте.

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

Лучший ответ: Чувак, ты издеваешься?
Какие есть текстовые редакторы написанные на javascript с подсветкой синтаксиса?
Какие есть хорошие текстовые редакторы на javascript, похожие на jota+ text editor?

Худший ответ: Чем не устроил твой предыдущий вопрос и ответы на него?Какие есть текстовые редакторы написанные на javascript с подсветкой синтаксиса?
Вопрос: Как и куда добавить том в линуксе?

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

Худший ответ: У вас уже 4 primary раздела на диске. Удалите один, или создайте логический
Вопрос: Нужно придумать задачи для программирования?

Лучший ответ: Хм. Если вам настолько лень придумывать задачи, то можете понадёргать их с разных ресурсов, посвящённых теме. Откуда-нибудь с тимуса, codeforces или topcoder.
Поймите простую вещь — просто так новой, оригинальной идеей для задачи на олимпиаду по спортивному программированию никто не поделится. Гораздо выгоднее самому дать интересную задачу на какой-нибудь сайт с соревнованиями/олимпиаду от своего имени.

Худший ответ: Идея здесь банальна: смотреть готовые задачи и делать по аналогии (неплохой набор ссылок по теме в ответах на вопрос, верхний в правом блоке похожих).

Сложность задач должна соответствовать предполагаемому уровню участников (ошибка со степенью сложности заданий типична как для первого раза, так и вообще).

Если предполагаются не только задания на написание программ, то можно обратить внимание на олимпиаду, проводимую для школьников факультетом ВМК МГУ, и на вступительную олимпиаду МГУ.
Вопрос: Проблема с Wake On Lan. Как включить комп удаленно? Есть ли отдельное аппаратное решение?

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

Худший ответ: Есть вариант с розеткой с управлением через SNMP (такие например стоят в вычеслительных центрах). Надо только выставить в биосе чтобы комп включался при появлении электричества.
Вопрос: Как перенести заголовок из общего региона в одно из полей  в drupal 7 ?

Лучший ответ: нужно убрать заголовок из region--content--article.tpl.php и выводить его в шаблоне ноды в нужном месте

Худший ответ: Вариант: xandeadx.ru/blog/drupal/615
Вопрос: Android, SimpleXML, ProGuard?

Лучший ответ: Попробуй так:
-keep class com.simpleframework.** { *; }

Худший ответ: Вряд ли я буду сильно полезен, но имел дело с yGuard (у них возможностей и опций как мне известно поменьше чем у ProGuard) — там все подобные вещи настраиваются для отдельных пакэджей или классов. Или же глобально — например «не обфусцировать статические методы», «не обфусцировать имена методов» и т.д.

Примерно вот так выглядят настройки (прямо в билд-скрипте):
  <target name="obfuscate">
    <taskdef name="yguard" classpath="installer/obfuscate/yguard.jar"
         classname="com.yworks.yguard.YGuardTask" />

    <yguard>
      <inoutpair in="dist/guidesigner.jar" out="dist/guidesigner-sec.jar" />

      <externalclasses>
        <path refid="obfuscate-process-path" />
      </externalclasses>

      <rename mainclass="com.alee.designer.app.Designer" logfile="dist/obfuscation.log">
        <!--<property name="error-checking" value="pedantic"/>-->

        <keep>
          <class implements="com.alee.designer.NonObfuscable" fields="private" />
          <class name="com.alee.designer.app.dialogs.pixelgrabber.PixelGrabber"
              methods="public" />
          <class name="com.alee.designer.viewer.DesignerViewer" methods="public" />
        </keep>
      </rename>
    </yguard>

  </target>
Тут, конечно, не всё, но думаю общая идея должна быть ясна.

То что находится между «keep» — как раз исключаемые из обфускации вещи.
Мы немного схитрили, конечно — сделали отдельный интерфейс NonObfuscable — всё что его имплементит автоматически исключается из обфускации (по крайней мере имена методов и переменных) и позволяет в итоге пользоваться классами для сохранения данных в XML.

Надеюсь это хоть как-то Вам поможет.
Вопрос: Как лучше сделать резиновую верстку 960-1200px?

Лучший ответ: По большому счёту адаптивная вёрстка это несколько версий CSS в одном файле под каждое нужное разрешение экрана. Только за место дублировать один и тот же код по нескольку раз, мы пишем какой-то основной код (к примеру под FullHD разрешения), а уже в таких конструкциях@media only screen and (max-width: 480px) {
}
указываем только то, что нам нужно на каком-то разрешении поменять.
Пример:body {
    background: red;
}

.responsive-bloks {
    width: 33.33%;
    min-height: 1px;
    float: left;
}

@media only screen and (max-width: 480px) {
    body {
        background: blue;
        color: green; /* Обратите внимание что я не переписываю для другого разрешения все стили, а только меняю или добавляю то, что мне нужно что бы изменялось.  */
    }

    .responsive-bloks {
        width: 50%; /* Обратите внимание что я не переписываю для другого разрешения все стили, а только меняю или добавляю то, что мне нужно что бы изменялось.  */
    }
}

Худший ответ: пишишьbody {
  min-width: 960px;
  max-width: 1200px;
   margin: 0 auto;
}
header {
  width: 100%;
}
.logo {
 margin: 0 auto;
 width: 80%;
}
.mainMenu {
 width: 60%; 
}
То бишь, указываешь ширину блоков и элементов в %, и при необходимости, ограничиваешь максимальную, и минимальную ширину. Если использовать бутстрап, то в настраеваешь его под данные размеры. Но я бы не стал использовать сетку бутсраповскую, если адаптивность не так важна.