pavki/hr_qa_sbs_best_bad huggingface dataset:
Вопрос: Какую книжку выбрать для изучения JS?

Лучший ответ: Не принципиально, у меня Фленаган и еще пару. Всеравно понятно станет раза с 3его только.

Худший ответ: Флэнаган - хорош как книжка, которая всегда под рукой. Еще порекомендую вот эти посмотреть: https://github.com/azat-io/you-dont-know-js-ru 
Начинать с «Начните и Совершенствуйтесь».  В этой серии неплохо описано про области видимости и замыкания. Ну, и Кантора - каждый день на ночь;)
Вопрос: Как правильно настроить обработку больших текстовых файлов на сервере, используя php?

Лучший ответ: Какие есть решения?
Да всё в принципе просто: не нужно загонять содержимое всего файла в оперативку, его можно считывать небольшими блоками.

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

Лучший ответ: Можно использовать acronis true image или аналогичное ПО для бекапа, но я бы рекомендовал поставить ОС с нуля и перенести данные средствами scp.

Худший ответ: я мучал tar-ом. Ставил виртуалку в файл 8Г, быстро стало не хватать. А делать scsi древний ПК (кучка дисков по 4Г) не получилось. 
livecd: 
tar -cf -p --preserve-permisions --acls --xattrs sda1.tar /mnt/sda1
....
livecd 
cd /mnt/sdb1
tar -xf -p --preserve-permisions --acls --xattrs /storage/sda1.tar 
...
разумеется нужно будет разрешить лишний путь, 
mkdir /mnt/sdb1/mnt
mkdir /mnt/sdb1/mnt/sda1
mount /dev/sdb1 /mnt/sdb1/mnt/sda1
cd /mnt/sdb1
tar -xf...
(чтоб он дописал в папки. )
Так для всех дисков. 
Один диск все ровно лежит про запас (для автозамены если екнется другой).
На него делаете этот типа бэкап тар-ом.   
Запускаете рэйд. Распаковываете на него архивы.  
2. Лайв сиди. Настраиваете контролер. Монтируете рэйд. Подмонтируете свой старый диск.  dd if=/dev/sda of=/dev/sdb conv=noerro,sync ...
sda - старый диск. sdb - рэйдовский. 
Если программный, копируете диск на резервный, подымаете рэйд копируете на него диск.  
Но сам пока так не игрался. 
На счет фоном... Поставить диск в зеркало. И проверять фоном файловые системы. Наверное (не проверял) должен все что актуально откопировать на зеркальный. Потом радуга на терминалах, пока копируется в рейд. А если прям сразу зеркалом рейд ввернуть? Аппаратный для 500Г и програмное зеркало? гы гы как говорят студенты.
Вопрос: Как работает bot.edit_message_text в python telegram bot?

Лучший ответ: В методе edit_message_text надо указывать id чата chat_id и id сообщения message_id.
Попробуй так:bot.edit_message_text(chat_id=message.chat.id, message_id=message.message_id, text="тру-ту-ту", reply_markup=key )

Худший ответ: Решение нашла:
bot.edit_message_text работает только на изменение уже существующего сообщения, поэтому логично, что его стоит помещать только в @bot.callback_query_handler.
Вопрос: Как установить модуль python?

Лучший ответ: Потому что pyliblzma поддерживает только второй питон. И вообще, последнее обновление модуля было в 2010 году.
У питона есть встроенный модуль для этого https://docs.python.org/3/library/lzma.html

Худший ответ: Может заюзать easy_install?
Вопрос: В каких случаях вы не будете использовать ORM?

Лучший ответ: Когда есть сложные запросы с подзапросами и множественными джоинами, а так же не примитивной сортировкой

Худший ответ: Использую ORM пока хватает возможностей Spring Data Jpa.
Как только перестает хватать, то без ORM.
Вопрос: Кроме O'relly есть ещё хотя бы одно нормальное издательство?

Лучший ответ: Маннинг, Вильямс и фильтрованые индусы на Пакте

