Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Какой нужен USB кабель для того чтобы ёмкость заряда пауэр бэнка не была в 2 раза меньше?

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

Ёмкость аккумулятора в ампер-часах указывается, как правило, при напряжении литий-ионных ячеек, которые как раз и имеют напряжение 3.7в.

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

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

Чтобы не быть обманутым - используй ватт-часы, вместо ампер-часов.
Для этого тебе нужно просто умножить количество ампер-часов на напряжение.

Например
ПБ: 3.7в * 10к ма*ч = 37 вт*ч
Телефон: 5в * 4к ма*ч = 20 вт*ч 
=> с таким ПБ можно будет зарядить телефон из примера 1 раз, а потом ещё раз, но не полностью.
(Без учёта потерь, ибо КПД никогда не равен 100%)

Провода никак не влияют на ёмкость аккумулятора

Худший ответ:
От кабеля зарядки емкость акб не зависит

А так - плохо прочитали тех характеристики)
Ваш телефон заряжается при 5v, а не 3,7. Поэтому емкость акб и ниже выходит. Читайте посл комент от Банникова
Вопрос: Что лучше 3 сервера с двумя процессорами или 4 сервера но по одному процессору?

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

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

Оркестрация позволяет динамически перераспределять ресурсы в реальном времени, но только на одной машине. Например, вы продаёте 2 гб ram, но клиент использует только 1 гб. Тогда оставшийся 1 гб вы можете продать другим (с учетом потока нагрузки), если все это на одной машине, иначе 1 гб у вас просто простаивает.
Вопрос: Как обработать входящий вебхук?

Лучший ответ:
Чтобы обработать входящий вебхук с авторизацией Bearer, необходимо следующее:

1. Проверить, что в заголовке запроса присутствует поле "Authorization" с префиксом "Bearer " и значением токена доступа.
2. Если поле "Authorization" присутствует, проверить валидность токена доступа с помощью сервера аутентификации.
3. Если токен валиден, обработать данные вебхука в соответствии с логикой, которую вы написали.
4 .Если токен невалиден, вернуть ошибку 403 (Forbidden).

Позже приведу пример

Худший ответ:
Немного не понятно что вы хотите. Вы хотите чтобы у вас была атворизация либо отправлять куда-то запросы с авторизацией?
Bearer токен - всего лишь специально сгенерированная строка, добавляете в хедер запроса, ну и всё.
Вот тут пример можете с кодом сгенерировать https://reqbin.com/post-online (выбрать наверху Generate Code)
<?php

$url = "https://google.com";

$curl = curl_init($url);
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);

$headers = array(
   "Accept: application/json",
   "Authorization: Bearer СУПЕРСЕКРЕТНАЯСТРОКАТОКЕНА",
   "Content-Type: application/json",
   "Content-Length: 0",
);
curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
//for debug only!
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);

$resp = curl_exec($curl);
curl_close($curl);
var_dump($resp);

?>
Вопрос: Ребят, вопрос по поводу становления программистом?

Лучший ответ:
Больше 20 лет в IT. Постоянно копаю новые технологии, библиотеки, фреймворки, ОС, базы данных и прочее. 
Пишу проекты с нуля и участвую в разработке других проектов разного рода (уже около 130+ наберется),  проектирую архитектуры и программно-аппаратные комплексы.
Изучаю разные языки программирования и разные подходы. 
И до сих пор синдром самозванца не отпускает)))
А вам сразу подай готовый план как стать программистом)

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

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

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

