Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как узнать курс валюты в командной строке терминала?

Лучший ответ:
у ЦБР есть официальная страничка где можно узнать как получить нужные данные

если коротко, то будет примерно так:
$ curl -s "http://www.cbr.ru/scripts/XML_daily.asp" | enconv -x UTF-8 | xq -r '.ValCurs.Valute[] | select(.CharCode == "USD" or .CharCode == "EUR") |.CharCode + " " + .Value'
USD 74,7087
EUR 79,5716

с помощью curl качаем нужные данные в формате xml
далее переводим с помощью утилиты enconv в обще нормальную кодировку
затем с помощью утилиты xq разбираем полученные данные
xq входит в пакет yq которая по сути является надстройкой над jq, то есть здесь xml транслируется в json а после обрабатывается утилитой jq

вот пример вывода всех доступных курсов валют в отформатированном виде с помощью утилиты csview
curl -s "http://www.cbr.ru/scripts/XML_daily.asp" | enconv -x UTF-8 | xq -r '.ValCurs.Valute[] | .CharCode + " " + .Nominal + " " + .Value' | sort | awk 'BEGIN{print "Code Nominal Value"}{print}' | csview -d' '
вывод:┌──────┬─────────┬─────────┐
│ Code │ Nominal │ Value   │
├──────┼─────────┼─────────┤
│ AED  │ 1       │ 20,3400 │
│ AMD  │ 100     │ 19,1325 │
│ AUD  │ 1       │ 51,0933 │
│ AZN  │ 1       │ 43,9463 │
│ BGN  │ 1       │ 40,7332 │
│ BRL  │ 1       │ 14,3646 │
│ BYN  │ 1       │ 26,6998 │
│ CAD  │ 1       │ 55,2743 │
│ CHF  │ 1       │ 80,5485 │
│ CNY  │ 1       │ 10,8398 │
│ CZK  │ 10      │ 33,5739 │
│ DKK  │ 1       │ 10,7002 │
│ EGP  │ 10      │ 24,4263 │
│ EUR  │ 1       │ 79,5716 │
│ GBP  │ 1       │ 90,6889 │
│ GEL  │ 1       │ 28,3363 │
│ HKD  │ 10      │ 95,3890 │
│ HUF  │ 100     │ 20,7001 │
│ IDR  │ 10000   │ 49,2185 │
│ INR  │ 100     │ 90,1603 │
│ JPY  │ 100     │ 55,4219 │
│ KGS  │ 100     │ 85,4595 │
│ KRW  │ 1000    │ 57,2524 │
│ KZT  │ 100     │ 16,7640 │
│ MDL  │ 10      │ 39,8181 │
│ NOK  │ 10      │ 72,3823 │
│ NZD  │ 1       │ 46,5734 │
│ PLN  │ 1       │ 16,7565 │
│ QAR  │ 1       │ 20,5244 │
│ RON  │ 1       │ 16,1333 │
│ RSD  │ 100     │ 67,8622 │
│ SEK  │ 10      │ 72,2507 │
│ SGD  │ 1       │ 55,7819 │
│ THB  │ 10      │ 21,5775 │
│ TJS  │ 10      │ 69,2908 │
│ TMT  │ 1       │ 21,3453 │
│ TRY  │ 10      │ 39,6051 │
│ UAH  │ 10      │ 20,2313 │
│ USD  │ 1       │ 74,7087 │
│ UZS  │ 10000   │ 66,0995 │
│ VND  │ 10000   │ 31,6013 │
│ XDR  │ 1       │ 99,6569 │
│ ZAR  │ 10      │ 40,6808 │
└──────┴─────────┴─────────┘

ну или конкретно для указанных валют
$ curl -s "http://www.cbr.ru/scripts/XML_daily.asp" | enconv -x UTF-8 | xq -r '.ValCurs.Valute[] | select(.CharCode == "USD" or .CharCode == "EUR") |.CharCode + " " + .Nominal + " " + .Value' | awk 'BEGIN{print "Code Nominal Value"}{print}' | csview -d' '
┌──────┬─────────┬─────────┐
│ Code │ Nominal │ Value   │
├──────┼─────────┼─────────┤
│ EUR  │ 1       │ 79,5716 │
│ USD  │ 1       │ 74,7087 │
└──────┴─────────┴─────────┘