Худший ответ: Вот это неплохое
Вопрос: Doctrine ORM в чём разница между EntityManager->merge() и EntityManager->persist()?

Лучший ответ: Мерж здесь абсолютно не нужен. Тот кто его использовал в этом месте не имеет полного представления как работает доктрина.
Мерж может использоваться, когда сущность была задетачена, и ее снова нужно добавить как отслеживаемую в энтити менеджер. И да, это будет новый объект с новым spl object hash’ом

Худший ответ: в первом варианте, когда сущьность не найдена, и результат нулл, то надо создать новый объект и заперсистить его перед записью
И если запись уже найдена, просто обновить её ! т.е. смерджить.
и в конце отправка на запись в БД, т.е. собираеются все запроссы и одной большой пачкой отправляются на запись в БД. и указанные выше(в примере) и те которые были указаны в $em->persist(...) ранее !
В вашем примере оч хорошо показано, что обновление записи идет - замена даты создания/генерации
Вопрос: Как решить проблему со скриптом?

Лучший ответ: Наверное потому что res.send(results[0]);
results[0] - 1 элемент массива

Худший ответ: Я не понимаю почему оно вообще что-то выдает) Конекта к бд ведь нету, да и исходя из названия либы назад должны приходить промисы, было бы странно так называть либу и добавлять поддержку колбэков. Впрочем если таки работает, то тут два варианта почему одна, либо из-за results[0], то есть выдается первый элемент массива, либо results это курсор и тебе надо получить данные, затем его передвинуть дальше.
Вопрос: 'SELECT' как использовать результат запроса в if?

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

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

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

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

Лучший ответ: Если числа целые, неотрицательные и небольшие, то просто заведите второй массив, чтобы в нем считать, сколько раз каждое число встретилось. При увеличении счетчика сразу же проверяйте значение на максимум.
Как то так:maxval = -1;
maxcount=0;
for (i = 0; i < n; ++i) {
  ++counts[a[i]];
  if (counts[a[i]] > maxcount) {
    maxcount = counts[a[i]];
    maxval = a[i];
  }    
}
Если числа большие, то можно заменить массив counts[] на hash map.
Если ограничения по памяти серьезные, то придется отсортировать массив и в нем уже можно легко подсчитать сколько раз каждое число встречается.

Худший ответ: Можно через Stream, но без промежуточного collect не обойтисьStream.of(1, 1, 1, 3, 4, 5, 6, 4, 3, 2, 1, 3, 4, 1, 2, 3, 1, 2)
    // Собрать в Map, где ключ - число из массива, значение - кол-во этих чисел в массиве
    .collect(Collectors.groupingBy(Function.identity(), Collectors.counting()))
    // Отсортировать EntrySet по убыванию значений
    .entrySet()
    .stream()
    .sorted((e1, e2) -> Long.compare(e2.getValue(), e1.getValue()))
    // Взять первую (если есть) и вывести в консоль 
    .findFirst().ifPresent(e -> System.out.println(e.getKey() + " - " + e.getValue()));
Вопрос: При попытке компиляции появляется ошибка — Входная строка имела неверный формат,в чем проблема?

Лучший ответ: тут (проблема) с пробелами:Console.WriteLine("SC.color ={ 0},SC.ves ={ 1},SC.power ={ 2},SC.transmission ={ 3},SC.complete_drive{ 4}", SC.color, SC.ves, SC.power, SC.transmission, SC.complete_drive);
уберите пробелы:Console.WriteLine("SC.color ={0},SC.ves ={1},SC.power ={2},SC.transmission ={3},SC.complete_drive={4}", SC.color, SC.ves, SC.power, SC.transmission, SC.complete_drive);
(где { 0}, { 1} ... нужно {0}, {1})

