Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Развитие во вебе?

Лучший ответ:
Фронтендер, не умеющий верстать - это оксюморон. 

Сейчас набегут, но вообще разделение на фронтендеров и верстальщиков - крайне бестолковая концепция. 
Фронтенд - это всё, что не бэкенд, просто кто-то (и их много) значительно лучше себя чувствует от того, что написал тудулист на Реакте - и ты уже не "какой-то верстальщик", а целый "фронтенд разработчик", знаний как не было, так и нет, зато у себя в голове ты уже чего-то добился. Ну и бонус - верстать можно и не учиться тогда, пусть какие-то верстальщики делают. Ну это отдельная тема. 

Насколько вёрстка важна? 
Максимально, ибо работает ваша отрисовка 0.1с или 0.2с, используете ли вы fetch, или axios, или даже XMLHttpRequest - это пользователю неинтересно (в очередной раз напоминаю, что сайты и приложения мы делаем для пользователей), бизнесу обычно тоже не особо интересно, а вот если вёрстка расползается, что-то где-то едет, становится недоступным, или простая страница верстается 30 часов, а потом ещё 20 тестируется и правится, а в итоге всё равно какое-то говно - это уже замечают все причастные.

Проблема в том, что одно без другого не существует. Если вы ждёте какого-то мифического "хорошего" уровня в вёрстке и этим оправдываете то, что не развиваетесь в JS - его не будет, и вы никогда не начнёте, ибо этот уровень нарабатывается годами и тоннами материала, который надо через себя пропустить. Я около 12 лет верстаю сайты и до сих пор что-то новое узнаю. Опыт растёт, технологии развиваются. 

HTML, CSS, JS - навыки, которые растут параллельно, если всё идёт правильно. 
Не в одинаковой пропорции, но одно без другого смысла не имеет. 

Так что если интересно - идите и занимайтесь уже сейчас, но не забывайте про то, что развиваться нужно всегда, везде, в том числе в смежных технологиях. Всегда можно лучше, быстрее, надёжнее и всё такое, вёрстка ли это, фреймворки ли и что бы то ни было ещё.

Худший ответ:
Нет, вообще пофиг. Сделай архитектуру стейта, Обновление с сервером, реши конфликты и все будет ок. Верстку падаваны сделают.
Вопрос: Как посадить многостраничный сайт на wordpress?

Лучший ответ:
 в документации я не нашел ответа

Вы очень плохо искали Theme Handbook


Худший ответ:
Здравствуйте, Дмитрий. 
Одно из простых решений — использовать шаблоны страниц. Чтобы создать новый шаблон страницы достаточно в теме создать новый php-файл и добавить в начале следующий код: <?php //Template Name: Название шаблона. Шаблон автоматически станет доступен для выбора при редактировании / создании страницы.

Таким образом можно создать шаблоны для всех разделов многостраничного сайта. По умолчанию в WordPress у страницы только 2 основных поля для заполнения Заголовок и Контент. Но с помощью плагина Advanced Custom Fields можно добавить дополнительные поля, чтобы удобно было управлять контентом для разных шаблонов.
Вопрос: Как или в каком редакторе делают такие фото?

Лучший ответ:
Это не сложно. Фото состоит из слоев.
Фоновый слой - получен из исходного изображения превращением в изображение с оттенками серого. Затем подмешивается нужный оттенок цвета (сине-зеленый).
Голова и руки каждого человека выделяются маской на исходном изображении. Накладываем маску на предыдущий фоновый слой.
Все.
GIMP, Krita, Photoshop и пр.

Худший ответ:
"Нельзя скопировать болид, имея на руках набор инструментов" - Порше.

В Фотошопе делают, после курса обучения и тренировок.
Вопрос: Как создать особых пользователей AD?

Лучший ответ:
это надо 2 разных organization unit в domain users and computers на сервере AD. Для каждой из них будет своя политика, где настроить согласно желаний
Пользователей после создания или текущих переместить в нужные organization unit, тогда они будут подчинятся этим политикам
Это принципиальная схема. В разных версиях Win Server подход может отличатся

