Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как найти Vector2 позицию за объектом?

Лучший ответ:
Так а в чем проблема-то? Это ж школьная программа?
Точка А у вас есть, точка B тоже. Берёте вектор AB - это вектор B минус вектор A.
Нормируете его до единичного. Для этого нужно вектор AB разделить на модуль (длину) этого вектора. AB/|AB| - это вектор направления на точку, над которой надо поставить камеру.
Осталось этот единичный веткор умножить на необходимое вам расстояние. В вашем случае это 5: AB/|AB|*5
Также моэно вычслить и положение камеры. Допустим камера в точке X и ее координат мы не знаем, но знаем высоту камеры, а значит и вектор CX = (0,0,4), если высоту камеры мы решили взять равной 4.
Итого: X=B+AB/|AB|*5+CX
где: 
X - искомый вектор координат камеры;
B - вектор координат точки B;
A - вектор координат точки A;
AB = B-A  -- вектор, равный разности векторов B и A;
|AB| -- длина вектора AB, то есть его модуль;
CX - вектор, указывающий на камеру относительно точки C, например (0,0,4);

Можно сразу все вектора сделать трехмерными и делать все вычисления в них.

В школе надо учиться. А то потом приходится вот такие детские вопросы тут задавать.

Худший ответ:
Всем спасибо за ответы, похоже моей главной ошибкой была мысль о том, что я хоть что нибудь понимаю.
Что бы найти решение прочитал документацию - https://docs.unity3d.com/ru/2019.4/Manual/Understa... ,
https://docs.unity3d.com/ru/2019.4/Manual/Directio... ,
https://docs.unity3d.com/ru/2019.4/Manual/AmountVe... ,
а также есть очень хорошая статья на эту тему  -   https://habr.com/ru/post/131931/
только после того, как я все это прочитал, я смог понять ответ Сергея и реализовать желаемое
Вопрос: Почему Typescript считает аргумент функции корректным?

Лучший ответ:
Тайпскрипт использует структурную типизацию, а не номинативную.
Это значит, что он смотрит не на имена типов, а на их содержимое-структуру.
И вот по структуре Invalid user расширяет Valid user.

Побороться с этим можно, если ввести какую-нибудь несовместимость между этими интерфейсами.
Например добавив поле type с некоторым константным строковым знаяением

Худший ответ:
А почему нет? Попробуйте передать в функцию не переменную, а сам объект - увидите разницу.
https://www.typescriptlang.org/play?#code/JYOwLgpg...
Вопрос: На мой мэйл пришло странное сообщение с набором слов, цифр и пдф файлом. Кто сталкивался?

Лучший ответ:
Сталкивались все, но все уже давно перестали обращать внимание на подобный мусор.
Если такое письмо пробралось через спам-фильтры в ваш почтовый ящик, то обычно оно просто сразу удаляется руками. На рефлексах.
Непонятно, что Вы хотите про это письмо "разузнать побольше". Представляет ли оно какую-то опасность? Так почитайте что-нибудь о том, какими способами зловреды могут использовать e-mail и pdf. Информации - море!

Худший ответ:
У меня был подобный вопрос. 
Припекло мне посмотреть что внутри.
Читай по ссылке. https://qna.habr.com/q/1209564
Вопрос: Возможно ли учить два языка программирования одновременно?

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

А задавая вот такие дурацкие вопросы на Тостере вместо того, чтобы сесть и учить - не выучишь ничего вообще.

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

Лучший ответ:
не одной фотки и ни одного документа, в чем может быть проблема
У вас точно жёсткий диск в смысле HDD с вращающимися пластинами, а не SSD (твердотельный накопитель)? Для последнего, к сожалению, ситуация вполне реалистичная.

Дальше вопросы: 
-- в ноутбуке нет никаких ухищрений "для скорости", наподобие маленького кэширующего ССД?
-- какая файловая система использовалась на отформатированном диске?
-- сколько времени прошло после форматирования (чем больше, тем хуже)?
-- сохраняли ли какие-либо новые данные на отформатированный диск?

