Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как сконвертировать HTML в изображение при помощи PHP?

Лучший ответ:
wkhtmltopdf  и wkhtmltoimage - замечательные консольные либы написанные на Си, работают значительно быстрее чем другие аналогиHow do I use it?
    Download a precompiled binary or build from source
    Create your HTML document that you want to turn into a PDF (or image)

    Run your HTML document through the tool.
    For example, if I really like the treatment Google has done to their logo today and want to capture it forever as a PDF:

    wkhtmltopdf http://google.com google.pdf
https://wkhtmltopdf.org/usage/wkhtmltopdf.txt

Худший ответ:
В итоге использовал сервис https://www.s-shot.ru/
Вопрос: Как вводить массив бесконечно пока не нажмешь отмену?

Лучший ответ:
prompt возвращает строку, а при отмене null.. Можно воспользоваться рекурсией
function start() {
	let res = prompt("Введите значение", "");
	if(res !== null) {
		 alert(res);
		 start();
	}
}
start();

Если про массивы я правильно понял, то примерно так:
let arr = [];

function start() {
  let res = prompt("Введите значение", "");
  if (res !== null) {
    arr.push(res);
    alert(arr);
    return start();
  }
	arr.length = 0;
}
start();

Худший ответ:
что-то вроде такого?

const arr = [];

while(true) {
    let value = prompt("Введите значение");

    if(!value) {
      alert(arr);
      break;
    }

    arr.push(value);
}
Вопрос: Как лучше выполнить тестовое задание?

Лучший ответ:
Если вас просят купить в магазине буханку хлеба, зачем покупать пекарный завод?
Сверстайте страницу кросс-браузерно с мобильной версией и все. 
Многого не требуют, значение css, html - это база. 
п.с. для мобильной версии нужно делать не отдельную страницу, а такую, что при ресайзе страницы она превращалась в мобильную версию. Можете почитать в интернете, как это делать. Делается через media css

Худший ответ:
Думаю там нужно  только HTML и CSS. Вообще это можно уточнить у работодателя. Еще если у вас есть желание работать с react, а не просто верстать странички и (возможно) писать JQuery, то уточните, или они используют react и планируют ли в будующем.
Вопрос: Как блокировать рекламу?

Лучший ответ:
Проблема в том, что многие соединения идут через HTTPS, перехват которого не является тривиальной задачей. Поэтому по сути только два основных пути:1) Установка блокировщика на каждое устройство. Благо их у вас не так много. К слову, не всех раздражает реклама, так что вы можете поставить блокировщик себе, а остальным по желанию. С ноутом и компом очевидно - uBlock Origin. С планшетами решайте сами. На iOS себя хорошо показывает платный AdGuard Pro (убирает рекламу во всех приложениях).2) Фильтрация рекламы на уровне DNS. Сам роутер при этом у вас должен являться DNS. По идее он у вас и DHCP по совместительству, так что не проблема указывать самого себя сервером DNS во время раздачи настроек каждому устройству. Хорошее решение, по-моему, платный SkyDNS. Но можно также самостоятельно сделать (скачать и далее править самому) файл hosts, в котором бы было перечислено всё рекламное. Минус файла hosts в том, что нельзя задавать маску, так что для максимальной гибкости вам понадобится более умное решение - умный dns или firewall. Что вам удобнее и в чем вы разбираетесь (и сколько у вас лишних денег) я не знаю.

Худший ответ:
Можно поставить на ноут pi-hole или adguard home, а на роутере прописать его ip в качестве dns сервера.
Вопрос: Какую профессию выбрать для девятиклассника не знающего что такое IT?

Лучший ответ:
Человечек ничего не умеет и не очень хочет кроме как поступать в IT, но куда?
Пусть сам думает, не надо за таких что-либо решать.

Единственное скажу, что по итогам, успешное трудоустройство — это главное, иначе — это зря потраченное время. 
Как вы думаете, почему в школе люди получают разные оценки, хотя учатся у тех же преподавателей, по тем же учебникам, и даже сидят рядом на тех же уроках?

Никакое образование не дает знаний. Знания берет сам ученик, и если он их умеет брать, то неважно куда поступать, сам изучит нужные и интересные области. А если его просто отправить в лучший институт на факультет ИТ, и он там просто просидит 5 лет, так ничего и не хотя - естественно ничего не получится и никуда не устроится.

