Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как на развернуть весь сайт в index.php?

Лучший ответ:
Сейчас в этом коде все поставлено с ног на голову.
Я так понимаю, что всё затевается ради того, что "Шапка и футер сайта у меня везде одинаковые"
И сначала идет шапка, потом этот матч, а потом футер. 
То есть у нас код начинается с вывода HTML, в то время как это должно быть самое последнее, что происходит в скрипте.
А всё должно быть строго наоборот - сначала должна выполняться обработка данных РНР кодом, и только потом начинаться вывод HTML.

Взять к примеру запрос /cart, который в обязательном порядке должен обрабатывать запросы POST
после такого запроса обязательно должен выполняться редирект. А редирект мы сделать не можем, потому что у нас пол-сайта уже клиенту ушло.
Не говоря уже о других НТТР загололовках, или о том, что хидер у тебя не статичный, и значительно меняется от страницы к странице.

Для начала надо сделать вот так, phpfaq.ru/tech/tpl#example

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

Худший ответ:
В папке сайта нужно создать файл .htaccess
вот с таким содержимым
Options -Indexes
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule .* index.php [L]
</IfModule>

а потом уже в нужном месте, в нужное время делать
match ($_SERVER['REDIRECT_URL']) {
    	"/index.php" => include "main.html",
    	"/cart" => include "cart.html",
    	"/admin" => include "admin.html",
    	default => include "main.html",
};
ну или через if, если у вам не php8
Вопрос: Как объединить две, три и более таблиц на SQL?

Лучший ответ:
примерно так
select `Date`, source, Campaign, Ad, SUM(Click), SUM(Cost), SUM(`App Install`), SUM(Purchase)
  from (
    select `Date`, 'source A' as source,  Campaign, Ad, Click, Cost, null as `App Install`, null as Purchase from table1
    union
    select date(`DateTime`), 'source B', Campaign, Ad, Click, Cost, null, null from table2
    union
    select `Date`, Source, Campaign, Ad, null, null, `App Install`, Purchase from table3
  ) t
group by `Date`, source, Campaign, Ad

Худший ответ:
Читайте про JOIN
Вопрос: C — как сделать замену подстроки в строке (руками)?

Лучший ответ:
А что делает startsof()?

Даже если принять, что оно действительно ищет вхождение второй строки в первой - у вас там в каждой второй строчке ошибка.

malloc(string_size + sub_size - to_size);

Объясните мне, как вы получили вот это значение длины?

А дальше копирование у вас неправильно. Чтобы заменить строку-вхождение вам надо в ответ скопировать начало str1 до вхождения, потом скопировать to, потом скопироваать конец строки str1, после вхождения. Это должны быть три параллельных цикла. У вас в одной ветке их 2 (один в функцию бесполезную спрятан), в другой - только 1.

Худший ответ:
1. Не правильно вычисляете размер будущей строки в первом случае. В первом случае результирующая строка будет меньше оригинальной, у вас же получается больше.
2. Не выделяете место под завершающий нулевой символ. Вообще завершающий ноль вы полностью игнорируете. Без него у вас в итоге получится не строка, а массив символов. Раз уж вы делаете все в ручную, то и завершающий ноль надо проставлять руками.
3. Согласен с Wataru на счет startsof и трех циклов.
4. Я бы сначала искал вхождение строки замены и только если оно найдено производил бы необходимые действия, в т.ч. и выделение памяти под новую строку. У вас же сейчас предполагается, что подстрока замены всегда найдется, что в общем случае не верно. 
5. Что будете возвращать, если замены не будет? Будете просто выделять память под новую строку и возвращать новую строку аналогичную оригинальной? Или будете возвращать указатель оригинальной строки? Но тогда будет мешать квалификатор const для str1. А кроме того, если возвращать указатель на оригинальную строку, то что должен делать вызывающий код со старой строкой? Т.е. если замена была, то вы возвращаете новую строку и в вызывающем коде старую строку можно удалить. А если строка не найдена, то старую строку удалить нельзя, т.к. вы вернули указатель на нее же. В общем надо еще продумать как возвращать результат. Я бы на самом деле возвращал признак была замена или нет (или количество замен), а результирующий указатель надо возвращать в дополнительном параметре. Если замен нет, то либо указатель не возвращается, либо возвращается указатель на str1.
6. в качестве оптимизации:
for (int i = 0; i < strlength(str1); i++)
Вызываете на каждой итерации strlength.
Вопрос: Что делаю не верно?

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

