Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как понять что программирование это твое?

Лучший ответ:
Вопрос, строго говоря, не имеет никакого отношения к программированию.
Чтобы эта проблема исчезла, вам нужно психологически повзрослеть. Потому что у вас имеется, по вашему описанию, совершенно детский набор реакций, который будет проявляться в любой области деятельности:
- стремление к немедленной гратификации (вознаграждению за любое проделанное действие);
- проблемы с концентрацией внимания на одной задаче длительное время;
- излишняя эмоциональность и раздражительность.
Любая работа - это не развлечение, это на 90% - нудная и часто - неприятна рутина. Потому удовлетворение нужно научиться находить в этих 10%. Нужно также понять, что все вокруг вас не существует ради вашего развлечения. И наоборот, если что-то вам не нравится, скучно, тяжело - это не "мир против вас", это естественная ситуация, с которой все должны уметь справляться, чтобы, в итоге, не жить в постоянном стрессе и не умереть в 40 лет от инфаркта.

Худший ответ:
Ответ прост, никак. Из доступных технологий разработки есть все, начиная со сложных алгоритмов и математических задач и заканчивая простым воображением. При этом весь спектр может быть использован в достаточно простом (на первый взгляд) проекте. 
По поводу языков, желательно знать все. Но начинать можно с любого языка, на данный момент в "трендах" JavaScript, как серверная часть, так и клиентская. Что проще дается, то и изучайте. Заказчик найдется на любой язык. Главное ваш первый язык изучить очень тщательно, ибо понимание основ любого языка даст вам ~70% знаний по любому другому языку, который вы захотите изучить позже.
Вопрос: Какой язык распространён для работы на фрилансе?

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

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

Лучший ответ:
Лучше сразу делать качественно с нейронными сетями.
Изучайте Python и НС. 
Применяйте нужные библиотеки и пишите код.
Пакет от NVIDIA: OpenSeq2Seqmachine translation (GNMT, Transformer, ConvS2S, …)
speech recognition (DeepSpeech2, Wave2Letter, Jasper, …)
speech commands (RN-50, Jasper)
speech synthesis (Tacotron2, WaveNet…)
language model (LSTM, …)
sentiment analysis (SST, IMDB, …)
image classification (ResNet-50)
Озвучка (TTS) : Tacotron 2
Лекции:Лекции 1Лекции 2
PS:
Синтез и перевод - разные вещи.
Синтез - это текст в звук. 
А перевод - это с одного разговорного языка на другой.

Худший ответ:
Почитайте исходный код файлов тут: https://github.com/Olga-Yakovleva/RHVoice
Вопрос: Как составить проверку?

Лучший ответ:
Потому что эта конструкция if name == ('Kirill') or ('Maks'): работает не так, как вам кажется. Она проверяет, что переменная name равна строке "Kirill" или строка "Maks" истинна. Так как непустая строка всегда истинна, ветка else никогда не будет выполняться. Судя по всему, вам нужно такое условие if name == 'Kirill' or name == 'Maks': или такое if name in ('Kirill', 'Maks'):

Худший ответ:
Надо было просто за общую скобку написать всё ;)
if name == ('Kirill' or 'Maks'):
Вопрос: Взаимодействие React и сторонним API?

Лучший ответ:
1. Вы не указали протокол(http в вашем случае). Поэтому ответ получаете не от API OWM, а от своего localhost:3000. Если бы вы внимательно посмотрели на свойство url в консоли, на вкладке network или хотя бы на своем скриншоте, вы бы это заметили.2. Ответ надо парсить методом res.json(). Но без указания протокола это бесполезно. Так как ваш localhost:3000 судя по статусу 200 возвращает html с приложением. Отсюда ошибка:SyntaxError: Unexpected token < in JSON at position 0
которую, как я вижу по обсуждению в комментариях, вы получаете, когда пытаетесь парсить ответ.
Исправленный вариант:fetch(`http://api.openweathermap.org/data/2.5/forecast/?q=${this.state.value}&cnt=1&APPID=e94f24c463ec7a0d1a69ebdebc88c694&lang=ru`)
      .then(res => res.json())
      .then(json => console.log(json));

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

Лучший ответ:
У тебя скрипты наверняка вызываются по document.ready событию. Это событие не происходит когда появляется новый контент на страницу после ajax запроса.
Поэтому по колбэку аякса вызывай заново нужные тебе скрипты. Или напиши функцию типа initScipts() - в ней инициализируй нужные тебе скрипты. И вызывай эту функцию и по document.ready и по колбэку аякса.