Худший ответ:
Берёте любое API с курсами и получаете инфу, в чем проблема конкретно у вас?
curl https://www.cbr-xml-daily.ru/daily_json.js | jq ".Valute.EUR.Name,.Valute.EUR.Value"
Вопрос: Как расширить список поддерживаемых единиц путём задавания правил конвертации с помощью JSON файла?

Лучший ответ:
const converter = {
  "m":{
    "cm":{k:0.01	},
    "in":{k:0.254	},
    "ft":{k:0.3048	},
  },

Тут можно улучшить. Если посмотреть на этот JSON документ с "прищуром". То можно увидеть
полносвязный граф. Например узел футов ("ft") имеет свое ребро в направлении дюймов ("in").
И все другие также.

Нужно ли нам описывать так много цифр? Я-бы предложил одну таблицу. Все меры длины отобразить на метры.
Тогда формула перехода ft -> in будет всегда идти через метрическую систему. ft -> m -> in.

А ребра графа мы все равно сможем получить но уже путем вторичных расчетов если надо.

Худший ответ:
Можно как-то так:
const converter = {
	"m": {
		"cm": {k:0.01	},
		"in": {k:0.254	},
		"ft": {k:0.3048	},
	},	
	"cm": {
		"m": {k:100		},
		"in": {k:2.54	},
		"ft": {k:30.48	},
	},	
	"in": {
		"m": {k:39.3701	},
		"cm": {k:0.393701	},
		"ft": {k:12		},
	},	
	"ft": {
		"m": {k:3.28084	},
		"cm": {k:0.328084	},
		"in": {k:0.833333	},
	},	
};
// ...
sum = converter[unit]&&converter[unit][inUnit]&&converter[unit][inUnit]["k"] ? +inValue*converter[unit][inUnit]["k"]: NaN;
Вопрос: Когда задействована батарейка BIOS?

Лучший ответ:
нет
но с учетом что там обычная батарейка, она всё равно деградирует постепенно

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

Лучший ответ:
Почему не нужно заранее объявлять массив?

Как правильно заметили в комментарии выше, "это РНР, тут так можно". 
Раньше вообще можно было инициализировать переменную как строку, и потом обращаться к ней, как к массиву.
Начиная с 7 версии начался отход от таких вольностей, но он всё ещё  в процессе.

Значит то что пишут $result = [] Это я удобства?

Не для "удобства", а для того, чтобы волосы на голове сохранились подольше. 
В данном случае нужды в явном присвоении нет.
Но любой код со временем изменяется. И функция tower_builder() может разрастись. Там появится ещё один цикл, который работает с массивом $result. Который получит какое-то значение до начала нашего цикла, и в итоге конечный результат будет неправильным. Поэтому $result = [] перед началом работы с массивом - это не каприз или удобство, а необходимость

Худший ответ:
php слишком многое прощает.

Если в вашу функцию передать $n <=0, то будет Notice/Warning (от версии php зависит).
https://onlinephp.io/c/7167c

Но если задать значение по умолчанию для $result, то ошибки уже не будет.

Советую присмотреться к статическим анализаторам кода:
https://psalm.dev/r/296a277b14
https://phpstan.org/r/13fea7ab-0cb4-492c-8241-7b26...
Вопрос: Если я куплю хорошую внешнюю аудиокарту — я смогу слушать на обычном ноуте Hi-Fi звук через наушники?

Лучший ответ:
Все "современные" (уже больше 10 лет как) встроенные звуковые карты умеют 96kHz дескритизацию
Если видеокарта типовая то значит и в linux будет поддержка, но там больше нужно смотреть софт а не драйвера

Хорошая аудиокарта и linux почти наверняка не совместимы, ищи на специализированных форумах, возможно там подскажут

p.s. с высокой вероятностью тебе не нужна звуковая карта, хватит стоковой, бери нормальные наушники

Так же есть лайфхак - bluetooth и hdmi (а еще есть цифровые порты s/pdif, почти на всех материнках их не выводят наружу) переносят задачу формирования звука наружу, т.е. качество этой звуковой карты перестает иметь смысл. Получается тебе внешний ЦАП нужен (их обычно встраивают в хайфай усилители) это и будет твоя звуковая карта.

Худший ответ:
И да и нет: если у вас хорошие наушники, но источник звука — встроенная аудиокарта, то качество станет лучше.
Если у вас вместо хороших наушников какая-то простая гарнитура от телефона, то улучшение качества едва ли получится заметить.
Звучание — очень комплексное и не дешёвое увлечение. Нужно хорошее всё: файл, источник, усилитель, наушники.
Вопрос: Программа зависает?

Лучший ответ:
У тебя "программа" наполовину состоит из импортов, из них половина не используется.
Ты маньяк?

Худший ответ:
Много лишнего. Вместо numpy, pyscreenshot, cv2 можно использовать PIL. Не совсем понятно, зачем в цикле несколько раз делается скриншот, при том, что используется только 1. Если делается цикл, то объявление всяких констант лучше выносить за него.

Например так, вместо использования промежуточных модулей с сохранением файла и вложенного цикла.
import time
import pytesseract
from PIL import Image, ImageGrab

pytesseract.pytesseract.tesseract_cmd = "C:\Program Files (x86)\Tesseract-OCR/tesseract.exe"
tessdata_dir_config = r'--tessdata-dir "C:\Program Files (x86)\Tesseract-OCR\tessdata"'
time.sleep(10)
while True:
    try:
        time.sleep(4)
        # просто считываем с экрана и напрямую распознаем
        img = ImageGrab.grab(bbox=(713,550,1400,586))
        text = pytesseract.image_to_string(img, lang='rus', config=tessdata_dir_config)
    ...
Вопрос: Почему скорость разных языков разная?

Лучший ответ:
Допустим нам нужно сложить два числа - 2 и 3

На ассемблере:
Кладем 2 в регистр ax, 3 - в регистр bx, выполняем команду сложения регистров -  в результате у нас в ax ответ.
Грубо говоря - у нас выполнились всего 3 команды на уровне процессора.

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

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

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

Лучший ответ:
Примерно в 3 раза (с учётом мощности 95 Вт).
Но радиатор всё-таки нужен будет, без него - никак.

Худший ответ:
совсем без охлаждения? - никак
Вопрос: Какие есть недостатки у ESP32?

Лучший ответ:
Главная проблема ESP-образных систем - это то, что вы не контролируете их полностью. Вы можете писать только CALLBACK-реакции на всевозможные события, но часть времени процессор будет занят выполнением закрытой от вас части прошивки, на которую вы влиять не можете.

Из-за этого, всякий жесткий реалтайм, который легко делается на AVR или STM (вроде частотных преобразователей), на ESP сделать нельзя, не отключая WiFI полностью.

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

Лучший ответ:
Если речь про видеоускорители для вычислений, то никакой производитель ноутбуков не предложит решения. Лучшим вариантом будет сборка отдельного системника у себя дома со специфическим видеоускорителем. Его выбор уже зависит от бюджета, но можно взять даже банальный GTX1080Ti, сильно подешевевший на вторичном рынке. А так — выбор очень велик, стоит посмотреть в сторону Nvidia Tesla. В зависимости от поколения они будут стоить чуть ли не от 30 тысяч рублей на площадках продажи б/у железок.

Худший ответ:
Присоединюсь к ответам умных ребят.
Если вы под DS подразумеваете «повертеть таблички в пандасе и разобраться в «классической машинке» (sklearn, бустинги и т.д.), то вам ничего не помешает это сделать на обычном ноуте. Любом. Тем более, датасеты обычно в начале тестовые и не тяжелые. Выбирать ли мак или нет - вообще дело исключительно вашего удобства.

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

Все от задач.
Вопрос: Почему из-за position: absolute появляться пустая область?

Лучший ответ:
Absolute вырывает элемент из обычного потока. В потоке остаются h2 и h3. У последнего, вероятно присутствует нижний внешний отступ (margin-bottom). А дальше на сцену выходит эффект, называемый схлопывание марджинов

Худший ответ:
Блок section.test становится меньше, вот и все.

Потому что у вас не задана явно высота блока section.test
По умолчанию высота блока равна высоте контента внутри него. 

position: absolute;
right: 0;
bottom: calc(50% - 25px);

Вышеуказанными свойствами вы перемещаете блок в другое место и высота section.test уменьшается.
Вопрос: Хватит ли бесплатной версии PyCharm для изучения и построения сайта на Django?

Лучший ответ:
А в чем проблема? Я первые проекты на Django делал в обычном текстовом редакторе.
И сейчас часто простые легковесные проекты делаю в том же Sublime Text, когда лень маломощный ноут IDE грузить..

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

Лучший ответ:
d=`date +%s -d '2022-02-19 13:32:09'`
echo $(( (`date +%s` - d) / 60 )) # количество минут от заданного до текущего времени

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

Лучший ответ:
Введи sudo ncdu /
Если в системе нет ncdu то установи его командой sudo apt update && sudo apt install ncdu

Худший ответ:
В консоли выполни du -sh /home/*
скорее всего у тебя в GUI не учитываются "скрытые" папки, которые начинаются с точки. типа .m2 и другие штуки, куда может забиться разного кеша и хлама.
Вопрос: Как безопасно перезагрузить службу внутри PHP скрипта?

Лучший ответ:
добавить в sudoers 
www-data ALL=(ALL) NOPASSWD:  /usr/bin/systemctl reload tor
без запроса пароля пользователя будет исполняться только указанная команда.

Худший ответ:
У тора есть управляющий порт, в котором можно делать Реконнект для смены айпи
Вопрос: Создает ли балансировщик NGINX репликации в БД между серверами?

Лучший ответ:
А зачем нужен балансировщик? У вас так много HTTP запросов? Сколько в секунду в пике?
Есть ли мониторинг СУБД? Что показывают различные параметры нагрузки?

Преждевременная оптимизация - корень всех бед

И, вообще, похоже на ошибку молотка.

Худший ответ:
Нет. Работа с БД не входит в функции Nginx.
Вопрос: Возможно ли меня рассекретить?

Лучший ответ:
Ага, вот ты и попался!

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

зачем организации кого-то вычислять - непонятно
зачем тратить время на такие ничтожные способы борьбы - тоже непонятно
Вопрос: Как спроектировать страницу авторизации с точки зрения паттерна MVC на PHP?

Лучший ответ:
Или же я вообще пишу глупость
В целом да. Но 

вся эта логика прекрасно будет в index.php лежать?
- это гораздо большая глупость.
Ну то есть лежать-то будет, но к MVC уже никакого отношения не будет иметь.

По пунктам

Юзер не должен принимать в конструкторе логин и пароль. 
Вот сейчас эта страница отображает мне двух юзеров помимо меня. Их обоих надо создавать с логином и паролем, серьёзно?

Что такое AuthPage вообще непонятно. Модель, контроллер? По базе проверяет модель, куки пишет контроллер. А здесь какой-то кадавр.

Перед тем как писать авторизацию "в стиле MVC", надо сначала разобраться, что такое модель, что такое контроллер, и что такое вью.

Модель - это вся логика приложения.
Контроллер - это интерфейс для общения модели с браузером. Делает всё, связанное с обработкой НТТР запросов. 
Вью - отображение. 

Как правильно.

Соответственно в модели должен быть класс User с методом auth(), который принимает логин и пароль и возвращает инстанс класса Юзер.
В конторе делается экшен: отдельный метод, который 
- проверяет, если был запрос методом ПОСТ, то берет из него логин и пароль, 
- валидирует их, если валидация не прошла, то  создает ошибку, которую надо показать юзеру
- если прошла, то вызывает метод auth() модели User, передавая в него логин и пароль
- если совпали, то пишет в сессию ид юзера, и делает редирект куда-нибудь
- если не совпали, то создает ошибку, которую надо показать юзеру
- вызывает вью с формой для логина и пароля

Для регистрации делается еще один экшен, который
- проверяет, если был запрос методом ПОСТ, то берет из него данные для регистрации, 
- валидирует их, если валидация не прошла, то  создает ошибку, которую надо показать юзеру
- если прошла, то то заполняет класс User данными и выполняет метод save() и делает редирект куда-нибудь
- вызывает вью с формой для регистрации

Для личного кабинета делается третий экшен, который берет из сессии ид юзера, обращается к методу read() модели User и через View показывает личный кабинет

Варианты реализации

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

То есть папка user в которой есть, скажем, файл index.php который является экшеном личного кабинета. 
Он проверяет юзера в сессии, и если нету, то перекидывает на auth.php
в auth.php есть форма и ссылочка на register.php
Все три файла инклюдят в себя файл user.php из папки model, в котором есть функции auth(), register() и profile()

Но в более классическом варианта к трем буквам MVC добавляется ещё одна - R, роутер. Специальный сервис, который разбирает адресную строку, и видя, например, что к сайту обратились по адресу /user/register, создаёт экземпляр класса UserController и вызывает его метод register()

Худший ответ:
Контроллер LoginController
Модель User
Представление с формой логина
Вопрос: Какая это кодировка для фото?

Лучший ответ:
Ну, с них к примеру такую картинку можно получить:

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

Худший ответ:
Это просто бинарное представление данных. Можно записать в файл, ну а потом посмотреть, что за тип изображения.
Спойлер: формат не опознан!
leah@leah-pc ~> python3
Python 3.8.10 (default, Nov 26 2021, 20:14:08) 
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> imgsrc = b'\xd9\x01\x10\x02TZH\x00(\x00\xa2\x8b\x80Q@\x05\x14\x00QJ\xe0\x14P\x01E0\n(\x00\xa2\x80\n(\x00\xa2\x90\x05\x14\xc0(\xa0\x02\x8aL\x02\x8a\x00(\xa6\x01E\x00\x19\xa2\x90\x05\x14\x00QL\x02\x8aL\x02\x8aw\x00\xa2\x80?\xff\xff\xff\xff\xd9\x00\x0bV\x00\x00'
>>> file = open('myimage','wb')
>>> file.write(imgsrc)
80
>>> 
leah@leah-pc ~> file myimage 
myimage: data
leah@leah-pc ~> hexdump myimage 
0000000 01d9 0210 5a54 0048 0028 8ba2 5180 0540
0000010 0014 4a51 14e0 0150 3045 280a a200 0a80
0000020 0028 90a2 1405 28c0 02a0 4c8a 8a02 2800
0000030 01a6 0045 a219 0590 0014 4c51 8a02 024c
0000040 778a a200 3f80 ffff ffff 00d9 560b 0000
0000050
Вопрос: Кто знает хорошую сборку на Windows 11 pro?

Лучший ответ:
Сборки - зло.
А насчет тормазов, ну так сами сравните требования:
windows 10

windows 11
Если вы надеетесь, что ОС, выпущенная в 21-м году и, что немаловажно, рассчитанная на новое железо, будет работать так-же шустро как и ОС, выпущенная в 16-м (пусть и с кучей обновлений), то этого не будет.

Худший ответ:
Если есть версия как для вин 10 - LTSB - ставь её. Можешь посмотреть сборки SmokieBlahBlah, там чистая винда с возможностью удобной установки

Лично мое мнение - вин11 ставить раньше чем через 1 год рано еще
Вопрос: Match не возвращает значения?

Лучший ответ:
Дык у вас там вообще нет return, потому и "бред".

Худший ответ:
Рабочий вариант:
function select($a): callable{
  
  return match($a){
  1 => function($b, $c) { return $b + $c; },
  2 => function($b, $c) { return $b - $c; },
  3 => function($b, $c) { return $b * $c; },
  };

}
Вопрос: Какие проблемы встречаются при использование PostgreSQL для 1c на Linux Mint?

Лучший ответ:
Поскольку COM-технология, в принципе работает только под Windows, естественно, все решения с её использованием под Linux работать не будут. К сожалению таких решений довольно много.
Подробнее написано например тут
Что касается PostgreSQL, то в ИТС описаны некоторые недостатки работы с ним, причем это недостатки не самого PostgreSQL, а алгоритмов взаимодействия с ним 1С, т.е. в будущих релизах это может быть исправлено. 
Подробно здесь

Худший ответ:
Если поднимаете на Минте (по сути Дебиан) сервер 1С и вам не нужны виндузные примочки, то все будет отлично. В зависимости от того как разберетесь с конфигами у вас будет проседание производительности по сравнению с виндовс и скулем на точно таком же железе или наоборот получите выигрыш.

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

Лучший ответ:
Имеет смысл поступить так:

Заменить ссылку на кнопку buttonи связать её с формой с помощью атрибута form. 
Форму из этой кнопко-ссылки удалить. 
Останется просто <button form="id-вашей-формы">Log out</button>

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

<form class="mt-5" method="post" action="do_logout.php" style="display:none">
    <button type="submit" class="btn btn-primary" id="submit_button">Logout</button>
</form>

<span style="cursor:pointer" onclick="document.getElementById('submit_button').click();">Log out</span>

А вообще логаут обычно делается не через POST, а через GET запросы. Так и на любую ссылку выход повесить проще становится.
Вопрос: Нужно ли удалять старую версию драйвера NVIDIA GeForce, чтобы обновить на новую?

Лучший ответ:
Примерно 8 лет назад, во времена winxp/7 так надо было делать, теперь нет, удаление происходит автоматически

Худший ответ:
нет, но лучше да
Вопрос: Насколько сильно логическая операция if нагружает процессор в Update?

Лучший ответ:
прикинем по максимуму:

- берем по 20 тактов на каждое ветвление 40 * 20 = 800 тактов для IF
- будем считать что компилятор не делает предварительное чтение в кеш/регистры локальных переменных, берем для 40 проверок 80 целых (int) по (8 байт для х64) (bool откинем как простой) накинем задержку (для каждой в куче) запроса к драм в 20 тактов 40 * 80 * 20 = 64000 * 2 = 128000 (читаем+пишем без кеша) 
- накинем на обновление результатов движком ~10000 
итого: 138000 тактов * 60 кадров в секунду = 8 328 000 тактов 
это выходит где то 1% загрузки для 1 ггц мобильный АРМ, при 1 миллиарде одно-тактовых операций в секунду
десктопный процессор работает сразу на порядок быстрее, это примерно 0,1% для одноядерного 1 ггц
4ггц это уже 0,02%
(если компилятор умеет в предварительное чтение данных, то блок в 128000 тактов чтения можно сократить до скажем 1000, это в районе 15000 тактов ~0.001%, если в игре-системе хорошо работает кеш 1-2-3 уровня, то может и 100 тактов на всё чтение + запись) 
то есть выходит ваши 40 условий это от 1% до 0.02% бюджета для широкого диапазона слабых процессоров

Худший ответ:
Не ну вы можете замерять профайлером, но 40 ифов это ни о чем.
Вопрос: Как называется устройство для горячего подключения/отключения жесткого диска через usb?

Лучший ответ:
горячая замена называется "hot swap".
a будет это bay, или cradle, или dock, или еще что–то – детали/формфактор.

Худший ответ:
Называют их "док-станции для жестких дисков" или Hot-Swap Hard Drive Docking Station
Хоть диски и можно в док-станции подключать/отключать на горячую, так делать конечно не стоит, жёсткие диски не любят когда их трогают во время работы. Поэтому даже в док-станции диск надо сначала извлечь в системе, потом отключить питание и дождаться пока остановится мотор.
Вопрос: Работать в IT или продолжить учебу?

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

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

Лучший выход - перейти на заочку и работать.

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

На мой взгляд, окончательное решение должен решать непосредственно тот, кого это касается

Худший ответ:
Пусть сын сам выбирает как хочет