Как выбрать профессию, как проверить его способности и куда направить? 
Не существует в мире никаких способностей. Есть просто навыки, которые ты получил, занимаясь какими-то делами. Занимался в детстве конструкторами - возможно есть "способности" к работе руками, но их нужно развивать.
Много пел на вечеринках и пытался играть на гитаре - вполне возможно, что пойдя в музыкальную школу, обнаружишь "способности" к музыке, но которые надо развивать.

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

Поэтому мой совет - не лезьте в его жизнь. Если он хочет в ИТ - пусть научится пользоваться поиском - в инете СТОЛЬКО информации, что все можно узнать. И если он даже на это не готов потратить усилия, а хочет чтобы ему кто-то сразу все разжевал за него - то ему точно не в ИТ. Тут нужно уметь работать с большим количеством информации и уметь его фильтровать самостоятельно.

Худший ответ:
Дизайнер 3D-элементов. И IT, и раз у подопытного неплохие навыки работы с изображениями, может и сможет что-то красивое создать.
Вопрос: Хватит ли плагина google translate?

Лучший ответ:
К психологу, там рассказать эту историю, потом всё исправить и учить английский.

Худший ответ:
Можно ли вообще в IT выжить с подобным подходом?
Зависит от ваших стандартов.
Определитесь зачем вам английский. Минимальным стандартом в IT считается intermediate - уровень, при котором вы без труда читаете тех. литературу. Но нужно это, в первую очередь, вам, чтобы не возникали "очень сильная злость, раздражение". Статьи, книги, курсы далеко не всегда переведены и неспособность эффективно работать с оригиналом банально тормозит ваше развитие. Выжить можно? Думаю, можно. А когда заказчик будет из-за бугра, и нужен будет тех. специалист с ним побалакать, позовут Васю из-за соседнего стола, который вам в подметки не годится с технической стороны, но который может в инглиш. И его повысят, потому что проявил себя в разговоре с заказчиком. Можно с этим жить? Вполне. Осадочек будет, но от досады не умирали.
Короче, если думаете, что вам, все-таки, нужен английский, то поднять его до среднего уровня не сложно, это займет только пару месяцев умереных, но регулярных занятий. Первое, что вам надо сделать, это перестать искать виноватых. Это не поможет. Поможет анализ опыта и выявление проблем. А второе - составить нормальную, здоровую программу. Но это уже аут оф скоуп вашего вопроса.
Вопрос: Форма обратной связи на сайте где прописать email?

Лучший ответ:
1. для чистого html/css сделать что-то вроде:
<a href="mailto:xxx@yandex.ru?SUBJECT=email from yyy.ru">письмо / cont@ct</a> для отправки писем от почтового клиента посетителя
2. не забыть про спам-защиту почтового адреса xxx@yandex.ru
3. использовать внешние сервисы обработки форм на сайте через https://www.google.ru/intl/ru/forms/about/

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

Лучший ответ:
Это потому что вопрос криво написан.
Фактически вас спрашивают, сколько подсетей с указанной маской может быть в сети с классом, который надо определить по адресу.
То есть, 192.168.0.0 - это класс C, диапазон 192.168.0.0-192.168.255.255.
Следовательно, можно менять 16 битов, из которых 7 отсекаются маской /27.
Остаётся 9 битов, что даёт 29 = 512 подсетей.
Но, вообще, вопрос устаревший, поскольку от разбиения на классы отказались в 1993 году и применяют бесклассовую CIDR-адресацию.

Худший ответ:
Для примера на картинке:
количество хостов (маска с префисом /28) = 14: 32-28 = 4; 2^4 = 16-2(1 адрес сети и 1 широковещательный адрес) =  14 хостов на подсеть.
Количество подсетей: 16-4=12; 2^12 = 4096.

В случае 192.168.0.0/25: 32-25=7; 2^7=128 хостов, но фактически 126 хостов на подсеть т.к.  -1 на адрес сети и -1 на широковещательный адрес. Подсети: 16-7=9; 2^9=512 подсетей.
Вопрос: Есть ли возможность накатать абузу на сапорт Hetzner?

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

Худший ответ:
Есть возможность даже пожаловаться на Гугл! В саппорт гугла :DDD
Если Вы медийная персона, успешный политик, олигарх в конце концов - тогда может быть и удастся. На абузу обычного человека я думаю обратят не больше внимания, чем я на письмо нигерийского спамера...
Вопрос: Что учить в программировании чтобы потом не жалеть о выборе?

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