Худший ответ: Так чисто, для информации. Visual Studio 2015 позволяет делать так:Console.WriteLine($"SC.color ={SC.color},SC.ves ={SC.ves},SC.power ={SC.power},SC.transmission ={SC.transmission},SC.complete_drive={SC.complete_drive}");
что, на мой взгляд, красивее и позволяет избежать подобных ошибок. Обратите внимание на знак $ перед строкой - это его магия. Так можно поступить с любой строкой, не только в Console.WriteLine.
Вопрос: Как быстро выучить Java?

Лучший ответ: Как быстро выучить Java?
Так же, как Нео в матрице: "Оператор, навыки вождения мотоцикла" или как там было.. Ну, ты понял суть. Так не бывает.

Худший ответ: Так же как и Вы был когда-то участником олимпиад.
так как на Олимпиаде больше всего интересует верное выполнение задачи, а не грамотное исполнение (как в реальной разработке, где нужно будет потом свою программу еще изменять), и учитывая, что Вам дано 4 языка - то условия задач на всех 4 будут одинаковыми и простыми.Курс.
Этого курса Вам хватит вполне для получения основ языка для выполнения примитивных задач, как на олимпиаде (врядли от Вас будет требоваться правильная архитектура приложения и т. п.)
Вопрос: Нейронная сеть на python — стоит ли браться?

Лучший ответ: Что за данные? – хотя бы примерно. Может, там в линейную модель укладывается (все точки кучкуются вокруг некой прямой).
Браться стоит – лучше, чем не браться )  Есть готовые библиотеки, есть онлайн курсы и короткие уроки. И именно по питону. Простейшую сеть для распознавания цифр написать – несколько строк кода (например, MNIST на Tensor Flow). Может, это и ваш случай.

Худший ответ: Нейронная сеть изначально - весьма примитивная структура.
Преподу - виднее.
Вопрос: Как из адресной строки вытащить из url нужное значение?

Лучший ответ: lmgtfy.com/?q=php+routing
Конкретные примеры:Symfony Routing (см. "placeholders")PhpLeague Route (см. "Wildcard Routes")Aura.Router
В вашем случае должен быть определён маршрут типа:/{city_name}/products (это на примере Symfony Routing, в других смысл радикально отличаться не будет)
Далее в случае попадания запроса на этот маршрут вы передаёте нужному контроллеру данные - в данном случае значение параметра city_name и там уже работает логика связанная с обработкой разных городов.

Худший ответ: Разобрался.
1. Определил url в адресной строке
2. Разбил url на массив и убрал у значений - "/" 
3. Определил номер ключа, который соответствует значению города - $city_name[2];  
( [2] - означает, что нужное мне значение является вторым по счету)
4. Используя str_replace из массива $custom_cities заменил полученное значение на необходимое и вывел его на странице.$url = $_SERVER['REQUEST_URI'];
$city_name = explode("/", $url);
$custom_cities = [
 // массив городов может быть и 100 и 200 городов и более
'domodedovo' => 'Домодедово',
'uzlovaya' => 'Узловой',
'rostov-na-donu' => 'Ростове-на-Дону'
];
 $text = $city_name[2];
echo ( str_replace(array_keys($custom_cities), array_values($custom_cities), $text) );
}
Вопрос: Как задать enable/disable для input text при помощи радиобаттона?

Лучший ответ: Вам нужно отслеживать изменения вообще всех этих кнопок. Внутри обработчика уже смотрите на значение выбранной кнопки $(this).val(), если 1 или 2, то поле заблокировано (prop disabled true), иначе разблокировано (prop disabled false). Если непонятно, то пришлю изменения уже. Пробуйте))
P.S. https://jsfiddle.net/2yv0cgpf/1/

Худший ответ: Можно обойтись без JavaScript: воспользоваться псевдоклассом :checked и возможностью указывать следующий тег через +,
То есть если имеем код <input type=checkbox id="other" value="other" /><label for="other">Другое</label>
<div><input type="text" name="other_value"/></div>
то можно прописать такой CSS:#other+label+div { display: none }
#other:checked+label+div { display: block }
Вопрос: Как получить содержимое body удалив все кроме h1, ul, li, p и img?

