Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как избежать js инъекции?

Лучший ответ:
Это называется XSS и никакого отношения к PDO и вообще к БД не имеет. Эта атака хорошо известна и способы борьбы с ней описаны во множестве статей, выбирайте любую.
Собственно, в блоке "Продаваемый товар" у вас, очевидно, уже всё сделано правильно, раз там скрипт выводится текстом, а не исполняется.

Худший ответ:
<script>alert('xxx');</script>

Должно в базе данных храниться как 

&lt;script&gt;alert('xxx');&lt;/script&gt;
Чтобы потом при выводе скрипт не выполнялся

Для этого перед добавлением в Базу Данных строки используйте функцию фильтра

function filter($m){ 
	if(!is_numeric($m)){
		$m = htmlspecialchars($m);
	} else {
		$m = intval($m);
	}
	return $m;
} /* FILTER */
Вопрос: Как устроен запрос в базу данных для вывода древовидных комментариев?

Лучший ответ:
Для каждого камента делаешь поле parent_id куда пишешь id родительского камента

voila!))

Худший ответ:
рекомендую почитать про нормализации форм. Эта теория даёт исчерпывающий ответ
Вопрос: Нужно ли пользователю иметь JVM для запуска Java-программы?

Лучший ответ:
Да, разумеется. Поэтому некоторые Java-программы распространяются в виде установщика, который сразу же ставит вместе с программой и JVM (причем часто в папку программы). Например, так делает JetBrains IDEA.

Худший ответ:
В случае компиляции программы без установщика (в jar файл к примеру) пользователю будет нужно иметь jvm для её запуска.
Вопрос: Как написать браузер на C++ для Linux?

Лучший ответ:
Почитайте для начала, может передумаете
https://habr.com/ru/post/541196/

Худший ответ:
Ну можешь взять WebKit, или CEF или запчасти от огнелиса, и поверх них сделать свой браузер с нуля.
Вопрос: Как объяснить данный фрагмент кода?

Лучший ответ:
В данном коде демонстрируется типичная ошибка подмены типа (type punning [?]), ведущая к неминуемому UB [?] по стандарту.

num в данном случае представляет собой шестнадцатеричное число, при выводе оно переводится в десятичное число типа double.

