pavki/hr_qa_sbs_best_bad huggingface dataset:
Вопрос: С чего начать изучать пентест обычному тестеру?

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

https://habr.com/ru/company/mailru/blog/282700/
https://habr.com/ru/company/1cloud/blog/491318/
https://qna.habr.com/q/305845
https://otus.ru/nest/post/1089/
codeby.net/threads/roadmap-dlja-pentestera.74576/
codeby.net/threads/nuzhny-knigi-o-penteste.75750/
https://alphacybersecurity.tech/ten-books-to-start...
https://www.ceos3c.com/security/the-best-hacking-books/
https://www.guru99.com/best-ethical-hacking-books.html

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

https://habr.com/ru/company/mailru/blog/282700/
https://habr.com/ru/company/1cloud/blog/491318/
https://qna.habr.com/q/305845
https://otus.ru/nest/post/1089/
codeby.net/threads/roadmap-dlja-pentestera.74576/
codeby.net/threads/nuzhny-knigi-o-penteste.75750/
https://alphacybersecurity.tech/ten-books-to-start...
https://www.ceos3c.com/security/the-best-hacking-books/
https://www.guru99.com/best-ethical-hacking-books.html
Вопрос: Как поставить телеграм бота на java на сервер?

Лучший ответ: Устанавливаете JDK на сервер, заливаете свое приложение.
Если у вас приложение не принимает входящих сетевых соединений - закрываете все порты, кроме 22го (для ssh).
Можно приложение просто запустить, а можно сделать его сервисом.
Вроде все.

Худший ответ: 1. Установите JDK на сервер.
2. Проверьте в консоли, что java установлена: java -version.
3. Загрузите на сервер предварительно собранный артефакт (jar-ник) приложения.
4. В консоли перейдите в каталог с jar-ником и запускайте программу командой. Например:
java -jar Project.jar

А так же можно запускать команду в фоне, либо реализовать запуск, как сервис.
Вопрос: Хотелось бы узнать мнение профессионалов по данному курсу?

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

Худший ответ: Лет десять назад я бы дополнил ответ уважаемого Сергей Горностаев примерно так "а вот способен он стать программистом или нет - можно узнать только после того, как покажет чего он достиг за указанное время". Но вот сегодня я прихожу к выводу, что существует метод узнать это с самого начала, еще до всякого обучения. Если человек любой вопрос - на какие курсы пойти, какие книги читать, какой язык программирования учить, оценить те или иные источники, "с чего начать мое обучение", "что читать после того, как я прочитал вот такую книгу" и пр. - привык не самому искать ответы, а в первую очередь бежать на форум - то с 99.999% вероятностью программистом ему не стать, ну или не стать программистом чуть выше плинтусового уровня. Грустно - но факт.
Вопрос: Как правильно создать HTML письмо?

Лучший ответ: Рекомендую воспользоваться фреймворком MJML, если есть опыт вёрстки, то разобраться с ним пара часов, хорошая документация, есть примеры, онлайн песочница, приложение для компа и возможность запустить под галпом

Худший ответ: 1. Изображения лучше хранить на собственном сервере. Как вариант - приложить их к письму в качестве файлов. Но надо будет тестить - чтобы изображения корректно отображались. Тестить email-рассылки по любому надо будет очень серьёзно. Я даже занимался перебором сервисов для тестирования email-писем на разных платформах и гаджетах. Либо уменьшать запросы - кроссплатформенность (специфика тут приличная).
2. Пока только таблицами. Сервисов куча. Порог вхождения, кстати, довольно средний. Прямо так с нахрапу не получится - надо будет в код примеров вникать. Руками не сильно дольше. Принципы "табличной вёрстки" довольно просты.
UPD: Суть специфики кроссплатформенности в следующем: для западного рынка, например, по любому надо тестить yahoo, а для российского - яндекс (наоборот совершенно мизерные проценты).
Вопрос: Адекватный российский хостинг для Wordpress?