Худший ответ:
непонятна цель данных махинаций, но в общем это реализуемо1-вид пользователи без пароля.
это любой отключенный пользователь. переносите такого пользователя в отдельный OU и политиками навешиваете что вам угодно. например, доступ куда-то.2-вид пользователи, у которых пароль соответствует требованиям сложности пароля.
это любой активный пользователь. по-умолчанию политика разрешает 8-значный пароль с обязательной заглавной и цифрой и обязательной сменой каждые 40 (или 42?) дней. политику можно изменить по вашему усмотрению. 
в последних версиях MS решили отказаться от обязательной смены пароля в виду нецелесообразности.
Вопрос: Какие интерфейсы (на внешнем HDD) совместимы с USB 2.0 Type A, USB 3.0 Type A или USB 3.1 Type-С (на ноуте)?

Лучший ответ:
Нужен внешний бокс для HDD 3.5, типа такого.
Важно помнить, что у HDD форм-фактора 3,5" используется питание +12В, поэтому запитать его от USB-порта не получится. Поэтому все боксы имеют отдельный адаптер для питания.  Этот бокс можно подключить к любому  USB-разъему, как 3.0 так и 2.0

Худший ответ:
Type A - это разъём на host устройстве. 
Type B - это разъём на guest устройстве.
На USB 2.0 не хватит питания.
На USB 3.1 C понадобится переходник.

В общем, вам нужен провод с USB a-b папа-папа 3.0
Для USB-C понадобится переходник с A-папа на C-папа 3.0

Ну и смотрите, какой именно type b у вас. Часто видел, что на внешних дисках стоит microusb 3.0 b
Вопрос: Как объявить переменные в winapi c++?

Лучший ответ:
Никакой разницы в винапи или в консоли - для объявления переменных - нет. Приводите СВОЙ код - скорее всего дело в МЕСТЕ объявления переменной

Худший ответ:
в том и вопрос где и как объявить, чтоб кнопка прибавляла +1
Вопрос: Практика для php новичка?

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

Худший ответ:
1. Запили интернет магазин по типу днс. С регистрацией и админкой, где можно добавить товар и отреагировать на заявки.

2. Когда можешь качественно запилить любой проект.

3. По желанию. Пробиться новичку сейчас не так уж и просто. Насчет фреймов: Laravel (попроще), Symfony(посложнее)

4. От 15000 рублей и до бесконечности. Более конкретные цифры ищи на сервисах по поиску работы.
Вопрос: Сколько длится обучение по SMM до первых денег?

Лучший ответ:
Сколько длится обучение по SMM до первых денег?
Ну смотрите.
Сначала ты ищешь курсы (день-два), потом записываешься. Есть разные - от 4-х недель до 3-х месяцев. Идёшь, учишься, допустим, два месяца. Потом экзамены и корочки, это плюс неделя. Потом идёшь в Макдональдс и примерно через три дня уже получаешь реальные деньги.
Итого: 3 дня, если сразу, 2,5 месяца, если тешить себя пустыми надеждами.

Худший ответ:
Если есть какая то определенная тема осваиваю примерно за неделю
Потом деньги идут
Вопрос: Почему ноут не видит hdd?

Лучший ответ:
Ноут пишет: Hard Drive - Not Installed

Ремонтник дословно: убунту с открытая, она портит..виндовс закрытая там нормально будет, я не знаю будет ли у вас пропадать диск..но бесплатно делать больше не будем
А я сразу сказала, что будет линукс. 

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

Худший ответ:
Отнесите ноут в нормальный сервисный центр.

Вопрос: какова вероятность, что manjaro виноват, поставлю Винду и будет нормально?
Эээээ(вот тут я немного завис)

Меня больше смущает, что после небольшой трясучки ноута работает.
Вопрос: Как в Vue-приложении сначала загрузить данные в $store, а уже потом рендерить шаблоны?

Лучший ответ:
const Foo = {
  template: `...`,
  beforeRouteEnter (to, from, next) {
    // вызывается до подтверждения пути, соответствующего этому компоненту.
    // НЕ ИМЕЕТ доступа к контексту экземпляра компонента `this`,
    // так как к моменту вызова экземпляр ещё не создан!
  },
  beforeRouteUpdate (to, from, next) {
    // вызывается когда маршрут, что рендерит этот компонент изменился,
    // но этот компонент будет повторно использован в новом маршруте.
    // Например, для маршрута с динамическими параметрами `/foo/:id`, когда мы
    // перемещаемся между `/foo/1` и `/foo/2`, экземпляр того же компонента `Foo`
    // будет использован повторно, и этот хук будет вызван когда это случится.
    // Также имеется доступ в `this` к экземпляру компонента.
  },
  beforeRouteLeave (to, from, next) {
    // вызывается перед переходом от пути, соответствующего текущему компоненту;
    // имеет доступ к контексту экземпляра компонента `this`.
  }
}