Вот что стандарт говорит о подмене типа.
[basic.lval#11]
If a program attempts to access the stored value of an object through a glvalue whose type is not similar to one of the following types the behavior is undefined:
(11.1) -- the dynamic type of the object,
(11.2) -- a type that is the signed or unsigned type corresponding to the dynamic type of the object, or
(11.3) -- a char, unsigned char, or std​::​byte type.
Относительно unsigned long long тип double не обладает ни одним из требуемых стандартом свойств. Отсюда прямой вывод что данный код вносит UB.
Поэтому под большим вопросом остается то, что выводится данным кодом.

В итоге, правильным примером подмены типа на другой может быть только пример, где используется подмена на разрешенный тип представления объекта: char, unsigned char или std::byte для C++17.
C++ Core Guidelines в секции C.183 однозначно не советует для подмены использовать union. Этого действительно не стоит делать даже при условии того, что все современные трансляторы понимают такие конструкции так, как подозревает писатель.

Почему неверно работает, к примеру, такой фрагмент кода:
Второй блок кода означает приведение значения из типа unsigned long long в тип double. В этом случае производится именно стандартное преобразование типа, а не подмена с целью интерпретации представления памяти num иным образом.
0xC068C0C000000000 для типа unsigned long long означает 13864543383726325760, при преобразовании этого значения в тип double значение будет преобразовано в 1.3864543383726326e+19. В таком виде оно и будет выведено.

Относительно первого блока кода, лучшим примером подмены типа для кода из вопроса будет такой:
unsigned long long num = 0xC068C0C000000000;
double representation = {};
memcpy( &representation, &num, sizeof( num ) );
cout << representation;
И не стоит бояться обращения к memcpy тут. Данный код полностью соответствует стандарту и ожидаемо оптимизируется транслятором до желаемого результата.

Мне не понятно, как работает такая конструкция, т.е зачем передавать именно ссылку на переменную num?
Иногда требуется произвести приведение типа значения [?], иногда требуется произвести интерпретацию памяти этого значения другим типом. Это и называется подменой типа или алиасингом. Более детальную информацию о подмене типа, и алиасинге вообще, можно узнать из этой заметки.

Худший ответ:
В num хранится бинарное представление double в формате IEEE 754. Код позволяет забыть, что это int, и эти бинарные данные интерпретировать, как double.
Ваш вариант приведет просто к переводу беззнакового целого num (13864543383726325760) в double (1.3864543383726326e+19)
Вопрос: Устают глаза на Ubuntu, а на Windows нет, в чем проблема?

Лучший ответ:
Шрифты

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

Лучший ответ:
Если вышестоящее лицо считает, что нужно - значит нужно. Другого не дано.

Уровень тимлида или синьора это не тот уровень, где вышка ограничивает карьерные возможности. Желательна, да. Но не принципиальна и более служит для прохождения фильтра в лице HR.

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

Худший ответ:
Зависит исключительно от организации
Вопрос: Как будет на одном ip и на одном 80 порту работать два сайта?

Лучший ответ:
Браузер, запрашивая сайт, шлёт заголовки запроса. В числе прочих, заголовок Host, в котором домен запрашиваемого сайта.

Веб-сервер, получая запрос, видит этот заголовок и принимает решение, какой контент отдать — сайт с соответствующим доменом, или, к примеру, заглушку по-умолчанию.

Как, упрощённо, выглядит диалог браузера с сервером:// юзер вводит адрес http://qna.habr.com/
// браузер ресолвит это имя в IP адрес и подключается к нему по порту 80
// браузер шлёт запрос:
GET / HTTP/1.1
Host: qna.habr.com
Accept-Language: ru

// сервер, видя такое дело, соображает, что речь про сайт qna
// и что надо отдать корневую страницу
// отдаёт контент QnA
Запрос на этот же порт на этом же IP для, скажем, сайта freelance.habr.com выглядел бы похоже:// юзер вводит адрес http://freelance.habr.com/
// браузер ресолвит это имя в (тот же) IP адрес и подключается к нему по порту 80
// браузер шлёт запрос:
GET / HTTP/1.1
Host: freelance.habr.com
Accept-Language: ru

// сервер понимает, что речь про сайт freelance

Худший ответ:
Добавлю к ответу Сергей Соколов, что со времен древнего апача (веб сервер Apache) технология реализации этого традиционно называется Virtual Hosts. В nginx, например, такого специального понятия или директивы нет, просто в блоках server указывается нужный домен в server_name.

Отделяет друг от друга запросы на разные сайты веб сервер действительно по заголовку Host.

Ну и на всякий случай: с https все чуть сложнее.
Вопрос: Нужно ли шифровать траффик web приложения?

Лучший ответ:
Если нужно, то только в каком-то очень узком наборе случаев.
Даже Vault в своём UI не заморачивается с дополнительным шифрованием.
Даже банки и прочие PCI dss сертифицированные системы не добавляют второй слой шифрования.

Единственный случай, когда я наблюдал шифрование поверх https - это EDI over HTTPS.
Но там шифрование не само по себе "для дополнительной безопасности", а как часть EDI, который обычно по нешифрованным каналам типа SMTP или FTP передаётся.

Худший ответ:
Если нужно, то только в каком-то очень узком наборе случаев.
Даже Vault в своём UI не заморачивается с дополнительным шифрованием.
Даже банки и прочие PCI dss сертифицированные системы не добавляют второй слой шифрования.

Единственный случай, когда я наблюдал шифрование поверх https - это EDI over HTTPS.
Но там шифрование не само по себе "для дополнительной безопасности", а как часть EDI, который обычно по нешифрованным каналам типа SMTP или FTP передаётся.
Вопрос: Стоит ли сообщать владельцу сайта об уязвимости XSS?

Лучший ответ:
Можно и сообщить, если не боишься, что тебя же во взломе и обвинят. Интернет - давно уже не "дружественная среда". Если это задрипанный инди-сайт - тогда скорее всего поблагодарят. Если это жирный сайт с репутацией и деньгами - лучше не соваться.

Худший ответ:
стоит вообще об этом спрашивать?
хотите помочь? сообщайте. 
не хотите? к чему вопрос вообще?
Вопрос: Можно ли дешифровать md5?

Лучший ответ:
Это хеш, его нельзя дешифровать. Есть словари, где может быть ваше слово.

Худший ответ:
https://www.cmd5.org/ эта обычно находит :3
Вопрос: Лучший способ избежать race condition, в данном случае?

Лучший ответ:
Примеры с каналом
Когда знаем кол-во данных:
https://play.golang.org/p/7pNGCebvqlo
Когда не знаем:
https://play.golang.org/p/7WtVnXwjtuo

Подробности в комментариях:
https://qna.habr.com/answer?answer_id=1901263#comm...

Худший ответ:
Два варианта.
1. Мьютекс. С чего вы взяли, что воркеры будут выполняться по очереди? Сначала идет какая-то долгая работа конкурентно, а потом мьютекс на короткий промежуток времени закрывает слайс, пока идет в него добавление результата.
2. Канал. Смысл в том, что результаты собираются в одной горутине. Тогда не будет конкурентной записи в слайс. Это более go way. Это можно делать в main или запустить еще одну.
Вопрос: Почему Linux (mint) загружается дольше windows; греется и не загружает некоторые приложения, например Mediainfo?

Лучший ответ:
linux на столько далек от windows, что порядок установки (на чистый диск или 'на windows') не имеет значения, по факту различия в способах загрузки (linux заменит загрузчик windows, но добавит в меню загрузки пункт с windows, но та в свою очередь с очередным обновлением может затереть загрузчик linux и вернуть свой, из которого linux не загрузится, это решаемо само собой, но наилучший способ вообще не создавать проблем - устанавливать загрузчик linux на другой физически диск, флешку, карту памяти, cdrom, сетевой загрузчик и вообще любой другой способ)

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

Браузеры, поддерживающие аппаратное декодирование видео - firefox, chromium, google chrome,...

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

p.s. windows приложения не обязаны идти под linux, при этом с некоторой долей везения, после активного ковыряния, - можно запустить с помощью wine или mono (если приложение .net)

Худший ответ:
Браузеры, поддерживающие аппаратное декодирование видео - firefox, chromium, google chrome,...

На всех браузерах; при всех разрешениях видео (пропорционально); онлайн, оффлайн -- ОНО ГРЕЕТСЯ

p.s. windows приложения не обязаны идти под linux, при этом с некоторой долей везения, после активного ковыряния, - можно запустить с помощью wine или mono (если приложение .net)

При чём тут windows приложения? В менеджере приложений Линукс есть своё Mediainfo. Оно ставится, но его не видно нигде.
Вопрос: Как сохранить знания после школы и какие понадобятся?

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

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

ЗЫ ещё у меня со школы богатый словарный запас и знания русского, поэтому люблю издеваться над теми кто слова неправильно использует. Но это уже личное

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

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


Отступы между элементами и обертками задавать в с помощью gap

Для внутренних частей компонентов - использовать любую стилизяцию, хоть флексами, хоть простоdisplay: block;

Худший ответ:
Футер родитель, который имеет 4 ребенка, первый через псевдо-элемент можно задать макс. ширину. и отступ вправо, 2-й как и все остальные с макс. шириной и margin-right: auto или ваш отступ.
Дальше можно хоть hr хоть див-кой сделать полосу и ссылки. Что тут сложного то.
Вопрос: Как можно организовать проброс тома на работающем docker контейнере?

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

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

Лучший ответ:
1. Все шансы. Возраст значения не имеет, имеет значение только скилл.
2. У кого как. Кто-то как губка впитывает, кому-то надо грызть гранит науки. Нет однозначного ответа. С должным усердием за 9-12 месяцев натаскаться можно (но это не точно)
3. Выбирайте то, что нравится, к чему душа лежит. С опытом админа, с пониманием сетей, легко и весело, легче и веселей, чем без такого опыта, будет разбираться с интеграциями, а это бэкенд.
4. Я бы брался за все подряд. Экспертиза лишней не бывает. Фулстак, к слову, ирл почти не встречается.
5. Это миф. Желание из детского сада получить наньку в эксклюзивное пользование.

Мои советы:
1. Залезть в джуны без опыта довольно трудно. Все хотят сеньеров. Поэтому нарабатывайте опыт. Пишите пет-проекты, автоматизируйте текущую работу; результаты все должны быть в гите. Это должно помочь.
2. Никому не нужен человек прочитавший одну книгу или прослушавший один курс. Читайте все, смотрите все лекции, проходите все курсы (в рамках выбранной темы, конечно).
3. Многие it конторы проводят стажировки с обучением (банки особенно). Не знаю как сейчас - раньше это был самый простой способ попасть в стажеры->джуны.

Худший ответ:
1. я не согласен насчет ментора, но его имеет смысл взять когда уже много знаешь и нужно уметь "как делать, структуировать и писать правильно и профессионально, как в хорощих компаниях"

2. сразу пишите в ООП и unit testami - используйте Pep3 или похожий стандарт - будут нарабатываться правильные практики.

3. И да, свой сложный backend проект с нуля, лучше всего научит 

Сам изучаю как девопс - переходить правда не надумад еще
Вопрос: Как становятся кураторами тега?

Лучший ответ:
Права куратора тега предоставляются пользователям, внесшим ощутимый вклад в развитие соответствующего тега. В течение суток после того, как показатель вклада пользователя в конкретный тег достигает 100, он получает внутрисайтовое уведомление с предложением отправить заявку на курирование этого тега.
https://qna.habr.com/help/curators

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

Лучший ответ:
fetchall() возвращает тебе список из кортежей.
Если ты не знаешь, что это такое - бегом учить. Это абсолютно базовые структуры данных в питоне, для создания сколь-нибудь сложной программы с ними (+ещё словари) нужно уметь работать не задумываясь.

Худший ответ:
Гуглить не?
all_id = [x[0] for x in all_id] # all_id Твой список который ты хочешь развернуть
Вопрос: Как безопасно подменить OpenVPN сервер?

Лучший ответ:
Абсолютно нормально. Это ваши сертификаты. На старом сервере вы их генерировали самостоятельно (ну или тот кто был вместо вас и настраивал OpenVPN). В самом OpenVPN нет других сретификатов, кроме тех, которые вы ему предоставляете.

В принципе для нового сервера вы могли бы сгенерировать другие сертификаты (файлы server.crt и server.key) их не нужно передавать клиенту. Так было бы совсем правильно (но и использовать ключи старого сервера то же вполне можно). Для генерации вам потребуется закрытый ключ CA (ca.key), если его нет, то сгенерировать новые ключи уже не возможно. И в этом случае вы столкнетесь с проблеммой, когда истекут сроки сертификатов. Вообще во всей инфраструктуре ключей шифрования ключ и сертификат CA - самые ценные составляющие, остальные можно легко менять.

Худший ответ:
Просто перенесите старые серт на новый сервер
Потом измените запись DNS
Всё
Вопрос: Возможно ли использование телефонного кабеля вместо сетевого?

Лучший ответ:
много лет назад пара VDSL2 конвертеров (модемов) Planet у меня держала 30 Мбит на 600 метров на обычной полёвке (кабель такой телефонный) кинутой вдоль силовых кабелей
А на 50 метрах 100 Мбит - легко
Найти на Авито пару VDSL2-конвертеров сейчас несложно
Но если объекты в прямой видимости - сейчас проще всего WiFi мост с направленными антеннами. Правильное оборудование пробивает до 11 километров, так что 40 метров - это ни о чём. 
И сразу рекомендую ставить 5 ГГц (2.4 уже основательно засран, особенно в городе)

Худший ответ:
но какая примерно будет максимальная пропусная скорость ?
 1 mbit, и то, если заработает
Вопрос: Чем различается старое и новое сетевое оборудование?

Лучший ответ:
Базовые фичи в рамках программы CCNP одинаковые.
В чём ещё состоит отличие? 
Касательно коммутаторов производительностью, плотностью портов, мощностью блоков питания, возможностями PoE, возможностями использовать один и тот же коммутатор как wifi-контроллер, накатив определенную прошивку, наличием более производительных портов, возможностями SD-WAN, стекированием...

Аналогом 2960 сейчас является 9200 серия. Сравните их возможности по количеству и пропускной способности портов. На старых аплинк был гигабит, на новых - уже 40GE, клиентские порты были 100М, сейчас уже 1GE. Кроме того, сейчас уже тренд L3 на доступ, современные коммутаторы доступа поддерживают маршрутизацию.

Худший ответ:
Если что то не понятно запускай профайлер. Если без шуток то сетевое оборудование различается своей производительностью и характеристиками. У кошек это кстати сильно зависит от прошивки.
Вопрос: Как минимизировать риски атак и взлома сайта?

Лучший ответ:
Сделать бэкап сайта и поместить его так, чтобы до него было не добраться (до бэкапа).
Просканировать на уязвимости - в тырнете полно сканеров сайтов на WP
Почаще просматривать логи на предмет подозрительной активности

Худший ответ:
https://qna.habr.com/q/933705#answer_1870361

Ещё можно изменить URL страницы авторизации, плагин - "WPS Hide Login"
Вопрос: Как стать веб-программистом, а не кодировщиком?

Лучший ответ:
Практический опыт и постоянное самообразование.

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

"как научиться проектировать ПО"
Смотреть на архитектуру разных программ и разных проектов, это приходит с опытом. Видеть как налаживаются процессы. Невозможно научиться проектировать ПО, учавствуя в одном маленьком проекте.

стать профессиональным программистом, а не зависеть от опыта, который получил на курсах/ВУЗе/Книгах.
Ну так получать опыт еще где-нибудь.
И очень зря ты считаешь что опыт из книг тебе не нужен. Опыт из книг это грубо говоря уже готовый и внятно сформулированный чужой опыт, который может исчислятся десятками лет.

Как именно думать как программист? Я говорю не об алгоритмах и структурах данных, а о том как проектировать ПО. Независимо от знаний архитектурных паттернов, которые изучил, а научиться создавать свои Архитектурные решения.
Было бы неплохо сперва узнать что такое паттерны - то есть годами выстраданные решения, полученные на чужом опыте. А то потратишь десяток-другой лет на изобретение велосипеда, а потом оказывается это уже изобретено, а у тебя пенсия через 5 лет и ты все еще просто делаешь базовые вещи.
Помогут ли тут такие книги, как "Проектирование ИС"?
Вопрос: Многократное использование len() или кеширование в переменную?

Лучший ответ:
С помощью этой штуки можно посмотреть, во что это компилируется: https://github.com/badamczewski/PowerUp

Но вообще len должен просто возвращать длину слайса, которая записана в поле, по тому большой разницы не будет.
Если у тебя действительно, внутри цикла не может измениться слайс - можно закэшировать.
Если может измениться - кэшировать не следует.

Худший ответ:
С помощью этой штуки можно посмотреть, во что это компилируется: https://github.com/badamczewski/PowerUp

Но вообще len должен просто возвращать длину слайса, которая записана в поле, по тому большой разницы не будет.
Если у тебя действительно, внутри цикла не может измениться слайс - можно закэшировать.
Если может измениться - кэшировать не следует.
Вопрос: Как в python сделать случайный выбор, но с определенной вероятностью?

Лучший ответ:
Есть еще random.choices. В параметре weights как раз указываются веса каждого значения.
values = [q1, q2, q3]
data = random.choices(values, weights=[0.2, 0.3, 0.5], k=1000)

Худший ответ:
Такой вопрос уже был
Вопрос: Как взаимодействовать с iframe google captcha?

Лучший ответ:
Через селениум случайно получилось так одну из пикч ткнуть, пока делал другую таску, копай в этом направлении или колхозь из ProBrowser.
$iframe = $driver->findElement(WebDriverBy::xpath('//iframe[@title=\'проверка recaptcha\']'));
$driver->switchTo()->frame($iframe);
$driver->findElement(WebDriverBy::xpath('//div[@class=\'rc-image-tile-wrapper\']'))->click();

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

А вобще подобных сервисов antigate валом, нужно просто загуглить
Вопрос: Что выбрать для MVP мобильную версию сайта или приложение?

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

Худший ответ:
Для начала, лучше создать веб-версию. Приложение можно будет написать позже поверх, используя rest api.
Что касается бэкенда, то я бы советовал смотреть в сторону фреймворков по типу:

laravel на php
Django на python (Синтаксис куда проще, но менее производительный(впрочем, если речь идет о небольшом объеме клиентов, то это вообще не проблема)) 

(Вообще, фреймворков очень много, почти для каждого языка, но это те, с которыми я работал)
Вопрос: Почему не срабатывает функция при нажатии?

Лучший ответ:
Брехня, всё срабатывает.

Бегом гуглить, что такое всплытие событий, и как его останавливать.

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

$('.close').on('click', function (e) {
  e.stopPropagation(); // вот так
  $('.section').removeClass('opened');
});

или stopImmediatePropagation, если в вашем случае первое не сработает
Вопрос: Зачем верстать, если есть Wordpress, Joomla и т.п.?

Лучший ответ:
1. скорость загрузки 
2. Ты ограничен функционалом который предлагает тебе билдер
3. сложность поддержки

и да в wodpress и joomla тоже можно писать только html/css

Худший ответ:
Любой визуальный редактор даёт мусор. Причём этот мусор разного качества. Поисковые боты не совершенны, поэтому и востребованы Seo специалисты и рендеринг на сервере