Recuva, R-studio, Hetman Partition Recovery, Wondershare, Pandora Recovery это те которые вспомнил 
Если речь о Windows и соответствующих ФС, то попробуйте также R.saver. Он бесплатный, не требует установки. Главное - скачивайте и распаковывайте не на отформатированный диск. 

если я его занесу в сервис, разве у их есть какой-то другой софт для восстановления?  
Есть PC-3000 с Дата экстрактором. Однако, если вы на 100% уверены, что проблема исключительно логическая, то какие-то заметные улучшения он даст только в отдельных случаях. 
В нормальных местах диагностика бесплатная, вот памятка по выбору такого центра восстановления данных: https://xn----7sbbfbnfa0a2audfacc2cat8e9f.xn--p1ai/

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

Лучший ответ:
а  какая  разница.  На чем  умеете  на  том и пишите

Худший ответ:
Один из вариантов, далеко не единственный. Воспринимать стоит только в ключе того, какие технологии чуть лучше подходят для взаимодействия с существующими скриптами.
Есть скрипты на php/python
Если скриптов на пыхе больше - на laravel (в целом, можно и другой фреймворк, но у лары, емнип, была поддержка фоновых задач из коробки) + flask для запуска питоновских скриптов (для фоновых задач - celery).
Если на питоне - основа на Django (так-же с celery для ФЗ), и чистый php для оставшихся скриптов (ну или какой-то легкий фреймворк (но я не особо в курсе, есть ли такие и насколько они сейчас "живые"))
В обоих случаях - обе части подключены к одной базе, а между собой общаются по restApi.
Вопрос: Должен ли исполнитель разворачивать проект на сервере если этого не было указано в тз?

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

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

Лучший ответ:
При загрузке файла через формы он автоматически сохраняется на сервере под сгенерированным именем, которое можно получить из  $_FILES['file']['tmp_name']. После завершения обработки запроса этот файл удалится автоматически, поэтому его необходимо сохранить в отдельном месте, а для этого нужно указать имя. И тут можно указать любое имя, включая значения полей из массива $_POST. 
В частности, можно продублировать надпись в скрытое поле filename и на стороне сервера заменить $_FILES['file']['name'] на $_POST['filename'].

Худший ответ:
При загрузке файла через формы он автоматически сохраняется на сервере под сгенерированным именем, которое можно получить из  $_FILES['file']['tmp_name']. После завершения обработки запроса этот файл удалится автоматически, поэтому его необходимо сохранить в отдельном месте, а для этого нужно указать имя. И тут можно указать любое имя, включая значения полей из массива $_POST. 
В частности, можно продублировать надпись в скрытое поле filename и на стороне сервера заменить $_FILES['file']['name'] на $_POST['filename'].
Вопрос: Почему компьютер выключается с синим экраном?

Лучший ответ:
Краткий ответ у вас какое то кривое оборудование, точнее драйвер который некорректно обрабатывает процедуру выключения. 
1 что нужно сделать это просмотреть журнал системы после перезагрузки, скорее всего там будет причина. 
Если это какой то файл sys, то определите к чему он относится. После этого обновите его или откатитесь к предыдущей версии.

Худший ответ:
Надо анализировать код ошибки этого самого синего экрана смерти
Вопрос: Сложение элементов списка через sum в python не работает, почему?

Лучший ответ:
Вы где-то выше переопределили значение встроенной функции "sum" на число (sum=0).

Не используйте названия встроенных функций для собственных переменных (sum, list).

Худший ответ:
скорее всего где-то раньше в коде переопределена переменная sum, в которой лежит int, код рабочий
Вопрос: Как всё таки работает асинхронность?

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

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