Худший ответ:
такая запись не сработает, если элемент с id="el" пришел ajax'ом, т.к. при начальной загрузке такого элемента нету.$("$el").on('click', function(){
   ...
})
а вот такая сработает$("body").on('click', '#el', function(){
   ...
})
Вопрос: Цикл с асинхронностью NodeJS, как правильно сделать?

Лучший ответ:
Да, можно через async/await.
Сначала оберните весь код в async-функцию.(async () => {
    // some code...
    let dataResultArray = [];

    for(let el of searchData) {
         const result = await Data.findOne({'el' : el});
         
         dataResultArray.push(result);
    }

    console.log(dataResultArray);

})();

Худший ответ:
for (el of searchData) {
  dataResultArray(await Data.findOne({ el: el }))
}
Только не забудьте, что этот код, так как он использует await, должен находиться в функции, объявленной с модификатором async. Можно, например, так:async function main() {
  let Data = mongoose.model('data', DataSchema)
  let searchData = [...]

  for (el of searchData) {
    dataResultArray(await Data.findOne({ el: el }))
  }
}

main();
Вопрос: Проект для начинающего изучение С++?

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

Худший ответ:
Могу посоветовать повзрослеть.
Текст написан  жутко инфантильным человеком, которому просто рано связывать свою жизнь с программированием.
Я так и не понял, что вам надо? Посоветовать проект, друзьяшки для изучения или тёплое ламповое общение хотя бы где-то? Тут вы сможете найти только первое.
Вопрос: Как защитить Mikrotik от внешних переборов pptp, ipsec?

Лучший ответ:
1. НЕ использовать PPTP
2. Не использовать PSK в IPSec, использовать только сертификаты, выпущенные в заданном CA - пусть хоть опухнут от перебора

Худший ответ:
Если никто ничего толкового не посоветует и адресов не много, я бы блокировал все запросы вручную c этих адресов, либо с диапазонов /24
Вопрос: Реально ли за месяц заработать на utest 100 долларов?

Лучший ответ:
Нет

Худший ответ:
Не реально
Вопрос: Изменение нескольких элементов при наведении на один?

Лучший ответ:
https://codepen.io/topicstarter/pen/voygZQ вот так например, если что то не ясно спрашивай

Худший ответ:
Подойдет ли следующий код:?.alt:hover + .hover-info { display: block;}
.alt:hover + .hide1, .alt:hover + .hide2 { display: none;}
Вопрос: Контроль за детьми на Android и Windows?

Лучший ответ:
под Windows с лихвой хватает в т.ч. xbox https://account.microsoft.com/family/
под андроид- пока 12 летнего пересадил на кнопочный, а первоклашке рано еще свой иметь телефон. 
стараюсь переключить их внимание на разного рода ремесло или совместно планируем день\неделю.

Худший ответ:
под Windows с лихвой хватает в т.ч. xbox https://account.microsoft.com/family/
под андроид- пока 12 летнего пересадил на кнопочный, а первоклашке рано еще свой иметь телефон. 
стараюсь переключить их внимание на разного рода ремесло или совместно планируем день\неделю.
Вопрос: Как при старте сервера запустить cron задачу только после старта Mysql?

Лучший ответ:
Лучше, пожалуй, это делать не кроном, а systemd unit и timer. И прописать зависимость, чтобы только после mysql стартовал.

Худший ответ:
Можно просто добавить паузу в скрипт через sleep, которая даст загрузиться mysql
Вопрос: Пропал элемент в html после указания родителя в объекте el: '#app'?

Лучший ответ:
@click="pushNumbars() reader.push(*)"
Вот из-за подобных художеств шаблон и не рендерится.
Между выражениями должна быть точка с запятой, и ещё кавычек не хватает - попробуйте догадаться где. Ну а по-хорошему - вместо этого позорища надо бы метод сделать, так и ошибки будут очевиднее.

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

Лучший ответ:
Можно проверять чтобы был заголовок HTTP_X_REQUESTED_WITH в котором указано что запрос имеет тип xmlhttprequest, т.е. ajax.
А вообще, кому оно надо - открывать в браузере url'ы из кода? Если кто-то прям очень захочет - он сам сформирует такой запрос и всё-равно получит данные. Априори нельзя защитить контент, который вы хотите отдать в браузер.

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

Лучший ответ:
Для начала делайте как делается, а не как правильно. Всякие RightWay потом учить будете. Пока вам нужно получить общие представления как всё работает, набить СВОИХ шишек и уже с пониманием всего переходить к "тяжёлой артиллерии".