beforeRouteEnter (to, from, next) {
  next(vm => {
    // экземпляр компонента доступен как `vm`
  })
}

Источник

Худший ответ:
Покопался с роутером, как советовал Игорь , и решил задачу через глобальный хук beforeEach. Получилось кратко, красиво, и в одном месте. 
router/index.js
import store from '@/store'
import axios from 'axios'
...
router.beforeEach((to, from, next) => {
  if (!store.state.Data) {
    axios.post('https://site.ru/get_data').then(response => {
        store.dispatch('setData', response.data.Data)
        next()
  } else {
    next()
  }
})

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

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

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

Лучший ответ:
$array = array_filter($array, function($element) { 
    return $element['name'] !== "Иванов";
});
Также хочу отметить, что:
1. Массив из которого мы удаляем - не ассоциативный
2. Крайне желательно после подобной фильтрации сделать ключи массива последовательными, например так: $array = array_values($array). Это поможет избежать неожиданностей при json_encode, например ;)

Худший ответ:
Проходитесь по массиву, если находите ученика(доктора) с фамилией Иванов, удаляете его из массива по индексу.foreach ($array as $i => $doctor){
    if ($doctor['name']==='Иванов'){
        unset($array[$i]);
    }
}
var_dump($array);
Вопрос: Как сделать так, чтобы бот работал вне зависимости — включен комп, на котором писали код или нет?

Лучший ответ:
Это звучит как: можно ли разогреть еду, если выдернуть СВЧ печь из розетки?
Да, если только до комнатной температуры.

Худший ответ:
Очевидно, запускать бота не на своем компе, а на VDS.
Вопрос: Изучать Python дальше или выбрать что-то другое?

Лучший ответ:
Всё верно, выбери что-то другое. Макдак, например.

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

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

Худший ответ:
У юзеров и так нет кнопки "Завершить работу", только сеанс. А так: AppLocker, права на диски и папки в основном настраиваю. По умолчанию у обычных юзеров и так многие права сильно ограничены, ещё сильнее ограничивают под какие-то специфические задачи или в случае обострения паранойи у СБ) В общем, сложно дать какой-то универсальный ответ, если рассматривается терминальный сервер сферический в вакууме.
Вопрос: Windows (без AD и понижения прав) — как запретить пользователям удалять софт?

Лучший ответ:
А почему Вы не хотите посмотреть в сторону SQUID или его аналогов? Устанавливать на клиентские машины ничего не надо = удалять нечего))) Возможна блокировка интернет ресурсов и пользователей....

Худший ответ:
Только мониторинг. Если хост в сети, а контроль трафика не осуществляется - значит его удалили. Подойти, прописать оплеуху, установить софт.
Ну или контролировать траффик централизованно на gateway/proxy
Вопрос: Правильно ли я понимаю, как отработает индекс?

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

т.е. where country = ?? использовать индекс не будет вообще, а where country = ?? and entityId = ?? будет использовать только первую часть составного индекса (по ентитиИд).

Худший ответ:
Все что нужно - это выполнить запросы с EXPLAIN, он тебе покажет 100% информацию используется индекс или нет. И сразу нет необходимости гадать о правильности понимания.
www.mysql.ru/docs/man/EXPLAIN.html
Вопрос: Как использовать общий файл JS на разных страницах сайта?

Лучший ответ:
Добавь проверки в код, let some = document. querySelector(".something");
if(some) {
   some.addEventListener("click",dosomething,true);
}
Но конечно же правильно подключать различающийся код на каждой странице отдельно

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

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

Лучший ответ:
А смысл мучиться, ведь не имя домена делает контент, а вовсе наоборот.

Худший ответ:
Может, я накосячил, или еще чет.
Добавил сайт в гугл/яндекс, домен в зоне .cc, так моего сайта до сих пор нет в индексации
Вопрос: Где практически применить язык Си?

Лучший ответ:
На языке C можно программировать вообще всё. Соответственно "простой обыватель" может написать то, что ему нужно.