Лучший ответ:
Я не знаю, как именно в этой игре выглядит физика.
Но из предположений:
1. Воду можно сделать при помощи физики частиц и шейдера (как я слышал) (https://www.youtube.com/watch?v=_8v4DRhHu2g)
2. Сгибание объектов можно предусмотреть заранее - скорость столкновения и масса известна, так что из них можно посчитать, как должен объект деформироваться.
3.1. Падение с изменением формы - обычные регдоллы (мб ещё процедурная анимация, когда к обычной анимации добавляется ещё влияние внешних сил). Тоесть каждой части тела также задаётся масса, "трение" между этими частями, ограничения на движение, "сила мускулов", "крепкость связок" - из этого также можно реалистичное падение тела сделать.
3.2. Физичное поведение всяких слизистых существ: https://habr.com/ru/post/540274/

Худший ответ:
Использовать UnrealEngine или Unity3d. 
Обычная скелетная анимация https://docs.unrealengine.com/4.27/en-US/Animating...
Физика объектов https://docs.unrealengine.com/4.27/en-US/Basics/Co...
Вопрос: Есть шансы стать андроид разработчиком на фрилансе?

Лучший ответ:
Нужно уметь программировать. Хеллоуворды, еще и с багами, никому не нужны или редко нужны. Это не верстка, поэтому спрос больше, объем выше, сложность намного выше. Войти в эту нишу сложнее чем в веб. К тому же можно писать различные виды приложений: клиент-серверные, игры (могут также иметь сервер), без сервера. Без навыков программирования вообще делать нечего.

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

Худший ответ:
Спрос на android-разработчиков на фрилансе есть, но на тех, которые успели в офисе дорасти хотя бы до мидла. Без реального производственного опыта шансы на фрилансерский успех исчезающе малы.
Вопрос: Где обучиться Java?

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

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

А пока вы сам пытаетесь изучить у вас мотивация очень вероятно закончится и  вы забросите. К тому же решение задачек на Rush - это ни о чем.  Нужно чтоб вас обучили инструментам и смежным технологиям. А самому это все изучать долго и есть вероятность что вы пойдете не тем путем.

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

Лучший ответ:
Вот – простой и понятный пример. Без кучи мусора.
https://jsfiddle.net/DelphinPRO/dztLf9no/

snippet

Худший ответ:
Тут все разжевали Можно сделать вывод, что требуется сторонняя библиотека, ибо все решения, имеют проблемы.
Эта библиотека делает то, что вам нужно.
Вопрос: Как изменить формат времени на Python?

Лучший ответ:
Не занимайтесь ерундой:
currect_datetime.strftime('%H:%M')

Худший ответ:
Тут вся фишка чтобы разобраться в синтаксисе f"{}", он не сложный  и много  где встречается  помимо этой функции.
через двоеточие пишите формат "02d" (незначащие нули 2 символа целые числа)
currect_datetime = datetime.now()
currect_time = f'{currect_datetime.hour:02d}:{currect_datetime.minute:02d}'
#так тоже можно
currect_time = f"{currect_datetime:%H:%M}"
Вопрос: Как организовать мониторинг в реальном времени доступности компьютеров в сети?

Лучший ответ:
Начать можно с  friendly pinger, но по уму, сразу настраивать Zabbix, с отправкой уведомлений в телегу

Худший ответ:
Решал такую задачу другим способом, это подойдет если используете M365 и есть Power Automate в подписке.

Скрипт на Powershell (список машин может быть как статичным, так и динамично получаемый ежедневно, ежечасно, как угодно) пингует машины, дальше результат выполнения скрипта кладется в OneDrive, в результате чего отрабатывает триггер, запускающий Power Flow, который, проходит по файлу и, если (в моем случае было так), есть строчки с offline, то отправляет письмо всем заинтересованным.
Вопрос: Как убрать пробел в строке print в Питон?

Лучший ответ:
name = input("Как вас зовут? ")
print(f'Привет, {name}!')

Худший ответ:
А если нужно именно убрать вставку пробела между выводимыми значениями, то делаешь так:
print('Привет,', name, '!', sep='')
При этом sep может быть любой строкой, например:
print('Привет,', name, '!', sep='::')
выведет "Привет,::Вася::!"

Аналогично есть параметр end, который указывает, что print() выведет после всех значений. По умолчанию это "\n" - переход на следующую строку, но можно указать end='', и тогда курсор останется на той же строке.
Вопрос: Могут ли через проприетарный кодек хакнуть комп?

Лучший ответ:
Да, кодек может содержать в себе зловред, как и любое другое ПО

Худший ответ:
Причем тут проприетарность? Через любую программу это возможно сделать. Хоть через калькулятор ) Уязвимость может быть где угодно. И проприетарность софта к этому никакого отношения не имеет.
Даже если кодек открыт и где то в интернете есть его сорцы - вы на 100% уверены, что на вашем компе кодек собран именно из этих сорцов и вы на 100% уверены, что в нем нет никаких уязвимостей и троянов? )
Вопрос: Могу ли заново открывать аккаунт если меня забанили?