Лучший ответ: имхо бегет для шареда, adminvps для vps
проверял на десятках клиентах по сео и сайтам.

reg.ru зажрался и дерет за всё деньги.
timeweb часто тупит, тоже бабло просит за ссл
подробнее тут разбирал https://moytop.com/sozdanie-sayta/chto-takoe-hosting

p.s. любой нормальный хостер бесплатно переносит к себе ваши сайты + дает бесплатный тестовый период для проверки нагрузки и т.п. А некоторые хостеры ещё и возмещают оплаченный период при переезде с другого хостинга (что по времени там осталось, включается в их хостинг).

Худший ответ: Выскажусь за рег.ру. Уже 10 лет там размещаюсь. 
По цене - да, дороговато, но в итоге стабильная работа сайтов. Был единственный перебой, когда у них там вышел из строя дата-центр, и это за все время, что там размещаюсь. За сутки они все подняли и устранили. 
SSL предлагают + дают рекомендации по настройке. За все время желания куда-то съехать не возникало.
Вопрос: Возможно ли провести «безопасную сессию» удалённо на чужом компьютере?

Лучший ответ: Выверните наизнанку.
Предоставьте ему удалённый доступ к вашему компьютеру и продемонстрируйте ПО, установленное на ваш компьютер.

Другой вариант - демонстрировать по заветам Кин-Дза-Дза:- Можно взглянуть?
- Гляди.
- Вообще-то я не специалист по гравицаппам. Пойдем покажем моему чатланину, он проверит.
- Сейчас, цапу поставим.т.е. демонстрировать не полнофункциональную версию; пока "цапу" не поставите - не полетит.

Худший ответ: Владелец компьютера всегда имеет возможность прервать сессию тупо выдернув вилку из розетки :) Демонстрацию нужно проводить только у себя, предоставляя ему удаленный доступ.
Вопрос: Как вывести текст в textarea не потеряв переносы строк в тексте?

Лучший ответ: ВАРИАНТ 4-Й, очевидный
1 - пишу абзац текста с переносами в textarea
2 - Отправляю в SQL-базу ничего не меняя. 
3 - Оригинальные системные переносы сохраняются в SQL - базе, как и должны, поскольку любые заморочки с яваскриптами к базе данных не имеют вообще никакого, ни малейшего отношения
4 - Читаю из SQL базы
5 - Вывожу в обратно в texarea
6 - В texarea ВСЁ РАБОТАЕТ! A magic! При том что мы вообще нигде ничего ни на что не меняли

6a - По поводу HTML сущностей. Хотя в приведённом примере нет ни одного символа, который бы требовал перекодирования в HTML-сущности, тем не менее, при выводе любого текста в HTML, эти сущности действительно должны быть перекодированы в обязательном порядке, всегда, в 100% случаев. Причем с помощью не какой-то левой addslashes, а функции, которая действительно это делает, htmlspecialchars($var_zametka)
7 - Собираюсь с мыслями, и напряжённо думаю - в каком месте у меня текст взаимодействует с яваскриптом? Который к выводу текста в текстарию не имеет ни малейшего отношения? 
8 - думаю...
9 - думаю...
10 - наконец-то нахожу. 
11 - перед тем, как отправлять текст в яваскрипт, кодируем его тем методом, который специально предназначен для отправки данных в яваскрипт, а не какими-то шаманскими заклинаниями и плясками с бубном.echo json_encode($var_zametka)
12 - ВСЁ РАБОТАЕТ! Просто потому, что получилось расхлебать кашу в голове, в которой SQL путается с РНР, HTML c яваскриптом, а экранирование спецсимволов почему-то называется заменой на HTML-сущности. Хотя если открыть документацию на абсолютно бесполезную функцию addslashes, то там ни одного разочка слово HTML не встретится.

Худший ответ: Нагородили, просто ппц :)
А применить к textarea правило CSS не пробовали?
white-space: pre-line;
Вопрос: Зачем требовать достоверную личную информацию в регистрации Хабра?

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