Ядром асинхронной программы является паттерн "реактор" - рабочий цикл. В контексте клиентского JS это рабочий цикл браузера, в контексте ноды - что-то отдельное, я полагаю (с нодой не работал).
Цикл делает следующее:
- ожидает завершения одной из операций ввода/вывода или ожидания (любой)
- определяет, какая корутина ожидала эту операцию
- передаёт ей управление
- корутина делает своё дело, обрабатывая результат операции
- потом корутина либо завершается, либо планирует еще одну операцию. И цикл возобновляется.

Отсюда и вытекают все плюсы и минусы. С одной стороны, переключение между корутинами происходит в явно указанные моменты времени, так что меньше возни с синхронизацией.
С другой стороны, длинные вычисления так не распараллелишь - только ввод/вывод. Ну или в длинном вычислении время от времени делать паузу, но выигрыша все равно не будет. Так что это имеет смысл только для IO-bound программ.

Худший ответ:
То что написано - это асинхронный I/O. Может ещё быть асинхронное вычисление, запускаемое в отдельном потоке. Ещё бывает дурацкий вариант, когда синхронное I/O запускается в отдельном потоке, который просто ждёт.
Вопрос: Как сделать стенд с VMWare vCenter без физического сервера?

Лучший ответ:
Да, возможно. Более того, у меня оказалось железо, на котором ESXi не захотела запускаться; но в виртуальной машине KVM на том же железе запустилась и установилась без каких-либо сложностей.

С другой стороны, есть же версия vCenter под винду.

Худший ответ:
vCenter под винду не канает разве?
Вопрос: PHP file_put_contents дописывает в файл или перезаписывает его?

Лучший ответ:
file_put_contents(... FILE_APPEND) дописывает содержимое в конец без пересоздания и перечитывания файла
это просто упрощенная запись конструкции
fopen(...,'a');fwrite(...);fclose(...);
если FILE_APPEND не указывать, то используется режим типа w+ (существующие файлы обрезаются в 0 размер, не существующие ошибки не вызывают)
p.s. важное замечание file_put_contents FILE_APPEND работает очень медленно, синхронизируя каждую запись с диском, я помню переписывал код на использование fopen/fwrite плюс там можно гибко задавать буфер записи

upd. на самом деле там используется просто режим 'a' и 'c' и чуть больше проверок
С интересом обнаружил по исходникам что file_put_contents умеет писать array, объединяя без разделителя значения и пропуская ключи.... век живи век учись, не знаю зачем но смешно

Худший ответ:
Кастомный лог имеет смысл делать в файлах с именем, содержащим дату, в папке, на которую можно натравить logrotate. Тогда вас не особенно будут волновать такие нюансы - не накопите же вы гигабайты лога за день.
Вопрос: Как работать с БЭМ и Sass в случае со вложенными элементами?

Лучший ответ:
.block {
  &__element-2 {}
  &__element-1 {}
  &__element-1:hover &__element-2 {}
}

.block {
  $this: &;
  &__element-2 {}
  &__element-1 {
    &:hover #{$this}__element-2 {}
  }
}

и при повышении вложенности ситуация усугубляется

Не нужно увеличивать вложенность. Это противоречит идеологии БЭМ.

Худший ответ:
& можно засунуть в переменную. пример https://codepen.io/colinlord/pen/KozWWP/
Вопрос: HDD диск через USB3 для видеонаблюдения 7 потоков в режиме 24/7 можно?

Лучший ответ:
Крайне не рекомендую.
1. Скорость записи по USB в многопоточном режиме может быть непредсказуемой, а нормальных тестов USB контроллеров вы не найдете.
2. Скорость записи по USB может не предсказуемо скакать от загрузки системы. Как и время отклика.
3. С очень высокой вероятностью вы получите периодический "отвал" дисков, по целому ряду причин.
4. С очень высокой вероятностью вы поучите перегрев контроллера и возможно диска.

Вообще USB это очень не стабильно, особенно при заметной нагрузке.

Худший ответ:
Минус один - низкая надежность. Диск сдохнет и 

-запись остановится
-старые записи будут утрачены

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

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

Худший ответ:
Любую из предлагаемых для предустановки хостером + прямые руки.
Вопрос: Телефон напросто не заряжается в включенном состоянии после попадания воды в разъем питания. Что делать?