Лучший ответ: Можно попробовать:$html = strip_tags($myContent, '<h1><ul><li><p><img><iframe>');

Худший ответ: Построить DOM дерево и рекурсивно пройти по всем нодам в body.
Вопрос: С помощью каких инструментов/ЯП создаётся торговый робот?

Лучший ответ: Имею опыт написания торгового робота на MT4 с их MQL, поэтому конкретно по QUIK не могу ничего сказать. Однако, не думаю что большой проблемой будет реализовать торговую стратегию, которая нужна - на любом ЯП, а потом просто слать запросы к нему из торгового терминала через тот же QUIK. То есть для терминала вы пишите один метод который при получении пика передаёт инфу роботу, ждёт ответа и реагирует на него (делает или не делает ставку).

Худший ответ: Пишу на C# с использованием библиотеки transqconnector. На "встроенных" языках (типа Qpile) не пишу т.к. у них оранниченные возможности и со стаканом например они не могут работать. 
Ещё существует платформа Tradematic. Там C#, но там так же огранниченные возможности разработки.
Вопрос: Зачем нужен typescript если это тоже самое что и es6?

Лучший ответ: Многие пишут что typescript это тоже самое что и es2015(es6)
Между "многие" и "пишут" пропущено слово "идиоты".

Худший ответ: Два слова. Статическая типизация
Вопрос: Как правильно собирать js по БЭМ?

Лучший ответ: Пишите модулями, собирайте Webpack'ом
https://learn.javascript.ru/modules
https://habr.com/post/267639/
https://webpack.js.org/

Худший ответ: Есть же ENB для этих целей. И дока хорошая на офф сайте по сборке
Вопрос: Свойства в битриксе: малый бизнес?

Лучший ответ: https://youtu.be/uV0f18dN0us - в этом уроке рассказывается как разделить свойства в зависимости от разделов

Худший ответ: Для всех элементов одного инфоблока будет всегда один набор полей. Вам видимо товары придется по разным инфоблокам растаскивать. Либо хранить все свойства в одном ИБ и по мере надобности заполнять их.
Вопрос: Можно ли через bat файл изменить строки в текстовом файле?

Лучший ответ: Можно.

Худший ответ: В bat файле можно запустить любую внешнюю программу, например, sed какой-нибудь, который такую задачу замечательно решает, и вполне можно найти под win. 
Также можно написать какой-то скрипт на python или php, или другом языке, и его запустить из bat. =)
Вопрос: Циклическая перезагрузка рабочего стола?

Лучший ответ: - Во время загрузки зайти в безопасный режим (нажимаешь F8 и выбираешь "безопасный режим" / "safe mode")
- Затем идешь в журнал системы и смотришь ошибки
- Потом удаляешь лишний софт / переустанавливаешь драйвера / меняешь запчасти в пк
Более радикальный вариант, переустанавливаешь винду

Худший ответ: Есть подозрение на мёртвый explorer.exe после вирусов. Любой live CD с антивирусом, типа доктора веба, прогоните на заразу. Есть ещё один вариант, но он работает только с идентичными системами, копируете с любого работающего компа с той же ОС, разрядность и версию учитывать обязательно, в безопасном режиме explorer и переносите его на нерабочую машину. В 80% случаев этот способ рабочий. Ещё можно пошерстить реестр на предмет подмены значений.
Вопрос: Как правильно изучать / конспектировать книги по программированию?

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

Худший ответ: Лучше всего делать это в первой половине дня - когда голова лучше варит.
Садишься, читаешь и все замеченые ошибки/глупости аккуратно заносишь в общую тетрадь на 96 листов.
Когда она будет полностью заполнена - считай, ты постиг программирование.
Вопрос: Как реализовать данный функционал с помощью SVG?

Лучший ответ: Почитай как делают рукописный текст на SVG https://css-tricks.com/animate-calligraphy-with-svg/snippet