Лучший ответ:
Создать то можно. Но его будет ждать судьба первого.

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

Лучший ответ:
И как отключить ее в автозагрузке?
А в чем практический смысл данного действия?

Худший ответ:
ничего не нужно отключать, расслабьтесь.
Вопрос: Почему так работают битовые сдвиги в Java?

Лучший ответ:
Битовый сдвиг для типа long не может превышать 63. Поэтому сдвиг 1L << 64 будет преобразован jvm в 1L << (64 & 0x3f), в результате чего получается 1L << 0 и поэтому у вас значение не изменяется.

Вашу задачу решает сдвиг 1L << 63. Единица изначально находится на 1 позиции (позиции нумеруются справа налево) и сдвигается влево на 63 позиции. Вы получаете желаемую единицу на 64 позиции с 63 нулями позади.

Что касается 128L << 56, то здесь всё корректно и логично. Единица находится на 8 позции и имеет 7 нулей сзади. Сдвигая её на 56 позиций, у вас получается желаемый результат - единица на 64 позиции (8 + 56) и 63 нуля позади (7 нулей + 56).

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

Лучший ответ:
Прихожу в магазин с этой флешкой, загружаю linux с флешки на ноуте.
Правильно мыслишь.
При выборе загрузки загружайся только в обычном режиме, никаких "compatibility mode".
Когда загрузишься проверь сразу работает ли Wi-Fi (если сразу нет вафли, значит какой-то экзотический модуль и драйвера прийдется докачивать), да по сути и всё.
Рекоммендую выбирать модели на основе процессора intel с графой от nvidia, меньше проблем с драйверами будет.

Худший ответ:
Если ты можешь проверить на месте с флешкой и интернетом, то у тебя вин-вин ситуация.
Самые проблемные вещи в linux:
* видеоускоритель, особенно когда в ноутбуке их два (дискретный и встроенный)
с высокой вероятностью будут проблемы с переключением их туда/сюда, со сном (тут вообще миллион проблем) и принципиальным 3D-ускорением воспроизведения видео и игр (это две отдельные задачи, одна может работать другая нет, по разному! смотри 60fps full hd и видео под fps матрицы), в довесок смотри синхронизацию видео с экраном (tearing) при просмотре динамичной сцены.
* периферия
сенсорный экран, тачпад, wifi и bluetooth (вообще весь радиомодуль, например с sim картой), картридер, nvme (бывают с ними проблемы! например только в режиме uefi) и извращения с клавиатурой (например подсветку не выключить/не настроить в linux потому что утилиты только под windows), сканер отпечатков (очень редко в linux работает)
* проверяй режим сна, режим hibernate, для ноутбука это очень важные вещи
* проверь скорость работы, посмотри какие процессы в системе висят, я помню был очень дешевый ноутбук-трансформер с сенсорным экраном (очень дешевый кажется digma citi 400), так вот в штатной ubuntu там периодически всплывал какой то процесс, загружающий половину процессора, подробности не помню что то там с intel в названии, с ходу не нашел просто удивился.

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

Лучший ответ:
Можете воспользоваться robocopy

Худший ответ:
Нормальное решение. Права устанавливайте утилитой cacls.exe (Входит в поставку windows)

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

Лучший ответ:
Потому что atoi(const char * string)

Худший ответ:
Вместо printf("%d\n", atoi(a[i])); напиши printf("%c\n", a[i]);.
Вопрос: Как Переместить весь код в 1 строчку?

Лучший ответ:
Бредовое задание:
name, surname, date_of_birth, username, password = input("введите имя фамилию ... через пробелы").split();print(name,surname,date_of_birth,username,password)

Худший ответ:
Вот так что ли 
print(input("Введите ваше имя!"));print(input("Введите вашу фамилию!")); print(input("Введите дату рождения!"));print(input("Введите имя пользователя!"));print(input("Введите пароль!"))
Вопрос: Нормально забывать технологии, когда перестаешь их использовать?

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

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