async/await говорят о том, что метод может быть выполнен асинхронно, но не гарантируют этого
new Tread() создает поток, который что-то делает. поток по умолчанию выполняется параллельно с GUI Event Loop, и чтобы вернуть данные коду внутри потока можно передать коллбэк, который будет выполнен после длительной операции
Invoke() ЕМНИП служит для синхронизации бэкграунд потока с GUI (просто так из фона нельзя обновлять данные на форме), в него нужно помещать не весь код, а только тот код, который полученные в фоне данные отправляет форме
если метод не умеет выдавать данные не разом, а по мере загрузки, интерактивное появление новых данных на форме не получится
если Вы полностью контролируете загрузку данных, можно сделать на событиях синхронизацию с GUI - загрузчик кидает событие onDataRecieved а форма на него подписана и обновляет свои данные


Худший ответ:
Если это десктопное приложение, что вроде бы Invoke выполняется в главном потоке. 
Я что-то такое помню.
Вопрос: Два роутера три подсети, как?

Лучший ответ:
Чтобы трафик ходил между сетями подключенным к  tp link нужно настроить маршрутизацию на  tp link.
Тупо прописать маршрут к каждой сети.

Чтобы трафик ходил между сетями подключенным к  tp link и MikroTik нужно выключить NAT на  tp link и так же настроить маршруты.

Чтобы ограничить фаерволом - нужно написать соответствующее правило для фаервола.

Худший ответ:
на интерфейс раздай разные подсети на OpenWRT.... и все... с каждого интерфейса будут разные подсети

убери его из общего бриджа,созда новый и пихни туда... и сделай настройки как на основном бридже
Вопрос: Восстановление данных с накопителя видеорегистратора?

Лучший ответ:
 По глупой случайности инициализировал диск в Windows. Вполне типовая ситуация, с которой к нам регулярно приходят пользователи DVR.

Можно ли с этим *.bin файлом секторов восстановить данные у профильных людей? Да, образ оригинального жёсткого диска, который был инициализирован, подойдёт для восстановления данных с видеорегистратора.

 И является ли полный бэкап данных секторов полной копией диска? Никогда не пользовался Bootice. Обязательно учтите, что вам нужен полный образ диска (посекторная копия, клон), сделанный в режиме "байт-в-байт". Без ухищрений, пропусков, сжатия, проприетарных форматов, и т.п. Т.е. Acronis и подобные инструменты не подойдут. 
Используйте CloneZilla или 16-тиричный редактор. Если потребуется, у нас есть бесплатный hex-редактор, не требующий установки.

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

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

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

Есть рисковая идея сделать бэкап секторов, где присутствуют записи, отформатировать диск видеорегистратором, и вернуть забэкапленные секторы на диск. План не совсем понятен, но в любом случае обязательно имейте образ исходного диска, в состоянии когда вы его вынули из ДВР. Различные операции записи только уничтожают оригинальные видео.

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

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

Лучший ответ:
Для телефона следует использовать varchar вместо integer.
и почтайте что-нибудь про SQL-injection и prepared statement

Худший ответ:
А вообще, лучше использовать PDO, там сразу при подключении можно кодировку задать.
Вопрос: Можно ли в JAVA получить доступ к private-полям?

Лучший ответ:
Через рефлексию
https://javarush.ru/groups/posts/513-reflection-ap...