Худший ответ:
Нет, неправильно. 
- get_functions.php ужасное название, винегрет внутри. все эти функции разложить по своим модулям. 
- inc/main_tpl.php подключается слишком рано. сначала надо закончить работу с данными, а только потом начинать вывод. Это азбука. 
- 'modules/' . $_GET['section'] . '/index.php' инклюдится слишком поздно. модуль надо инклюдить ДО начала вывода.  При этом основной шаблон должен вызываться не в индексе, а в модуле. модуль решает, бует ли он что-то выводить, если да - то присваивает переменной имя своего шаблона и вызывает основной шаблон, который в себе инклюдит шаблон модуля. Подробнее: phpfaq.ru/tech/tpl
- в include 'modules/' . $_GET['section'] . '/index.php' тебе напихают такого, что на ежика станешь похож. имя модуля надо обязательно валидировать. в идеале по белому списку. 
В остальном нормально, только обычно все кроме индекса кладут выше корня.
Вопрос: Отправка почты с Yandex SMTP?

Лучший ответ:
Пишет неправильные данные аутентификации, может быть логин неправильно вводите? Логин целиком почта должна быть.
Вообще все почты, что яндекс, что майл ру, что гугл, периодически блокируют отправки с сайта, там все автоматизировано, и что может померещиться этой автоматике - сказать сложно. У кого то годами работает - потом вдруг блокировка. У кого то сразу.
Почитайте вот тут, сравнение вариантов отправки
https://7fk.ru/nastroyka-smtp/

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

Лучший ответ:
Используй функцию TxtToHTML()
https://dev.1c-bitrix.ru/api_help/main/functions/s...

Худший ответ:
Записывайте сепаратор или просто перенос строки между комментами. А лучше сделайте множественное поле. А еще лучше вынести в отдельную сущность (Highload или Инфоблок)
Вопрос: Какую плату Arduino лучше купить для системы автоматического управления теплицей?

Лучший ответ:
NodeMCU (Esp8266) вместе с отладочной  платой вроде этой. Там уже и проц поинтереснее и вайфай на борту и проектов в инете куча.
Но мой вам совет, возьмите максимально подходящий по составу периферии проект из существующих у каких-нибудь зубров DIY вроде Алекса Гувера. Там всё разжевано и по полочкам, есть видосы, есть референсы и ссылки, есть рекомендации проверенных продавцов китайских магазинов с нужными деталями.

Худший ответ:
Любую, абсолютно, без разницы, лишь бы пинов хватило.
Если с интернетом, то либо модуль докупать и подключать, либо юзать ESP со встроенным wi-fi, но это не совсем ардуино
Вопрос: Работа в одной подсети через WIFI. Как правильно настроить?

Лучший ответ:
Вам нужно всего лишь отключить на втором (клиентском так сказать) роутере DHCP сервер, и назначить ему IP адрес вручную из подсети первого роутера, чтобы не потерять доступ.
Вот и все. Второй роутер, подключившись к первому, будет работать как мост, и передавать DHCP ответы первого роутера всем своим клиентам на LAN портах, и Wi Fi.

Худший ответ:
Отключаем DHCP на втором роутере, соединяем  LAN порт второго и первого роутера кабелем.
На втором настраиваем WIFi - имя сети и пароль тот же что и на первом, канал другой.
Вопрос: Проблемы с челкой на Android?

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

Худший ответ:
Начать разбираться можно отсюда: https://developer.android.com/guide/topics/display...
Не подскажу, как это конкретно с Реактом - не знаю, каким образом он взаимодействует с прочей системой. Если там есть Java-обертка - то вам нужно просто задать в ней LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER.
Вопрос: Telegram API, как получать ID отправленного сообщения?

Лучший ответ:
Заходите в документацию метода sendMessage.
Читаете там строку:
Use this method to send text messages. On success, the sent Message is returned.
Переводите её в переводчике, понимаете, что она значит и переходите к объекту Message, где есть поле:message_id 	Integer 	Unique message identifier inside this chat

Худший ответ:
i = bot.send_message(message.chat.id, 'текст')
print(i)
Вопрос: Как прошить контроллер на внешнем диске HDD?

Лучший ответ:
Проще купить новый переходник цена которому 300рублей.

Худший ответ:
Смотрите какой чип, гуглите документацию(прошивку). Скорее всего прошивка в той микросхеме SOP8. Прошивать путем выпаивания и вставки в программатор.
Вопрос: Чем централизованно контролировать доступ в интернет для средней организации?