Лучший ответ:
Думаю в вашем случае надо делать split delivery 
Если кратко: 
ВСЮ почту получает gmail, все что знает (заведенные почтовые ящики) он хранит у себя, все что не знает - он переправляет на ваш сервер
Возможность этой настройки, однако, может зависеть от тарифного плана на gmail
Ну и надо внимательно отнестись к настройке почтовых DNS записей, чтобы иметь возможность отправлять почту как с gmail так и с self hosted

P.S. ах да, блин, забыл ответ на вопрос
Две (и больше) MX записи для одного почтового домена и разных почтовых сервисов сделать можно, но предназначение у них совершенно другое и вашу схему вы ими не реализуете

Худший ответ:
MX-запись создаётся для почтового домена, то есть части адреса после @. Она не позволяет разделять серверы по имени почтового ящика.
Вы можете только разделить почту по доменам, отдельно abc@example.com и отдельно bcd@mail.example.com. 
@      IN MX 10 own.example.com
mail   IN MX 10 external.example.com
Вопрос: Как libcurlcpp скомпилировать в Visual Studio 2019 под degug+x64?

Лучший ответ:
Установите libcurl x64.

Худший ответ:
А в чем проблема скачать-таки исходники и собрать их той же версией Студии с теми же настройками сборки, чтобы результат нормально слинковался с остальным проектом? На хрена шаманить с "готовыми билдами" в случае открытой библиотеки?
Вопрос: Оптимальное использование серверной платформы для виртуализации?

Лучший ответ:
Раз у организации хватило денег на лицензии MS, как-то странно всё разворачивать на одном сервере - неотказоустойчиво и в целом один AD DC обычно не делают, а делают начиная с трёх (см. split-brain).

Рейд-контроллер ради зеркала на двух дисках - тоже как-то странно. Что будете делать, когда помрёт один из SSD?

Худший ответ:
Бесплатный Hyper-V Server на хост, Server 2019 standard на виртуалки.
1. с 32ГБ ОЗУ не навиртуализируешь
2. Не вижу для вас смысла в виртуализации вообще.
Вопрос: На сервере кончилось место linux?

Лучший ответ:
Скажите есть ли повод переживать по поводу работы сервера?
Нет

Худший ответ:
Поставьте logrotate и большинсто ваших проблем отпадет
Вопрос: Что такое process management в DevOps и как ему обучиться?

Лучший ответ:
Речь идёт, как ни странно, об initd - системе инициализации и управления процессами в операционной системе linux. Да только вот устарел initd, и теперь ему на смену пришел systemd. Учите systemd.

Худший ответ:


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

Или же - 
https://www.geeksforgeeks.org/what-is-init-d-in-li...
Вопрос: Есть 2 провайдера в одном ПК. Как дать разным браузерам разных провайдеров?

Лучший ответ:
Только костылями различными вроде этого: https://r1ch.net/projects/forcebindip

Худший ответ:
Network namespaces Изолирование приложения
Вопрос: Узнать / сравнить в каком месте произошло изменение сайта?

Лучший ответ:
Лет 7 назад, в качестве левака мне давали сайт в котором не могли отбиться от созданий шеллов через дыры. Git позволил быстро вычищать залитое, поставленный логгер через auto-prepend-file секущий подозрительно большие get post зарпросы позволил быстро находить дыры через которые заливали.

Худший ответ:
я не сильно разбираюсь в дырах, вирусах и т.п., но если нужно найти где поменялся код, использую простой скрипт https://disk.yandex.com/d/AEEqcHeP922fRg (скачал в инете), он сравнивает файлы на наличие изменений и выдает где менялось, удобно смотреть.
Вопрос: Как сделать, чтобы карта в футере отображалась?

Лучший ответ:
Если используете яндекс метрику, то необходимо настраивать "особым образом".
Запись содержимого iframe с другого домена
Чтобы Вебвизор записал содержимое iframe, адрес которого отличается от адреса сайта, настройте счетчик особым образом.
См. требования/ограничения
Пример настройки