Худший ответ:
Через рефлексию
https://javarush.ru/groups/posts/513-reflection-ap...
Вопрос: Как вывести текст на страницу PHP не привязывая PHP скрипт к странице?

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

если же пытаться настаивать на своей формулировке без объяснений, то может сучиться конфуз.

Худший ответ:
если я верно понял вопрос по комментариям, это javascript injecting, сделать это можно только на стороне клиента (плагином к браузеру или командой в консоли)

Например плагин к браузеру удобный tempermonkey, позволяет запускать пользовательский javascript в зависимости от url (по маске например example.org/path/*)
Вопрос: Как организовать проброс по хосту в mikrotik?

Лучший ответ:
Если занят другим 80й порт - как тогда его можно пробросить второй раз?)) 
Для 1 внешнего IP возможен только один  80й(или любой другой) порт

Варианты решения.
1. Поставить NGINX и через него проксировать запросы(только http). Тоесть на NGINX приходит на 80 порт, дальше он решает, в зависимости от домена, на какой серв перенаправить запрос. На NAS или на другой веб сервер.
2. Купить еще 1 внешний IP адрес у провайдера и через него уже пробросить 80 порт на NAS

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

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

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

Худший ответ:
Борьба с хотлинками описана тут https://misha.agency/htaccess/block-hotlinks.html
Вопрос: Почему не открывается и стала не кликабельной форма для заявки на сайте после смены хостинга и перехода сайта на https?

Лучший ответ:
Сдаётся мне, консоли F12 будет не достаточно,Достаточно
не хватает закрывающего тега </script> перед этой строкой: 
<!-- Global site tag (gtag.js) - Google Analytics -->

Худший ответ:
Ещё при попытке отправки заявки у вас вылезает ошибка PHP:

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

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

Многие службы и задания из планировщика запускаются от имени SYSTEM. В каталоге пользовательского профиля не стоит удалять SYSTEM там где он есть по умолчанию. В каталогах, которые вы создаете самостоятельно вне профиля вы можете регулировать права как вам угодно.

Худший ответ:
Если кратко, то от имени этого пользователя выполняются практически все службы. Служба - это программа которая работает в фоне. Как правило, они обслуживают твой компьютер, чтобы он чувствовал себя хорошо, и мог то, что может. В последних версиях Windows список существующих служб можно посмотреть на закладке "Службы". Можешь посмотреть какие службы за что отвечают. System имеет почти безграничную власть над компьютером. И если начать эти права ограничивать, то винде поплохеет.
Вопрос: Как поднять два процесса в nginx?

Лучший ответ:
Один nginx с несколькими секциями server.

Худший ответ:
Зачем все эти сложности с поддоменами, когда все относительно просто

upstream client-upstream {
    server    0.0.0.0:3000;
    keepalive 15;
}

upstream back-upstream {
    server    0.0.0.0:8000;
    keepalive 15;
}

server {
	listen ${HOST_IP}80;
    server_name ${PROJECT_NAME} www.${PROJECT_NAME};

    server_tokens off;

    root /var/www/prod/public;
    index index.php index.html index.htm;

    location / {
         proxy_pass http://client-upstream;
         proxy_http_version 1.1;
         proxy_set_header Upgrade $http_upgrade;
         proxy_set_header Connection $http_upgrade;
         proxy_set_header Host $host;
    }
    
    location /api {
         proxy_pass http://back-upstream;
         proxy_http_version 1.1;
         proxy_set_header Upgrade $http_upgrade;
         proxy_set_header Connection $connection_upgrade;
    }
}
В данном коде pm2 уменя поднимает и бэк и фронт на nuxt, со статичным бандлом реакта думаю все еще проще
nuxt крутится на 3000 порту бэк на 8000. При обращении на domain.ru/api nginx проксирует на 8000 порт в остальных случаях на 3000
Вопрос: Языки программирования для инженера иб?

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

Худший ответ:
Насколько понимаю, необходимо знать основы информационной безопасности, английский (хотя бы на уровне понимания написанного), ну и язык программирования. Что-то из классики. C, C#, Java, PHP.  Интересное желание идти в it и не учить языки). Перед выбором стоит копнуть поглубже в сферу,  понимать какие технологии применяются и что придется учить. В Google масса информации по запросу "Что нужно знать специалисту информационной безопасности? " Кстати, на Хабре есть статья: https://habr.com/ru/company/habr_career/blog/464563/
Вопрос: Почему виснет при загрузке с новой видеокартой?

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

Худший ответ:
бп тянет? доп питания есть на ней и подключено?)
Вопрос: Где в Bitrix найти поддомены?

Лучший ответ:
Bitrix разве сферический конь в вакууме ?

 Bitrix расположен на хостинге и в панели управления (если она есть) или в конфигах nginx в папке vhosts или в конфигах apache (если нет nginx) совершенно точно все поддомены указаны.

Второй вариант - если ваша зона dns расположена у нормального хостинга то запрос AXFR выгрузит все записи зоны (поддомены там тоже будут).

Худший ответ:
https://dev.1c-bitrix.ru/learning/course/?COURSE_I...
читаем ман как это делается, понимаем че искать
Вопрос: Какое ПО для удалённой поддержки вы использовали?

Лучший ответ:
Anydesk и без вариантов. Самый удобный и не жрущий трафик - для нас это было важно. 
Можно сделать корпоративный инсталер - прописанными настройками. 
А платить нужно только за активные сессии - что очень круто. К примеру - 1000 юзеров - а у нас куплено 5 лицензий. Итог - 5 активных подключений одновременно. Для саппорта - лучше не придумаешь.
Полюс можно закупиться Алисами - и каждому компу дать имя - что бы потом не запариваться.

Худший ответ:
Может быть такой вариант?

https://www.nomachine.com/ru/download
Вопрос: В чем ошибка моего кода?

Лучший ответ:
Самое время познакомиться с темной стороной программирования. 
Начинающие вайтишники искренне думают, что программист - это типа такой художник. Берет мольберт, поллитру, кисти и начинает ВАЯТЬ. Потом отходит на шаг, любуется делом рук своих, и снова. Ваять. А потом сразу заказчику, за большие деньги. 

Так вот,  в реальности это всё не так.
Большую часть времени программист не пишет код.
А пытается разобраться, почему он не работает. 

Так что мы будем сейчас учиться это делать. 
Тем более, что это в принципе несложно. 
Главное не думать, что чем-то поможет сидеть и тупить в свой кодик. И приглашать других людей потупить в него тоже бессмысленно. Потому что причина может быть совсем не в нем. но даже если проблема и в коде, то искать её всё равно надо по-другому. 
В код не надо тупить. Его надо ЗАПУСКАТЬ.
И выводить промежуточные результаты. Проверять его работу. 
Заранее выяснить, какие должны быть значения у переменных, и проверять их на каждом этапе.
Где не совпадут - там и проблема. 
В идеале IDE сама покажет содержание всех переменных при трассировке, но если пишешь код в блокнотике, то даже тупо писать var_dump($bar1,$var2,$var3...); и смотреть что там лежит.
Условия проверять еще проще, тупо echo 'зашли в условие if (!empty($user))';
И если лежит не то, или эхо не выводится - вот тогда уже смотреть в код и думать, почему так получилось.

В частности, при авторизации надо проверить две вещи:
1. Находится ли юзер по логину
2. если находится, то проверить корректность хэша. Для этого при регистрации надо вывести полученный через password_hash пароль и записать на бумажке
потом запросить сохраненный из БД и сравнить

Кроме того
Разумеется, отладка невозможна без сообщений об ошибках. 
В половине случаев РНР человеческим голосом сообщает в чем проблема. 
Поэтому всегда, в любом окружении должно стоять error_reporting(E_ALL);
плюс на домашнем компике полезно прописать ini_set('display_errors', 1); чтобы сразу видеть ошибки на экране. 
На боевом сервере разумеется поставить 0 вместо 1, и добавить  ini_set('log_errors', 1);

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

Худший ответ:
Если не делаешь через подстановочные знаки вопроса, то используй тогда функцию mysqli::real_escape_string, а то реально и инъекция будет, и любой специальный символ всё сломает и так далее.
Вопрос: Как сделать поочередный ajax запрос?

Лучший ответ:
success: function (data) {  // `data` is the return of the `path` view function
          $("#company").html(data);  // replace the contents of the course input with the data that came from the server

          second_ajax(data); //в data хранятся полученные данные, отправляешь их в новый запрос
          }

Худший ответ:
Используйте параметр async: false
https://jquery-docs.ru/jQuery.ajax/
Вопрос: Можно ли из телефона сделать глушилку Wifi/Моб. Сити?

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

Худший ответ:
Глушилка просто забивает эфир в радиусе 5-10 метров. Там стоит достаточно мощный передатчик + антены...
Так что телефон не потянет
Вопрос: Для чего нужны Map и Set?

Лучший ответ:
Окей гугл, что такое "структуры данных".

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

Например при помощи Map ты можешь сопоставить одному объекту другой объект, чего ты никак не можешь сделать при помощи обычных объектов.

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

Худший ответ:
Из вопроса ничего не понятно, кроме того, что документацию не читали, гуглить не умеем, о структурах данных понятия не имеем. Грустное зрелище. Душераздирающее.
https://learn.javascript.ru/map-set
коротко: 

Set - это множество уникальных объектов. 
Map - это словарь, где каждому из множества уникальных объектов сопоставлено некое значение (возможно не уникальное).


Совет: изучите структуры данных. Без этого дальше двигаться бессмысленно.
Вопрос: Писать вирусы на фрилансе?

Лучший ответ:
Чувак, ты наверное не понимаешь, что суд не оперирует понятиями буковок и функций. А вот понятием "умысел" он оперирует и очень даже. 
Ты был осведомлен, что ведешь противоправную деятельность. Но от заказа не отказался. И с этого момента ты - соучастник, и пойдешь не по УК 273.1, а по более тяжелой УК 273.2

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

С другой стороны программа такой же сложности вам принесёт раза в два меньше но это постоянный стабильный заработок
Вопрос: Windows Server 2019. Почему пропадает инет у клиентов?

Лучший ответ:
Причина в вас, исправляется заменой на более квалифицированного ;-)

Худший ответ:
DHCP it must

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

Лучший ответ:
Я так понимаю, под "стандартным портом", имеется ввиду VGA? Ну так он лет десять уже как НЕ стандарт.
Касательно вопроса - самый дешевый и оптимальный вариант - переходник. Стоит от ~300-400р за самые дешевые.


Худший ответ:
так подключите телек HDMI...
что такое "стандартный порт" не ясно
Вопрос: Как перевести английское видео на русский?

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

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

Лучший ответ:
на андроид = никак,
на линупс = под Wine

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

если железка x86 то есть мизерный шанс суметь запустить wine на android

рекомендую присмотреться к облачным решениям
берешь в аренду облако, ставишь там windows и настраиваешь удаленный доступ rdp, когда при ложение не нужно, облако останавливаешь
пример на selectel стоимость минимальной windows машины, десяток рублей в час (если брать машину на месяц может получиться дешевле)
Вопрос: Книги по python?

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

Худший ответ:
Лутц - но там либо прочитаешь и освоишь питон, либо забьешь на все это дело. Ибо там два тому по 1100 страниц каждая.
Вопрос: Как сделать такой финт ушами с double?

Лучший ответ:
Используйте memcopy. Копируете из адреса дабловой переменной в адрес интовой.

Трюки с union и реинтерпритацей указателей довольно опасны.

Худший ответ:
Почитайте про битовые поля (bit fields).