Лучший ответ:
Главная ошибка - намокший телефон нужно было сразу выключить, извлечь батарею (если извлекаемая) и долго и тщательно его сушить. А Вы мало того, что продолжали пользоваться, так ещё и к зарядке подключали, чтобы уж наверняка всё прокорродировало.
Последствия могут быть абсолютно любые. Наверное лучше в сервис нести. Всё равно, что можно дома сделать? Разьве что аккуратно-аккуратно разъём попробовать почистить...

Худший ответ:
Выключить, просушить, прочистить кисточкой аккуратно, продуть разъём. Разобрать, промыть плату разъёма в спирте(или Калоше) и опять прочистить/продуть/просушить. И всё внимательно просмотреть под микроскопом.
Вопрос: Как Arduino Pro micro отследить выключение ПК?

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

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

Худший ответ:
а что вам мешает запитаться не от юсб а от +12в наверняка свободный шлейф есть в компе. Он то точно будет вкл/выкл работать
Вопрос: Почему выдает что переменные x,y,z — неинициализированы? Почему выдает что == неуместны и возможно я имел ввиду =?

Лучший ответ:
Что ты хотел сделать этим:
if (a >= b && b >= c) {
  x == a; y == b; z == c; // <-- ???
}

Худший ответ:
В c++ оператор присваивания - это "=". "==" - это оператор сравнения.
Вопрос: Есть ли смысл устанавливать хакинтош?

Лучший ответ:
Смысла нет.
Актуальный б/у Макпук можно купить за 30-40 тысяч в идеальном состоянии.
Если не устраивает - крутите виртуалку.

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

Лучший ответ:
девелопить софтваре

Худший ответ:
Обычный программист
Вопрос: Трюк с тернарным оператором PHP?

Лучший ответ:
В целом то, что вам нужно скорее ближе к новой функциональности в PHP 8: throw expression. В этом случае ваш код мог бы выглядеть, к примеру, вот так:
Auth::check() ?? throw new AuthenticationRequiredException("Вам необходимо сначала авторизоваться");
Однако, если вы реально хотите именно такой конструкции как ваша - то здесь, конечно, тоже есть варианты, ведь начиная с PHP 7 нам доступен uniform function call syntax и, следовательно, возможны конструкции вида:
Auth::check() ?? (function(){echo "Вам необходимо сначала авторизоваться";})();
Конечно, я ни в коем случае не призываю делать именно так, это плохое решение, но технически возможное. 

Существенно лучшим вариантом в этом случае на самом деле будет просто создание отдельной функции, которая будет брать на себя реакцию на такие ситуации:
function failure(string $error): void 
{
  // Просто для того чтобы быть ближе к вашему примеру, 
  // в реальности здесь должна быть нормальная логика обработки, 
  // к примеру тот же throw new RuntimeExcepton($error);
  echo $error;  
}
в этом случае ваш пример сводится к:
Auth::check() ?? failure("Вам необходимо сначала авторизоваться");
Помимо этого обратите внимание на то, что использование null coalescing operator ?? подразумевает, что тип возвращаемого значения функции Auth::check() - это mixed|null что выглядит странно, поскольку от результата проверки ожидается тип boolean.

В реальности здесь лучше подходит сокращённая версия тернарного оператора, т.н. elvis operator. В этом случае ваш код может выглядеть вот так:
class Auth {
    public static function check(): bool 
    {
        return false;
    }
}

function failure(string $error): void 
{
    // В реальности, как указано выше, лучше использовать 
    // throw new RuntimeException($error);   
    // echo используется для примера
    echo $error;
}

Auth::check() ?: failure('Вам необходимо сначала авторизоваться');
Проверить можно здесь.

Худший ответ:
Просто выбрасывать исключение нужно внутри метода check() и переименовать его в assert(). Тогда все станет на свои места.
Вопрос: Разница между @~ и @^?