Худший ответ:
На C написан Linux, FreeRTOS. 
Так же на C пишут DLL-ки под Windows, драйвера.
То есть C - это язык системного программирования. Там, где важна близость к ассемблеру и не требуется ООП.
Дело в том, что C++ в среднем выдаёт в 2.5 раза больший по размеру бинарник, в сравнении с C. 
На С++ можно конечно создавать и практически чисто ассемблерный по компактности код, но до такого уровня владения C++ расти - лично я научился примерно за 15 лет программирования на C++.
Вопрос: Насколько защищены файлы Cookie от кражи?

Лучший ответ:
Нинасколько не защищены. Любой стиллер, даже за 10$ имеет функцию стыривания кукисов.

Не совсем понятно зачем такие костыли с ключом из кода, который придет на почту. Разве нельзя просто генерить рандомные байты соответствующей функция в php?

Необратимое шифрование - это не шифрование, а хеширование.

Зачем лочить акк из-за 10 неверных кодов? Тогда любой школьник, чухнувший это сможет забанить любой акк на твоем сайте. Как этого избежать? 1. Не давать информации о том зареган ли юзер с таким мылом или нет. 2. Вешать капчу на ввод кода. Это практически полностью защищает от автоподбора. А лучше делать код не только из 6 цифр. Можно увеличить его длину. Хотя бы до 8 цифр. А еще лучше писать туда и буквы тоже.

Чтобы избежать кражу кукисов нужно сделать пару простых вещей. 
1. Начать использовать хотя бы самописное подобие нормальной системы токенов. Посмотри на JWT. Там есть refresh и access токен. Время жизни access токена нужно ставить небольшое. Лучше чтобы это было не более 5 минут. Так как логи со стиллеров и прочей дряни чекаются не сразу.
2. Хранить токены не только в куки. Есть еще и localstorage. Но тут уже кто на что горазд. Кто-то делает не 2 токена, а 3 или больше. Рассмотрим пример с 4 токенами. 2 токена на refresh и 2 токена на access. Один из пары храниться в куки на httponly, а второй токен хранится в localstorage. При операциях предъявляются оба токена. Таким образом стыриванием только куков злоумышленник ничего не добьется. А так же желательно смотреть не только на токены, но еще и на другие детали. Например, user-agent и IP-адрес. Резкая смена того и другого в одной сессии довольно странно. Да, это легко обходится, но не в каждом вредоносном ПО такое предусмотренно. Не каждый рядовой ратник способен организовать какое-то подобие прокси через комп жертвы.

Вообще эта тема довольно непростая и лучше придерживаться то, что уже было придумано и успешно используется.
Почитай про JWT. Можешь посмотреть вот это https://deworker.pro/edu/series/http-basics/authen...
Также можно использовать уже готовые решения в фреймворках на твоем языке.

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

Лучший ответ:
Не поняла почему при объявлении массива ты указываешь его размер как [size-1][size-1], тебе нужен массив 6x6  или 7x7? В моем примере будет 7x7. В качестве переменных String не нужен, тебе же всего один символ нужен, поэтому лучше использовать сhar
Заполняем:
char[][] array = new char[size][size];
        char tic = 'x';
        for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array.length; j++) {
                if (j == i || j == array.length - 1 - i)
                    array[i][j] = tic;
            }
        }

Выводим на экран в виде матрицы:
for (int i = 0; i < array.length; i++) {
            for (int j = 0; j < array[i].length; j++) {
                System.out.print(array[i][j] + " ");
            }
            System.out.println();
        }

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

public void fillX(String[][] array) {
  for (int i=1; i<size; i++) {
    array[i][i] = "x" // главная диагональ
    array[i][size-i] = "x" // побочная диагональ
  }
}
Привыкай использовать методы, пригодится уже довольно скоро.

С выводом все просто: используем во вложенном цикле print, чтобы не было перехода на новую строку, и println без параметров для начала новой строки во внешнем цикле.  
Я намеренно не пишу код, а описываю его словами, чтобы у тебя была возможность написать самому и потренироваться.
Вопрос: Попытки авторизации PPTP из интернета, как закрыть?

Лучший ответ:
На роутере открыт доступ через pptp для нескольких человек, для работы из дома.
Периодически проскакивают в логах сообщения о том что установлено tcp соединение с такого-то адреса, и начинается перебор стандартных логинов. Скрин лога ниже. Хотелось бы как то прикрыть эту дыру, есть ли способы?Так вы же сами открыли всем доступ.
Решение:
0)реализация fail2ban на основе адрес листов (3 попытки, если не успешно - бан на время)
1)сложные пароли
2)белые списки ip адресов с которых можно подключаться (если адреса не статические, то остаётся только вариант 1)
3)все предыдущие варианта вместе