Худший ответ:
Ничего не учитеуже много всякого знаювам кажется
Там где никого нет - никто платить не будет
Вопрос: Как правильно работать с кодом в опенсорсе?

Лучший ответ:
А в чем сложность? Лицензия апачи не накладывает ограничения никакого на изменение исходного кода. Согласно лицензии вы должны проинформировать в исходнике о том, что данный код заимствован из такого-то проекта.

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

Лучший ответ:
Вот так делается перенаправление портов встроенным сетевым экраном aka брандмауэром:for /L %%i in (1, 1, 65535) do netsh interface portproxy add v4tov4 listenaddress=192.168.15.4 listenport=%%i connectaddress=192.168.2.9 connectport=%%i
(порты подставить свои)

Худший ответ:
Добрый день!
Так тут нужно настраивать маршрутизацию на сетевом оборудовании, чтобы принимало запросы из интернета на порт 1111, а транслировало в локальную сеть на 3333.
Такое могут делать 90% даже самых дешевых роутеров.
Вопрос: Windows 7 или 10?

Лучший ответ:
Windows 10, конечно же. Нет никакого смысла ставить семёрку - она сто лет назад вышла.

Худший ответ:
есть смысл под nvme
ох*еешь от скорости того же браузера

ну а так - да, ссд лучше хдд,
Вопрос: Как в gridview yii2 вывести вместо иконок glyphicon fontawesome?

Лучший ответ:
Вариантов тут несколько:
1. Создать свой класс ActionColumn и наследовать его от базового ActionColumn. В этом классе переопределить нужную реализацию. Как советует Дмитрий Дерепко 
2. Замена в одном месте. Если требуется заменить только в одном месте имеет смысл использовать решение  Дмитрий 
3. Сочетать всё это используя DI контейнер. Всегда рекомендую использовать такую глобальную подмену данных. Это более гибко. Для этого создаем Bootstrap класс с реализацией интерфейса \yii\base\BootstrapInterface. Подключаем его в автозагрузку приложения (bootstrap в config.php) и заменяем всё что нам нужно:$actionColumnSetting = [
            'buttons' => [
                'view' => function($name, $model, $key){
                    return Html::a('<i class="fas fa-eye" aria-hidden="true"></i>', ['update']);
                },
                'update' => function($name, $model, $key){
                    return Html::a('<i class="fas fa-pencil-alt" aria-hidden="true"></i>', ['update']);
                },
                'delete' => function($name, $model, $key){
                    return Html::a('<i class="fas fa-trash" aria-hidden="true"></i>', ['delete']);
                }
            ],
        ];
        \Yii::$container->set(ActionColumn::class, $actionColumnSetting);
Это удобно во всех случаях. Например, вы вдруг захотите во всех gridview использовать другие экшены редактирования. Заменить это будет просто. Необходимо  update переименовать в edit. Либо вам во всех gridview нужна дополнительная кнопка  "перенести Архив"$actionColumnSetting = [
            'buttons' => [
                'view' => function($name, $model, $key){
                    return Html::a('<i class="fas fa-eye" aria-hidden="true"></i>', ['edit']);
                },
                'update' => function($name, $model, $key){
                    return Html::a('<i class="fas fa-pencil-alt" aria-hidden="true"></i>', ['update']);
                },
                'delete' => function($name, $model, $key){
                    return Html::a('<i class="fas fa-trash" aria-hidden="true"></i>', ['delete']);
                },
  'archive' => function($name, $model, $key){
                    return Html::a('<i class="fas fa-trash" aria-hidden="true"></i>', ['archive']);
                }
            ],
        ];
        \Yii::$container->set(ActionColumn::class, $actionColumnSetting);

Худший ответ:
Переопределить ActionColumn и заменить 
glyphicon на fa 
https://github.com/yiisoft/yii2/blob/master/framew...
Вопрос: Можно ли провести for i in range() без i?

Лучший ответ:
Ненужные переменные в Python принято обозначать знаком подчёркивания _ (underscore):
for _ in range(...):
    ...

Худший ответ:
Помимо использования _ в качестве переменной значение которого неважно, можно использовать неявно.
Как пример: 
''.join(map(str, range(10)))
Явно переменная i не используется в генерации строки из последовательности цифр
Вопрос: Зачем при аутентификации используют логин с паролем вместо единственного пароля?

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

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