Лучший ответ:
Эти символы абсолютно идентичны. Используются для относительных ссылок назад в историю от какой либо точки. 
Например git reset HEAD^3 переключит текущую ветку на три коммита назад относительно текущего состояния.

Худший ответ:
Разница описана в документации.

В частности @^ и @~ действительно совершенно случайно выбирают одно и тоже, но у них разный смысл.

@ в данном контексте синоним HEAD.
^ (=== ^1) — выбрать первого родителя коммита. У большинства коммитов никакого другого и нет, так что числа отличные от 1 имею смысл только для merge-коммитов.
~ (=== ~1) — выбрать родителя (если их несколько, то выбирается первый).

Но, например, @^3 выбрать третьего родителя у коммита. В 99.99% случаем это будет ошибка, потому что в живой природе больше двух родителей практически не бывает.
А вот @~3 означает выбрать «пра-дедушку» коммита и это эквивалентно записи @^1^1^1 (или @^^^).
Вопрос: Как проверить наличие всех элементов в массиве Python?

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

students = ["Вася", "Петя", "Ваня", "Света"] # Должно быть так
students = ["Петя", "Ваня", "Света"] # А не так или как-то иначе

Списки должны совпасть.

Значит в момент переклички создаёте ещё один список, куда помещаете присутствующих, 
иначе какой смысл в перекличке, если не с чем сравнивать.

Поэтому:

all_students = ["Вася", "Петя", "Ваня", "Света"]

current_students = [] # сюда помещаете имена людей в момент переклички

current_students.append('Вася') # добавляете имена в момент переклички в пустой список
current_students.append('Петя')
current_students.append('Ваня')
current_students.append('Света')

if all_students == current_students:
	print ('Все студенты на месте. Начинаем занятие!')
else:
	for name in all_students:
		if name not in current_students:		
			print ('Занятие отменяется из-за отсутствия ' + name.title())

#  Результат: 
# ---> Все студенты на месте. Начинаем занятие!

Если кто-то не пришёл и не попал в список создаваемый во время переклички, то:

all_students = ["Вася", "Петя", "Ваня", "Света"]
current_students = []
current_students.append('Вася')
# current_students.append('Петя') # не явился
current_students.append('Ваня')
current_students.append('Света')

if all_students == current_students:
	print ('Все студенты на месте. Начинаем занятие!')
else:
	for name in all_students:
		if name not in current_students:		
			print ('Занятие отменяется из-за отсутствия ' + name.title())

#  Результат: 
# ---> Занятие отменяется из-за отсутствии Петя!

Худший ответ:
Самый простой вариант: просто сравнить количество присутствующих студентов с общим количеством.
students = ['Вася', 'Петя', 'Ваня', 'Света']
present_students = ['Вася', 'Петя']

if len(students) == len(present_students):
    print('Все студенты на месте. Начинаем занятие!')
else:
    print('Отсутствующие к экзамену допущены не будут')
Вопрос: Сервер на Flask, стоит ли?

Лучший ответ:
> WebSocketы или Flask?
Если нужен реалтайм - вебсокеты, не нужен - http. Flask тяжеловат, лучше посмотрите на fastapi. 
Кроме websocket для реалтайма можно найти либы или сделать свой протокол на udp

> С чем удобнее работать в Unity?
Одинаково

> Что по производительности?
Поддержка постоянного websocket соединения более ресурсоемка, но если нужен реалтайм - нет выбора

> Что безопаснее?
Одинаково

> Какие подводные камни?
Индивидуальны, свои грабли вы найдете сами

Худший ответ:
Flask значительно удобнее. Unity лучше работает с HTTP\HTTPS запросами
Вопрос: Как долго и безопасно для здоровья сидеть за компьютером?

Лучший ответ:
По старым околосоветским нормативам, которые никто не отменял - оператору ЭВМ в каждый час работы положен 15 минутный перерыв. Т.е. 45 минут поработал - 15 минут зарядку сделал. И глаза отдохнут и размяться можно.

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

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