Худший ответ:
Попробуйте разобраться в этом примере и сделать аналогично, но для PPTP
https://www.ekzorchik.ru/2018/03/i-disassemble-the...
Вопрос: Как получить все элементы с определенным id и применить к ним какую либо функцию?

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

Худший ответ:
document.querySelectorAll('.slider-content_item').forEach((elem) => {
  elem.style .......... 
  // Вот здесь пишешь что тебе нужно сделать, elem это текущий итерируемый элемент, forEach работает как обычный цикл.
});
querySelectorAll найдет все элементы с классом slider-content_item и сделает массив, потом форЫчем можно применять ко всем этим элементам стиль.
Можешь задавать любые вопросы - отвечу.
Вопрос: Как ограничить доступ к api сайта?

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

Худший ответ:
Мы в апи подписывает запрос. И проверяем, кто нам шлет запросы.
Ключ, подпись, данные. И на стороне апи проверяем сходится ли подписанные данные. Если да, то пускаем пользователя.
Если нет, редирект.
Вопрос: Чем запуск горутины отличается от запуска функции?

Лучший ответ:
Потому-что горутина запускается в новом "потоке" приложения и главный поток не блокируется.
Чтобы дождаться завершения работы всех горутин, нужно использовать sync.WaitGroup
https://gobyexample.com/waitgroups
https://golang.org/pkg/sync/#example_WaitGroup

Худший ответ:
Выполнение потока (работа функции, вызвавшей горутину) прерывается независимо от срабатывания горутины. Грубо: успела горутина отработать - молодец, не успела - не судьба.
В отличии от функции - завершение которой поток обязательно дождётся.
Чтобы приравнять в этом смысле горутину к функции, надо вместе с горутиной либо указать хорошую задержку выполнения потока (что не даёт гарантии выполнения ВСЕХ горутин, тут как со временем угадаешь); либо использовать sync.WaitGroup (тогда горутины гарантировано отработают - как функции).
Верно?
Вопрос: Как в созданный массив сделать push из query?

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

Худший ответ:
Если вы пытаетесь обратиться к admins до момента завершения connection.query , вы получаете пустой массив, потому что в момент обращения к admins - admins еще пустой.
как выполняется ваш код :
выводится  console.log(1);
начинается выполнение connection.query..... (оно асинхронно)
выводится  console.log(2); connection.query. еще не завершился....
выводится console.log(admins); он пуст ибо, connection.query. еще не завершился....
выводится  console.log(3); connection.query. еще не завершился....
выводится "query is finished!" - выполнение connection.query завершено 
console.log(admins) - вернет полученные данные - выполнение connection.query завершено и admins наполнен данными console.log(1);
connection.query('SELECT name FROM admin',(error, result, fields) => {
  for(var i = 0; i < result.length; i++){
    admins.push(result[i].name);
  
  }
  console.log('query is finished!');
  console.log(admins); // здесь данные доступны
});
console.log(2);
console.log(admins); // здесь данные еще НЕ доступны
console.log(3);
Вопрос: Если функциональный компонент получает данные с сервера в useEffect(), будет ли он чистой функцией?

Лучший ответ:
при одинаковых входных данных (пропсах или данных, полученных через api, например) рендер не будет отличаться? не будет. значит, фк будет считаться чистой функцией, потому его можно и мемоизировать (здесь стоит упомянуть, что, если в компоненте переопределяется state, то react на memo обертку не обратит внимания и всё равно перерендерит)

Худший ответ:
Нет, не будет. Функциональный компонент будет чистой функцией только в случае, когда он рендерит пропсы и больше ничего не делает
Вопрос: Минусы сборки хуанан материнок 2011+ х2 zeon?

Лучший ответ:
Они не игровые, в играх главное тактовая частота на ядро, тут xeon'ы проигрывают.
Плюс игры не умеют в многоядерность.
В общей, не стоит игра свеч.и пару радеонов 570 вместо одного
или х2 gtx 1070?
Это не даст никакого выигрыша, проще взять 1 карту на поколение старше, чем 2 младшего.

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