Лучший ответ:
pfsense (manual по настройке авторизации в AD)

Худший ответ:
В конторе, в которой я работал в 14-м году - весьма нехилой, весьма богатой и имеющей сеть филиалов "от Москвы до самых до окраин" доступ в тырнет был постороен довольно просто - все ходили через единый московский прокси (squid ессно), где были настроены и списки блокировки и авторизация в домене и доступ по группам. Бампинга не было, потому что в те времена было не особо актуально. 
Вам актуально будет офигительно как - потому что сейчас все кому ни день понаставили сертификатов, а надуть работодателя таким образом запросто - зашел например на mail.ru и внутри соединения (которое для squid непрозрачно) перешел на video.mail.ru, love.mail.ru и т.д.
Вариантов у Вас не особо много - кроме Kerio, про которое я ничего не скажу, кроме того, что знаю, что такое есть и squid - особо-то и нет ничего...
Вопрос: Какие ресурсы вы можете посоветовать для изучения SEO?

Лучший ответ:
1- как оформлять и писать статьи: ссылка на статью на хабре
2- что изменить в шаблоне сайта - задавайте вопрос на форуме (seocafe.info, searchengines, maultalk, webmasters), тут нужен пример сайта и что вы хотите получить в итоге
3- плагины на wp которые часто использую:
 -yoast SEO 
 -Google XML Sitemaps
 -JS & CSS Script Optimizer
 -Perelink BiNET Pro
 -WP Super Cache
 -wp-mfc-linkator
 -WP-PostRatings
 -WP-Опросы
 -Cyr to Lat enhanced
 -AMP google
 -Яндекс.Турбо
 -FancyBox for WordPress

Худший ответ:
С wordpress особо ни чего и не нужно, так все работает. Если, конечно, хочется сделать все очень чисто, придется много чего делать. Однако достаточно использовать плагин All-in-seo-pack. Там большая часть сеошных штучек используется. Если же хотите все очень чисто сделать, смотите wp-kama.ru - там и программистские штучки и всякие плагины, и оптимизация, и советы, и ответы на вопросы. В общем, очень авторитетный ресурс. Я его сам использую для работы на своих сайтах, например без плагинов отключить вывод всякого мусора в header, отключить эмодзи, XML-RPC и т.д.
Вопрос: Роутер для дома ~3000р?

Лучший ответ:
Если для «хомячка» - то зюксель кенетик

Худший ответ:
Микротик подбирай
Вопрос: Почему нельзя изменить разрешение экрана?

Лучший ответ:
хана видяшке
попробуйте другую для проверки вставить

Худший ответ:
Вытащи видеокарту
Переключись в биосе на интегрированную графику
Грузи винду
Выставляй любое из доступных разрешений
Что с видюхой? - это уже другой вопррс
Вопрос: C#. Что лучше: PictureBox или Paint?

Лучший ответ:
Я считаю, что нужно сначала пытаться отобразить шарики изображением, а если по какой-либо причине картинки не загрузились, то рисовать их.
1. Создаем переменную с изображениемBitmap ImageBall;
2. При инициализации формы с игрой пытаемся загрузить в эту переменную изображениеtry
{
    ImageBall = new Bitmap("путь до изображения");
}
catch (Exception ex)
{
    MessageBox.Show(@"Не удалось загрузить: " + ex.Message, @"Ошибка при загрузке изображений!");
}
3. Во время генерации шарика, мы проверяем, что изображение загрузилось, иначе рисуем самиBitmap bmp = new Bitmap(50,50);
Graphics gr = Graphics.FromImage(bmp);  // это пространство на котором рисуется игра
Rectangle rect = new Rectangle(0,0,50,50); // размер шарика
if(ImageBall == null) // если картинка не загрузилась
{
    gr.DrawEllipse(new Pen(Color.Black), rect); // рисуем круг
}
else
{
    gr.DrawImage(ImageBalls, rect); 
}
5. Помещаем в PictureBox наш шарик нарисованный или с картинкойpictureBox1.Image = bmp

Худший ответ:
Лучше - canvas, желательно - OpenGL-ый,
Вопрос: За какой срок реально с нуля освоить какую-либо сферу программирования?

Лучший ответ:
Учеба - это не время. Учеба это усилия.
Зависит от вас.

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

Лучший ответ:
2 запроса разных нужны, если есть картинка и если нет картинки.