Худший ответ: Это нужно для помощи "правоохранительным" органам, если юзер будет писать то, что "нельзя" писать согласно Конституции РФ
Вопрос: Можно ли сжать файлы игры оставив игру работспособной?

Лучший ответ: В 2000-е на прилавках рынков мне как-то попался в руки CD диск (700Мб) где пираты вкатали аж 4 игры
(кажется был Quake Ground Zero, KingPin, Blood ,,, и еще какаято).
Веселое время было. И студии были такие как "Фаргус" и 1С и прочее. Переозвучкой игр занимались.
Позже другие странные личности (паблишеры) делали такие вот релизы. Но интересно другое.
В оригинале каждая игра занимала по сидюку. Вопрос- Как? Ответ простой - сжали аудио.
Тогда игра занимала 100-150 Мб. А остальное - аудиотрек. Вот они взяли аудио (wav обычно или чистый трек)
сжали в mp3. А при инсталляции - тупо запукалась утилита наподобие bladeencoder и прямо распаковывала
музло на диск. Прям в логах было видно чем она занята. Вот такой трюк.

С игрой в 13Гигов надо просто понять из чего эти гигабайты складываются. Если cinematics или музло - то
иногда его можно удалить и игра себе идет нормально. А иногда и падает с ошибкой. В общем успех зависит
на 99% как разработчик защитил игру. Бесплатные и indy-games обычно никак не защищаются. А дорогие
имеют по 5 степеней защит.

Худший ответ: Ram disk имеет файловую систему, фс например ntfs имеет встроенную фичу сжатия, как она будет действовать и как нагружать проц можно узнать только попробовав
Вопрос: Что за странные страницы Битрикса?

Лучший ответ: В списке сохраненных страниц технологии композита непонятные страницы. Сотни страниц. 
это не список страниц, а список запросов, по идее да - кто-то брутфорсит, что неприятно, т.к. повышает загрузку на сервер, поставь Fail2ban и настрой его например при 5 неудачных запросов с какого то IPшника блокируем его на уровне iptables на час... количество таких запросов во много раз сократится...

Худший ответ: Это какой-то перебор в попытке что-то узнать.
Стандартный автоматически сканер уязвимостей.
Вопрос: Как лучше учиться на data scienstа?

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

Худший ответ: Беда не в том, что у вас было "плохо с математикой".  Беда в том, что даже если сама по себе математика может и не понадобиться в работе Data Science,  математический стиль мышления для серьезного занятия им необходим.  То, что этот стиль мышления не ваш -  не надо рассматривать как недостаток. Надо его рассматривать как свою особенность, и искать то занятие, которое просто более подходит именно для вас.  И чем раньше вы это поймете и примете -  тем больше шансов, что вы все-таки найдете "свое" .
Вопрос: Можете ли вы дать идею для реализации AI?

Лучший ответ: Есть функция Vector2.SignedAngle, которая возвращает угол между двумя векторами. Причём эта версия Возвращает значения от -180 до 180. В зависимости от того значение меньше или больше нуля вам и нужно поворачивать направо или на лево, если вообще нужно поворачивать. И вот это "нужно ли поворачивать" - это вовсе не "угол равен 0", а какие-то небольшие отклонения от нуля.
Уделяйте больше времени чтению документации, задача очень простая. Вам уже сказали, что тут простая векторная математика, а значит идёте и исследуете документацию по Vector2

Худший ответ: Ну во первых это не AI.
НАвмеш тут не нужен - тут нет поиска пути как такового. Полицейская машина всегда пытается ехать в сторону машины игрока, просто у нее есть физика заноса. Вот как опишите физику заноса - так и станет вам же понятнее.
Можно еще для профилактики погуглить как сделаны боты в гонках - там работает "резинка".
Вопрос: Алерт при отключении одного из БП?