Худший ответ: я бы сегменты диаграммы делал stroke, без заливки - тогда можно спокойно применить манипуляции с stroke-dashoffset,  напрямую воздействуя на эти сегменты. 
В примере я дал им общий класс, и отдельные id, на случай, если нужны также манипуляции с конкретным сегментом по клику или hover какой то сслыки. Здесь hover по ссылке класса .line6-link воздействует через селектор + на следующий за ним сегмент с айдишником line6 - это просто пример, как видно, линк встроен в svg. Если в реальном проекте линки вынесены из svg, то воздействовать так просто не получится, надо будет скорее всего использовать js.snippet
Вопрос: Что случится, если при TCP-соединении у отправителей совпадут порт и IP?

Лучший ответ: 1) IP - высока вероятность (многие сидят за NATом)
Если вы о том, что в разных локальных сетях есть одинаковые ip, то нет такой вероятности. В соединении фигурирует белый ip.
Если о том, что с одного белого ip сидят несколько клиентов, то переходим к пункту 2.
2) вероятность встретить дубликат растет
не растёт. Множество портов конечно, если все порты будут исчерпаны не будет дубликатов, просто клиенту в соединении будет отказано (если вы о сервере).
Если о клиенте за NAT - NAT отображает внутренние порты на внешние. Соответственно маршрутизаторы отдают первый свободный внешний порт для нового соединения, и у двух клиентов попросту не может быть одинаковый внешний порт.

Худший ответ: Если один и тот же IP - значит это один и тот же хост - по другому IP сети не работают. 
Теоретически с одного хоста и с того же порта может быть второе подключение только в ситуации, когда клиент по какой-то причине отвалился (например комп ушел в ребут неожиданно) и при повторном подключении открыл тот же порт, а при этом сервер еще не успел разорвать прошлое соединение. В этом случае полученный SYN пакет на установку соединения вызовет ошибку на сервере, что-нибудь типа нарушение последовательности, и новое соединение установлено не будет.
Обычно клиент получит отлуп и попытается подключиться еще раз с другого порта.
А повисшее соединение на сервере отвалится по таймауту через какое-то вермя.
Ситуация достаточно специфическая, вполне возможная в жизни, но не думаю, что очень частая. И стандартные механизмы вполне нормально отработают ее.
Вопрос: Какие есть коллективные блоги по типу хабра, но для инженеров?

Лучший ответ: Инженеры обычно не кучкуются в одном месте
Сразу уходят на свои спец ресурсы
Русскоязычные с профилем електроники forum.easyelectronics.ru

Худший ответ: Строители сидят на dwg.ru
Вопрос: Как провести A/B тест разных страниц?

Лучший ответ: О каком "сервисе" вы говорите?
1) У вас есть две страницы оплаты
2) При первом заходе пользователя на сайт создаете для него куку и с вероятностью 0.5 ставите ему первую или вторую страницу.
3) Нужные действия записываете в базу, ведете статистику для двух страниц
4) Сравниваете показатели
5) Делаете выводы
Если лень возиться с несколькими страницами одновременно, то тестируйте по отдельности. 7 дней одну страницу и 7 дней вторую.

Худший ответ: Есть сервис Optimizely, из платных альтернатив - Visual Website Optimizer и Kameleoon
Вопрос: Как учить языки если ничего не выходит?

Лучший ответ: Сдается, что нет нормальных примеров, опыта маловато у тебя еще объять в целом логику всего.
Причины могут крыться в том, что алгебру то только недавно начал учить. 
В твоем возрасте сильно не скачи. Просто пока поверстай. HTML+CSS — просто управление блоками на страничке в браузере... постепенно поймешь зачем нужно динамически менять что-либо.... Не торопись за всем интернетом, во-первых никто не угонится за ним и всеми модами, во-вторых тебе бы на уроках сконцентрироваться, главное дела хорошо научись делать те, которые тебе дают... все получится...
Можешь развести родителей на репетитора, но такого, чтобы объяснил как оно работает обычным языком и на кой черт оно нужно.UPD 
Артём Гаврик 
Добавлю, тут обвчно просят не насиловать мелкими вопросами, но в твоем случае это только и нужно делать.Начни вот как:
- Поставь задачу, например "Хочу 2 блока чтобы рядом были!" 
- Попробуй сам сделать, 
- Не получится -- на форум. Пиши что делал и что хочешь
- Ответ получишь -- не останавливайся и попробуй уже самостоятельно сделать 3-4-5 блоков рядом. Это чтобы не привыкать к вопросам и самостоятельно разобраться...
и так по кирпичам...