Во-вторых от пароля в БД хранится только хеш. И нет никакой возможности найти пользователя по хешу. Будете всю базу перебирать?
Вопрос: Объясните что такое метод __init__, как он работает, и что будет если его не вызывать?

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

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

Лучший ответ:
По паттернам рекомендую книгу Теплякова, очень умный мужик из Luxoft

По архитектуре:
https://metanit.com/sharp/mvc5/23.1.php
https://medium.com/swlh/building-a-nice-multi-laye...
https://www.codeproject.com/Articles/75082/Layers-...

Худший ответ:
Принципы, паттерны и методики гибкой разработки на языке C# | Мартин Роберт С., Мартин Мика (ссылка)
Вопрос: Скажите пожалуйста куда писать жалобы на работодателя?

Лучший ответ:
Никуда не можете. До заключения трудового договора наниматель ничего вам не должен.

Худший ответ:
Непонятно, по какому принципу вы хотите жаловаться? Работодатель не посмотрел GitHub? Или отказал? Или вообще они бяки? Просто забейте, нечего из мухи слона разводить. Как будто, если они сейчас вас примут, то вы обрадуетесь и работодатель тоже
Вопрос: Почему css срабатывает только при required в форме?

Лучший ответ:
Потому что оно так работает.
Следите JS'ом событие input и проверяйте, заполнено ли поле...Если заполнено, добавляете класс со стилями аналогичными focus и active

snippet

Худший ответ:
Потому что состояние валидности(valid) происходит только при required для текстовых полей. Спецификация.
Для полей tel, number, и других специфичных происходит проверка типа, потому там сработает. В тексте какая вам проверка-то, потому флаг required заставляет проверить 1+ символов на наличие, потому и работает. Сам на днях мучался... Мб попробовать pattern применить с регуляркой на любой символ
в принципе, если развернуть стили, к не required применить паттерн типа такого:`pattern="[*]{1,}"` и применить к `input[type="text']:not([required])` то тоже будет работать.
Вопрос: Как оцените верстку?

Лучший ответ:
может найдёте себе другое занятие? вёрстка это не ваше... тут нечего оценивать

Худший ответ:
Я не вижу никакой вёрстки. 90% страницы - это пустота. Грамматические ошибки - через слово. Город спрятан внизу - чтобы посетитель не сразу догадался, где находится фирма.
Вопрос: Как обработать ошибку v-img?

Лучший ответ:
Добавьте элементам currentPageItems булево свойство, которое будет информировать о наличии ошибки. Назначайте src в зависимости от значения этого свойства. Устанавливайте его в true при обработке события error.

https://jsfiddle.net/vuz756br/

Худший ответ:
v-if = "product.imageSrc"
или 
    class="mt-3 grey light-2" 
    :src="product.imageSrc ? `${hostname} + /uploads/images/goods/${product.imageSrc}` : `${hostname} + /uploads/images/nopic.png`"
     height="200px" 
     contain 
     position='center' 
  />
Вопрос: Какой язык программирования учить для создания бота?

Лучший ответ:
Любой: JavaScript, Python, C#, C++, Golang и т.д., какой хотите - такой и учите

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

Лучший ответ:
Достаточно легко доказать что пути будут лежать по общим касательным и дугам между точек касания для непроходимых сфер. Можно строить динамический граф и использовать A*.
C тормозящими кругами может быть сложнее. Если они не могут пересекаться с препятствиями, то их выгоднее обходить по дуге, которая не более чем в pi/2 (~1.5) длинее хорды.
Если могут, то если аналитическое решение найти трудно, я бы добавил несколько точек на границе медленных зон в граф и искал приближенное решение.
Про непроходимые круги: https://redblobgames.github.io/circular-obstacle-p...

Худший ответ:
- Окружности не постоянны, т.е. могут возникать или исчезать со временем
Возможны варианты что окружность может возникнуть вокруг персонажа, и он вообще не сможет двигаться?
Или группа окружностей создадут вокруг персонажа непроходимый контур?
Вопрос: Выдача двух IP-адресов одному ПК от одного DHCP-сервера на MikroTik — возможно ли?

Лучший ответ:
Адрес, выдаваемый по DHCP, выдаётся для определённого аппаратного (МАС) адреса.

Сетевой адаптер (что реальный, что виртуальный) имеет только один МАС - соответственно ему будет выделен только один IP.