Лучший ответ: Мой скрипт в пару строк всего
:global volt [/system health get voltage];
:if ($volt < 131) do={
/tool e-mail send to="admin@my-company.ru" body="$volt" subject="Power crash" 
}
Пара пояснений
В Вашем случае вместо voltage будет проверка psu1-voltage и psu2-voltage
Микротики питаются через блоки питания типа ББП-20 (12 вольт и аккум 7 АЧ - на деле выдает 13,7 на розетке и 12.8 на полностью заряженном аккуме) напряжения хватает, глюков нет
Значение 131 = 13.1 В Почему именно это - в момент отключения питания напряжение на аккуме снижается до номинального плавно - вот и подобрал среднее
body= - пишите что хотите
почта настраивается в Tools - E-mail
Шедулер запускает раз в час - Вы можете сделать хоть раз в минуту (микротики на аккумуляторе могут работать до двух дней, так что мне не принципиально)
Проверку на то, что письмо уже отправлено и повторять не нужно делать не стал 
Дерзайте

Худший ответ: Я не уверен, но я бы сделал отключение одного из БП для экономии его ресурса. Если он не нужен зачем ему работать? Или 1 транзистор это слишком сложно...
Вопрос: Как в скрипте на bash войти под другим логином?

Лучший ответ: sudo su -l user -c 'pip3 install --user bs4 lxml requests'

под sudo, команда su не будет запрашивать пароль.

Худший ответ: Один из вариантов:
su -l user -c 'pip3 install bs4 lxml requests'
Вопрос: Как узнать что SSL сертификат мультидоменный?

Лучший ответ: Поле  X509v3 Subject Alternative Name смотрите

Худший ответ: Для резолва домена используются и CN и Subject Alternative Name
Посмотри, есть ли в этих полях нужные тебе домены или даже домены с маской
Вопрос: Какие приложения в jira (или другой софт) помогают отслеживать эффективность программиста?

Лучший ответ: Как отличить добросовестного программиста от плохого?
Обычно для этого существует перфоманс ревью и всякие опросы 360. Если коллеги говорят, что всё збс, подкрепляя это фактами, то скорее всего так и есть.

Коллеги, как вы следите за эффективной работой?
Мы например делаем естимейты в стори поинтах и следим за team velocity и burndown chart
В жире вроде из коробки можно смотреть, как стори поинты сгорают.
Ещё можно попробовать внедрить kanban и выставить WIP-limit, чтобы одновременно в работе задач было на 1 или 2 меньше, чем разработчиков есть - тогда "лишние" могут тратить время на то, чтобы помогать "отстающим".
На дейликах можно примерно находиться в курсе о том, какой статус по задачам.
Можно ещё замерять lead time - сколько примерно времени проводит задача в определённых статусах (независимо от затраченного времени)
О том, что происходит в коде, должен заботиться тимлид, а не ПМ.

Худший ответ: Смотри Agile и Scrum методологии, а лучше на курсы запишись. Там все подробно рассказывают.
Вообще плохая идея подгонять, торопить разработчика. Если по срокам не успеваете, значит в этом виноват руководитель в 90% случаев. Другой вопрос если хочется измерить время на внедрение функционала.

Вот с чего можно начать, если пользуетесь jira:
Log time
Вопрос: Выбрать Rust или C++?

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

Худший ответ: Rust создавался при разработке браузера Mozilla чтобы закрыть конкретные дефекты С++. Системообразующие дефекты такие как NPE, Buffer Overflow e.t.c. Сегодня доля Rust файлов в сорцах мозиллы составляет 40% от общего количества файлов. Это - достаточно чтобы считать успехом мероприятие.