Худший ответ:
Да, 2 запроса, если картинка не была послана - один запрос, а если послана - другой, что-то типа:if($_FILES['test_image']['name']){
    $query = "UPDATE $table SET `message`='{$_POST['test_mess']}' WHERE `id`='{$_POST['update']}'";
} else {
    $query = "UPDATE $table SET `image`='{$_FILES['test_image']['name']}', `message='{$_POST['test_mess']}' WHERE `id`='{$_POST['update']}'";
}
Думаю, что нигде не опечатался)
Вопрос: Обязателен ли Git для front-end'a?

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

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

Лучший ответ:
Для http порт 80, для https 443. У юзера порта никакого нет, порт есть у вашего сервера.
А что бы получить по какому порту подключается, используйте 
$port = $_SERVER['REMOTE_PORT']; // типа юзер порт
$serverPort = $_SERVER['SERVER_PORT']; // 80/443

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

Лучший ответ:
WP-Rocket + Redis + Gonsales - должно помочь в 99% случаев

Худший ответ:
на хабре есть пошаговая инструкция по ускорению
Вопрос: Каково отношение работодателей к диплому от Университета Синергия?

Лучший ответ:
Отношение работодателей ко всем дипломам одинаковое, а в большинстве случаев отношение одинаковое как к наличию, так и к отсутствию диплома. Будьте компетентны и тогда корочка Вам не понадобится.

Худший ответ:
А какая разница если вы начали работать
Диплом смотрят когда впервый раз нанимается человек, потом он ничего не значит
Вопрос: Какой HDD выбрать для raid?

Лучший ответ:
Ввиду RAID-6 у вас скорее всего аппаратный контроллер, поэтому желательно чтобы диск поддерживал TLER (но не обязательно)
А так - покупайте тот, у кого гарантия дольше

Худший ответ:
Если продакшен - wd black
Если домой - wd blue на 7200об
Вопрос: Нужен движок для создания закрытой таблицы?

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

Худший ответ:
Есть движки коллективных блогов типа livestreet, можно попробовать адаптировать, но можно и с нуля на php написать за день, вообще не проблема.
Вопрос: Могут ли коммутаторы третьего уровня L3 (не маршрутизаторы) выполнять коммутацию по частным адресам IPv4, таким как 192.168.0.0 -192.168.255.255?

Лучший ответ:
1) Коммутаторы 3-го уровня - это и есть "маршрутизаторы" с набором специфичных аппаратных ограничений.
2) Коммутация, в большинстве случаев, относится к 2-му уровню, а там не имеют значения IP-адреса, важны только MAC. Которые, естественно, будут коммутироваться коммутатором, и до IP-адресов, в таком случае дела нет.
3) IP-адреса маршрутизируются маршрутизаторами между разными подсетями. За исключением совсем специальных случаев (мультикастовые и зарезервированные особым образом для особых задач), маршрутизатору плевать, какие именно там подсети, лишь бы они были в таблице маршрутов. 
А в случае, если подсеть между узлами одна, то маршрутизатор не нужен, нужна только коммутация и мы возвращаемся к п. 2) и коммутаруем узлы на 2 уровне обычным коммутатором (хоть Л2).
P.S. Я намеренно исключаю NAT, так как в вопросе о нем ни слова.

Худший ответ:
Если вы говорите про классический маршрутизатор, то сможет (хотя это и не его работа). Делаются Настройки типа bridge-domain, bridge-virtual-interface.
Вопрос: Почему SELECT работает так долго, да еще и пишет на диск?

Лучший ответ:
explain ваш запрос;
выполните, увидите какие операции делает сервер БД...

Худший ответ:
Во-первых, как уже посоветовал Руслан, запустите explain.
Во-вторых, сколько памяти есть у MySQL?
Вопрос: Бот телеграм на Python?

Лучший ответ:
С помощью библиотеки request отправляешь get-запрос с бота на сайт и в результате ответа 200 сохраняешь content страницы в файл.

Худший ответ:
Регулярные выражения в Python
Вопрос: Отмена события «Onclick»?

Лучший ответ:
button.onclick = function(e){
//меняем цвет
}
document.onclick = function(e){
if(e.target != button) //ставим другой цвет
}
Условия типа e.target.classList.contains() могут не срабатывать, если в кнопке есть картинка или другой элемент. Поэтому попробуйте еще e.target.closest('СЕЛЕКТОР КНОПКИ') в условиях.

Худший ответ:
Делегирование. Вешаете на документ\область обработчик клика, проверяете есть в ли месте клика нужный класс - делаете свои делишки, если нету - делаете другие делишки. //внутри функции onclick
if (event.target.classList.contains('нужный класс')){
...
} else { ... }