Худший ответ:
микрот в данном случае просто dhcp сервер, сколько попросят столько и отдась. Копайте в компьютере, как ему запросить больше 1 адреса. 
вот только вопрос:  а смысл?
Вопрос: В чём разница между reselect и хуками useCallback и useMemo?

Лучший ответ:
Это очень разные вещи:

1. useCallback - мемоизирует саму функцию, а не ее результат
2. useMemo - мемоизирует результат функции
3. Reselect - это вообще редаксовская штука, мемоизирует результаты селектора, и выстраивает зависимости одного от другого, если результат зависимого селектора не обновился - реселект не будет пересчитывать селектор. кароче говоря оптимизация.

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

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

Лучший ответ:
Сверстать и запрограммировать. Можно скрытыми табами, можно на аяксе
Кстати, как на 3 картинке вернуться назад на вторую картинку?

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

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

Есть две противоположные стратегии.
(1) А что если на объекте пропадёт доступ в интернет? Мы останемся без записей. Нет, так не годится! Регистраторы ставим локально на каждом объекте, в комнате охраны (плюс монитор у охраны для просмотра), так чтобы запись всегда велась локально. Удалённо только просматриваем. Если связи не будет, то записи сможем посмотреть позже, либо приедем на объект и там посмотрим.
(2) На объекте нет охраны. А что если злоумышленник на объекте доберётся до регистратора и уничтожит все записи? Нет, так не годится! Регистраторы ставим удалённо, в защищённом помещении, записи будут в сохранности. Связь редко пропадает, а если пропадёт - быстрее едем на объект и разбираемся (даже ночью).

Можно комбинировать:
(3) У нас денег много (но охраны на объектах всё-таки нет), так что купим побольше оборудования, пусть запись ведётся и локально на объектах, и удалённо.

Худший ответ:
видеорегистратор отправляет данные на серверНет, видеорегистратор ~= сервер.
Обычно либо одно, либо другое. Видеорегистратор - более дешевое решение. Сервер ставят, когда камер много (больше 16), либо нужно хранить записи долго (год), либо требуется распознавание лиц, номеров и т.п., либо ещё какие-то особые требования. В простых случаях хватает регистратора (по сути тот же сервер, только маломощный, дешевый, легко настраиваемый).

Есть две противоположные стратегии.
(1) А что если на объекте пропадёт доступ в интернет? Мы останемся без записей. Нет, так не годится! Регистраторы ставим локально на каждом объекте, в комнате охраны (плюс монитор у охраны для просмотра), так чтобы запись всегда велась локально. Удалённо только просматриваем. Если связи не будет, то записи сможем посмотреть позже, либо приедем на объект и там посмотрим.
(2) На объекте нет охраны. А что если злоумышленник на объекте доберётся до регистратора и уничтожит все записи? Нет, так не годится! Регистраторы ставим удалённо, в защищённом помещении, записи будут в сохранности. Связь редко пропадает, а если пропадёт - быстрее едем на объект и разбираемся (даже ночью).

Можно комбинировать:
(3) У нас денег много (но охраны на объектах всё-таки нет), так что купим побольше оборудования, пусть запись ведётся и локально на объектах, и удалённо.
Вопрос: Есть ли смысл учить ruby в 2020 году?

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

Но я бы рекомендовал js или php.

Худший ответ:
Мне стабильно раз в неделю присылают вакансии по Ruby на средний оклад 200-200 тыщ рублей на руки (Москва, в основном удалёнка). Западные проекты — больше. Смысл определённо есть. Специалисты нужны. Но именно специалисты, а не вайтишники.

К сожалению, мой опыт показывает, что людям, спрашивающим какой язык им учить,  лучше не ходить в айти, без обид. Объясню почему.

Интересующийся языками обычно сам приходит к решению и выбирает подходящий ему язык и начинает на нём что-то делать никого не спрашивая. Сам вопрос понятен и в переводе читается "как бы так заскочить в айти, штоб сразу с порога платили 300к в секунду". Ответ — нужно хотя бы 10 лет опыта, а также тысячи бессонных ночей. Но способные на такое не задают такие вопросы.
Вопрос: Как мне подключить SSD 2.5 к ноутбуку?

Лучший ответ:
SATA to USB переходник или кейс для HDD. Варианта два.

Худший ответ:
Если есть место для CD привода, можно купить расширение для него и поставить туда SSD и запихнуть в корпус, вместо самого CD привода