Нужно ли брать Rust при разработке игровых движков? ХЗ. Я-бы сказал что Rust важнее для тех приложений где важна инфо-безопасность. Я не спец в Rust, но я чисто из любопытва смотрел например как в Rust открыть файл (мне надо было парсить логи). Так вот открыв файл ты не просто не получаешь файловую переменную. Ты получаешь монаду Either (там кажется она называется Result<>) и вот пока ты ее паттерн матчингом не проверишь - никакого файла не получишь. Тоесть протокол работы с файлами строгий настолько, насколько это возможно. Срезать поворот - не получается. Это в сях можно взять fopen(..) и результат проe..ать. 

Вобщем rust по уровню строгости напоминает... ну не знаю Haskell наверное. Хотя в Rust тоже можно творить безпредел - но по крайней мере ты будешь явно декларировать операции как usafe. Это слишком очевидно вобщем-то. Дело техники на code-review просто отделить опасное и принять решение стоит ли так кодить или нет.

Да и один финский парень обещал что в Rust скоро зайдет как второй язык разработки ядра Linux. Ждем пока.
Вопрос: Множественный if then else, как заменить, упростить и простить?

Лучший ответ: Паттерн Strategy.
Или Reflection.
Или HashMap.
Или Dictionary.
Или switch... case
В зависимости от деталей задачи.

Худший ответ: Ну в python к примеру так можно решить
# некий набор функций для каждого региона
def region1():
    ....

def region2():
     ...

def defaultregion():
    ...

# соответствие номеров функциям
func = {
   '1': region1,
   '2': region2,
   ...
}.get(region_number, defaultregion)

func()   # в func - нужная функция, обусловленная выбором номера региона. выполняем ее
Вопрос: Что возвращает return в С++?

Лучший ответ: Зависит от кода функции и опций компилятора.

Советую всем программистам на C++ хотябы почитать про ассемблер. 
Стек, регистры, вот это вот все. Тогда станет понятно, как работает процессор.

Тогда станет понятно что "сам объект tmp" никак не вернуть. Это локальная переменная, лежащая на стеке в части, которая будет отброшена при выходе из функции. Отсюда вытекает, что вообще говоря, там должна быть копия.

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

Если код и включенные оптимизации позволяют это сделать - то копии не будет. Но в общем случае - будет копия.

Худший ответ: Если правильно помню плюсы - то вернет копию.
Сам объект создан на стеке и живет только во время выполнения функции.

P.S. это будет поверхностная копия или глубокая - зависит от наличия и реализации в coffeeMachine конструктора копирования
Вопрос: Почему данные пользователя не добавляются в базу данных?

Лучший ответ: Как нужно действовать (в принципе всегда):
1) Проверить что форма срабатывает и делает запрос: открываем консоль разработчика в браузере - нетворк, субмитим форму - смотрим что форма сделала запрос к серверу. Если не сделала - разбираемся в консоли какие ошибки со скриптами и все чиним.
2) В отсылаемом запросе смотрим данные, которые отправляет скрипт, а так же ответ сервера, на предмет ошибок. Если есть ошибки - исправляем. 
3) Проверяем данные которые пришли на сервер, делаем var_dump($_POST), смотрим - то ли пришло на сервер. Если что-то не пришло - возвращаемся на фронт и ищем ошибку в хтмл разметке и форме.
4) Правильные данные сначала вставляем в отдельную переменную как строку запроса, а потом передаем ее на выполнение в $mysql->query(). Таким образом перед выполнением запроса можно тем же  var_dump() вывести запрос и проверить его визуально на правильность, ну или вставить руками в бд через phpmyadmin или другой инструмент работы с бд. Посмотреть ошибки - исправить.
5) Во всех случаях нужно использовать подготовленные выражения. Код станет на 3 строчки длиннее, но на 90% качественнее.
Профит.