Худший ответ: Тебе сначала стоило бы узнать что html, css к программированию не имеют ни какого отношения (совсем никакого).
Потом нужно научится писать программы (например по книге "Конкретная математика").
Так же ты должен понимать, что к программированию нужно иметь способности так же как к рисованию, сочинению музыки или написанию романов. Не факт что у тебя такие способности имеются
Вопрос: "Потянет" ли компьютер монитор 3440×1440?

Лучший ответ: Можно смело брать.

Худший ответ: Моя 970 без проблем кушает 5760х1080
Вопрос: Хватит ли блока питания на 400 ватт для gtx1070 и xeon2690?

Лучший ответ: Нет, конечно же.
Даже на 1060 - 700Вт минимум.
Вот интересно - люди готовы башлять вполне ничего себе суммы за видюхи, но их почему-то начинает прессовать земноводное, когда встает необходимость замены БП. А вообще говоря, хреновый БП может обеспечить Вас необходимостью покупать и новую видюху, и новый проц, и новую мать...Кроилово ведет к попадалову

Худший ответ: Нет
Вопрос: CSS vs JS — Какой код работает быстрее?

Лучший ответ: зависит от того будишь ли ты писать на нативном js ли ипользовать что. К примеру есть такая вещь как velocity js, он работает куда быстрее и плавнее нежели анимация jquery или css и нагрузка на fps куда меньше. На хабре даже была статья сейчас попробую найти

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

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

Худший ответ: На ваше усмотрение - хотите убирайте, чтобы не портить отношения с заказчиком, хотите нет.Если конечно  в договоре нет обязательств убрать.
Вопрос: Почему MySQL в виртуалке работает на порядок быстрее, чем на чистой ОС?

Лучший ответ: Потому что гипервизор кеширует дисковые операции виртуалки в памяти

Худший ответ: Провел третий тест: MySQL на Windows без виртуалки. БД разворачивается примерно за 1.5 минуты.
Вывод: ускорение на порядок обусловлено виртуализацией и хранение БД в оперативной памяти.
Вопрос: Как записать данные HTML инпута в php сессию?

Лучший ответ: Возьмем форму:<form method="get"> 
     <input type="text" name="add_group">
     <input type="submit" name="send">
</form>
Обработчик:session_start(); // Обязательно запускаем (возобновляем) сессию! Без этого работать не будет!

// Если кнопка была нажата
if (isset($_GET['send'])) {
     // Если инпут не пуст 
     if (!empty($_GET['foxy_add'])) {
          $_SESSION['foxy_add'] = $_GET['add_group'];
     }
}
// Эти 2 условия можно совместить, но я не стал этого делать для наглядности

Худший ответ: Сначала инициализировать сессию<?php
    if(isset($_GET['add_group'])) {
        session_start();
        $_SESSION['foxy_add'] = $_GET['add_group'];
    }
?>
Вопрос: Какой дистрибутив Linux хорошо поддерживает видеокарты?

Лучший ответ: Какая именно видеокарта вас интересует?
Со встроенной графикой Intel все +- норм, с Nvidia тоже (за исключением редких интегрированных чипов). Про Amd ничего хорошего сказать не могу. Насколько я помню, с ними всегда было тяжело. Дистрибутив - для начала попробуйте Ubuntu. Дальше уже сами определитесь методом проб и ошибок.

Худший ответ: ИМХО в Ubuntu больше всего дровишек.