Худший ответ:
У меня тоже отображается, но если у кого-то нет то значит ее подключили таким способом который может не работать в старых браузерах/старых версиях браузера
Вопрос: Комплектующие для игрового ПК, какие лучше?

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

Настолько топовое железо в примере....а смысл? У меня, например, Intel i7-4820K (LGA2011), ASUS X79 Deluxe, 16 Gb оперативки и видеокарта Gigabyte GeForce1660 Super. "Киберпанк" и все топовые шутеры идут на полных и без багов. По ФПС не подскажу, правда.

Худший ответ:
Оперативку от другой компании желательно, по личному опыту у Patriot проблемы с разгоном. Зачем тебе корпус за 15к? Посмотри авито, тысяч за 3-5 можно приличный б\у найти.
Вопрос: Как сайту на кириллическом домене отправлять почту?

Лучший ответ:
1. Не использовать кириллические доменные имена
2. В случае проблем смотреть первый пункт

Худший ответ:
на киррилических доменах почта работать не будет. Потому что преобразование в punycode почтовые клиенты не умеют, это делают только броузеры.
Вопрос: Почему в Linux нет поддержки windows программ?

Лучший ответ:
Потому что в Linux принят свой формат исполняемых файлов: ELF. Linux — это самостоятельная Unix-подобная ОС, не ставящая перед собой цель воспроизводить функции Windows и быть двоично совместимой с Windows. Если вам нужна открытая ОС, которая воспроизводит функционал Windows, посмотрите на ReactOS.

Худший ответ:
Почему в Linux нет поддержки windows программ?
А зачем?
Вопрос: Почему не работает value инпута?

Лучший ответ:
По тому что невнимательность
formButton.onclick = (e) =>{
    e.preventDefault();
    let value = formButton.value; // у буттона нет валуе, очевидно здесь должно быть formInput
    getResponse(value);
}

Худший ответ:
По тому что невнимательность
formButton.onclick = (e) =>{
    e.preventDefault();
    let value = formButton.value; // у буттона нет валуе, очевидно здесь должно быть formInput
    getResponse(value);
}
Вопрос: Как парсить Ozon через Selenium и обойти их систему защиты?

Лучший ответ:
Попробуй эту библиотеку
https://pypi.org/project/st-undetected-chromedriver/

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

Пример кода:

from selenium.webdriver.common.action_chains import ActionChains

next_page = driver.find_element(by=By.LINK_TEXT, value='Дальше')
action = ActionChains(driver)
action.move_to_element(next_page).perform()
Вопрос: Как найти причину потерь в сети?

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

Худший ответ:
Как найти причину потерь в сети?
Мониторинг и анализ - это самый простой способ, зато долгий. Только надо учесть, что потери != задержка, потери трафика != потери пинга, потери могут возникать из-за недостаточной скорости интернета или пропускной способности сети.

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

Третий вариант (что вы и делали) - менять элементы сети (последовательно, или блочно, или секторно и т. п.) с надеждой, что они испортились. Затем уже чинить элементы на тестовом стенде.
Вопрос: Как удалить обьект из дерева с помощью списка?

Лучший ответ:
Заведите ещё свойство Parent на родительский узел. Тогда при удалении, можно обратиться к родительской и удалить узел из ее свойств, чтобы не обходить дерево.

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

Лучший ответ:
Основы можно узнать (действительно узнать,  или хотя бы суметь ответить на вопросы из собеседований) из книг. Например
1.  Олифер В., Олифер Н. Компьютерные сети.  Принципы, технологии, протоколы.
2. Таненбаум Э.Компьютерные сети.
3. Куроуз Дж.  Компьютерные сети. Нисходящий подход
4. Диогенес Ю.,  Озкайя Э. Кибербезопасность: стратегии атак и обороны
5. Форшоу Д. Атака сетей на уровне протоколов.

Ну из русскоязычных интернет ресурсов:
https://linkmeup.gitbook.io/sdsm/

Худший ответ:
Для быстрого экскурса в сети и протоколы есть неплохой курс "Компьютерные сети" А. Созыкина на ютуб. По ИБ есть портал codeby.net там можно найти и материалы и некоторые ответы на свои вопросы.