Худший ответ: Как нужно действовать (в принципе всегда):
1) Проверить что форма срабатывает и делает запрос: открываем консоль разработчика в браузере - нетворк, субмитим форму - смотрим что форма сделала запрос к серверу. Если не сделала - разбираемся в консоли какие ошибки со скриптами и все чиним.
2) В отсылаемом запросе смотрим данные, которые отправляет скрипт, а так же ответ сервера, на предмет ошибок. Если есть ошибки - исправляем. 
3) Проверяем данные которые пришли на сервер, делаем var_dump($_POST), смотрим - то ли пришло на сервер. Если что-то не пришло - возвращаемся на фронт и ищем ошибку в хтмл разметке и форме.
4) Правильные данные сначала вставляем в отдельную переменную как строку запроса, а потом передаем ее на выполнение в $mysql->query(). Таким образом перед выполнением запроса можно тем же  var_dump() вывести запрос и проверить его визуально на правильность, ну или вставить руками в бд через phpmyadmin или другой инструмент работы с бд. Посмотреть ошибки - исправить.
5) Во всех случаях нужно использовать подготовленные выражения. Код станет на 3 строчки длиннее, но на 90% качественнее.
Профит.
Вопрос: Как удалить дубликаты из списка?

Лучший ответ: То, что вы написали - некоторые данные в фигурных скобках -  согласно синтаксису Python  не есть список. Это множество. Множество -  это такая структура, которая не допускает повторяющихся элементов внутри себя. Т.е. присвоив эту строку некой переменной, ей автоматом будет приписан тип "set" и при выполнении этой операции все повторяющиеся элементы будут автоматом удалены.
Вот пример
slt={'threads/4862302', 'threads/4862302', 'threads/4862302/'}
print (slt)
и результат
{'threads/4862302/', 'threads/4862302'}

Если вдруг вы считаете, что 'threads/4862302/' и 'threads/4862302' - это один и тот-же элемент, то вам надо предварительно просто поудалять символы '/' из строк, например -  вот так:
slt={'threads/4862302', 'threads/4862302', 'threads/4862302/', 'threads/4862303/','threads/4862304/'}
sa=set()
for x in slt:
    if x[-1]=='/':
        x=x[:-1]
    sa.add(x)
print (sa)
и результат:
{'threads/4862304', 'threads/4862303', 'threads/4862302'}

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

Лучший ответ: Тут не нужно решето. Надо просто отдельно проверить каждое число на простоту.

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

Худший ответ: Непонятно, откуда у вас MemoryError. Если исходная выборка размещена в памяти,  и ей хватило там места, то на что у вас расходуется память?  Вам ведь не надо запоминать все полученные простые числа. Вы берете их по одному и просто выясняете - простое оно или нет.
Вот со временем -  да, если у вас действительно большие числа и их к тому-же много -  ну тогда переборный алгоритм быстрый не будет. Поэтому ограничение в 1 сек. -  это просто какая-то мягко говоря странность, если не указывать, а какие именно числа в вашей последовательности. Для 1000 чисел, всех лежащих в диапазоне от 0 до 1001 - это одно, а для лежащих в диапазоне от 10**12-1000 до 10**12 - это совсем разное время работы.
Вопрос: Что делать, если отключил службу, отвечающую за пинкод в виндоусе, а пинкод есть?

Лучший ответ: Что делать, если отключил службу, отвечающую за пинкод в виндоусе, а пинкод есть?
Поскольку мы не знаем, что именно ты там поотключал и как это в дальнейшем может сказаться на работе системы,  рекомендации могут быть только самые общие. 
Установи систему заново.
Когда вновь установишь windows, положи рядом с клавиатурой металлическую линейку и всякий раз, как чьи-либо руки полезут отключать сервисы и копаться в настройках windows, бей по тем рукам этой линейкой. Таким образом ты существенно снизишь вероятность возникновения подобной проблемы.

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

Лучший ответ: Так же как и любой обмен данными. На сервер передаётся информация (например положение курсора),  сервер передаёт клиентам, клиент рендерит

Худший ответ: тынц
Вопрос: Помимо id и классов, как-то ещё можно получать элементы при запросе?

Лучший ответ: Выбирайте )))
CSS-селекторы

Худший ответ: Можно через data атрибут.
<div data-example>test</div>

document.querySelectorAll('[data-example]');