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

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

Худший ответ:
Обрабатываешь js
И отпраляешь результат post
Теперь ненужно для каждой кнопки отдельно что то писать ;)snippet
Вопрос: Как посчитать количество повторений символов в строке?

Лучший ответ:
Вот способ относительно пристойный:

Array.from(str).reduce((acc, n) => (acc[n] = (acc[n] || 0) + 1, acc), {})
А вот парочка диких:

Object.fromEntries([...new Set(str)].map(n => [ n, str.split(n).length - 1 ]))
или

[...str].sort().join('').match(/(.)\1*/g)?.reduce((acc, n) => (acc[n[0]] = n.length, acc), {}) ?? {}

Худший ответ:
Диетический детский вариант, если не переварился гениальный однострочник от уважаемого 0xD34F:
const countr = str => {
  const result = {};
  const len = str.length;

  for (let i = 0; i < len; i++) {
    const char = str[i];
    if (!result[char]) result[char] = 0;
    result[char]++;
  }

  return result;
}
Вопрос: Какой алгоритм используется при создании папки, если папка существует?

Лучший ответ:
А что тут придумывать?
Если имя существует - дописываем (i). Проверяем, если новое имя существует - инкрементим i и дописываем к первичному имени. И так до упора (какого нибудь, который надо предусмотреть)

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

Лучший ответ:
Можно без софта, windows + R и написать dxdiag

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

Лучший ответ:
Два репозитория. В обоих добавляете еще один origin - на другой проект. 

Если нужно внести изменения в оба проекта, то сначала делаете это в одном, потом в другом проекте мерджите изменения с другого origin'а.

Писать код нужно максимально независимым. Используйте модульность, для модулей внешнее API и event/listeners для общения наружу. В местах где логика различается - по максимуму полиморфизм, и.е. избегайте мерджов всеми силами.

Второй вариант говно. Третий вариант слишком сложный.

Худший ответ:
Два репозитория. В обоих добавляете еще один origin - на другой проект. 

Если нужно внести изменения в оба проекта, то сначала делаете это в одном, потом в другом проекте мерджите изменения с другого origin'а.

Писать код нужно максимально независимым. Используйте модульность, для модулей внешнее API и event/listeners для общения наружу. В местах где логика различается - по максимуму полиморфизм, и.е. избегайте мерджов всеми силами.

Второй вариант говно. Третий вариант слишком сложный.
Вопрос: Какую версию Windows Server лучше купить для юр. организации?

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

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

Лучший ответ:
useEffect(() => {

        setData(props.items.map((elem) => {   // setData
            return elem.weight
        }))

      } , [data, props.items] })    // data?

вот тут эффект слушает изменения data, и ты в нем же меняешь data, тем самым его перезапуская..
и зачем вообще хранить data в стейте, вместо того чтобы напрямую использовать props.items из стора?

Худший ответ:
Я неправильно выразился: Я пробовал и вытаскивать setData и убирать (что мне казалось с самого начала логично), ибо следит за изменениями props.items, но вот если пропс изменяется, то как перезаписать data?
Вопрос: Как спосить так чтобы нормально ответили?

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

Спокойно, это был оффтопик.

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

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

А могу сказать, на какие вопросы я точно начну троллить.

Когда:
- вижу вопрос с тегом KALI и текстом "памагите, ни работаит ничегго!"
- вместо вопроса автор пытается всучить задание, лабу, контрольную, тест - школота такая школота, она никак не поймет, что можно сдать конкретную лабу - но нельзя будет "сдать" работу, на которую потом устроишься
- вижу что автор вопроса делает что-то явно противозаконное, типа очередного рассыльщика спама
- автор вопроса в ответ на комментарии начинает буреть, говорить что он тут самый умный и шли бы мы со своим мнением, он тут пришел технический вопрос задать (и никак не поймет, что не существует технических вопросов в отрыве от жизненной ситуации)

Как правило, каков вопрос - таков и ответ. Если в ответ начинают троллить - значит Вы задали с точки зрения троллящего глупый и неуместный вопрос, типа "Поставил KALI, она мне все снесла, ничего не работает, памагите!"

Худший ответ:
Видимо вопрос такой)
Вопрос: Как решить проблему с длинным URL?

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

Сделать её короче и не передавать в GET столько информации. 
Использовать POST.


С уважением, ваш К.О.

Худший ответ:
Многие согласились использовать POST в таких случаях 
https://stackoverflow.com/questions/14202257/desig...

Особое извращение - использовать X-HTTP-Method-Override: GET
POST /books
Entity body
{ "title": "Ipsum", "year": 2017 }
Headers
X-HTTP-Method-Override: GET


— Оставить GET, но передавать данные (ну или их часть) не в query string, а в body запроса

Очень-очень не рекомендуется.
https://stackoverflow.com/questions/978061/http-ge...
Вопрос: Личный кабинет для пользователей, админка?

Лучший ответ:
Что первое, что второе придется учить. Laravel проще и актуальней.

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

Судя по тому, что тебе нужна не программа, а личный кабинет, то ищи готовое.
Вопрос: Хочу купить книгу «HTML и CSS: Разработка и создание веб-сайтов», автор: Джон Дакетт?

Лучший ответ:
Советую здесь посмотреть (на русском всё).

Худший ответ:
https://www.ozon.ru/product/css-polnyy-spravochnik...
Если хочется книг, то автор этой работал над спекой css.

Учить с нуля лучше на тренажере htmlacademy, его шлифуют тоже авторы спеки.
Вопрос: Как создать дату в приложении?

Лучший ответ:
https://docs.microsoft.com/en-us/dotnet/api/system...

Может тебе это нужно?

Худший ответ:
1. вот эти вот gameDay gameMonth и всё такое лучше бы вынести в отдельную структуру/класс GameDate
2. Если в игровой дате используется такой-же календарь, как и с реальными датами, то System.DateTime должен подойти и не надо городить свои велосипеды. 
2.1. Над DateTime можно сделать небольшую обёртку, чтобы сделать его мутабельным и отбросить часовой пояс и время.
3. Если нужна очень сложная работа с датами, то можно посмотреть на NodaTime
Вопрос: Почему пищит динамик на материнской плате?

Лучший ответ:
В любой нормальной плате есть описание почему они пищат.  Причем с длительностью писка и расшифровкой

Худший ответ:
Что-то странное ты описываешь, так не бывает.
Запиши звук и дай послушать.
Вопрос: Лучше развиваться или зарабатывать деньги?

Лучший ответ:
лучше совмещать: можно и зарабатывать, и расти.

постоянная учеба в ИТ – такой же миф как отсутствие таковой необходимости в других областях.
да: учится надо. но эта учеба не требует 12 часов в день. а после определенного уровня, протекает вообще практически незаметно: тут почитал, тут ручками потрогал – готово.

Худший ответ:
Что мешает развиваться во время выполнения заказов(заработка)?
Что-то не знаете - погуглили, посмотрели на форумах, изучили, сделали.
И опыт, и знания, и заработали деньги за заказ.
Вопрос: Сколько вентиляторов можно подключить к одному 4-pin разъему?

Лучший ответ:
https://download.asrock.com/Manual/B460M-HDV.pdf - 9 страница. Написано, что к одному Fan/WP можно подключать 2А. Значит, можно подключать 3 вентилятора (один ест около 0,1 А).

Худший ответ:
Я бы больше двух не подключал.
На алиэкспрессе ищите "pwm hub" - там есть с дополнительным питанием, стоят копейки.
Вопрос: Почему nuxt такой медленный?

Лучший ответ:
Тоже заметил подобное. (но не прям реальная тормознутость, просто отклик у php приложений на порядок меньше в миллисекундах(мс), чем на nuxt), возможно особенности nodejs
Попробуйте пожалуйста https://github.com/arash16/nuxt-ssr-cache и напишите
и на всяк случай - https://nuxtjs.org/api/configuration-build/#cache

Худший ответ:
 Я так понимаю, nuxt каждый раз "на лету" собирает проект и отдает клиенту
нет, билд 1 раз сделался и только с ним и ведётся работа.
Уже десяток сайтов сделаны на nuxt.js и никаких тормозов нет. Сборка на сервере действительно долгая(хотя так его собирать не желательно, но не об этом), но это никак не отражается на работе сайта.
Т.к. у вас тормоза, не обязательно должен виноват быть именно nuxt.js, возможно у вас есть множество мест, которые нужно оптимизировать по части фронта. Если у вас rest api, где вроле бекенда php - то наверно стоит обратить внимание на работу бекенда и оптимизацию mysql запросов(если там мускул). Т.к. если api долго отвечает, то и nuxt будет долго ждать данные, от чего долго будет отображать страницу, знаю, проходил. 
Был и есть сейчас проект, который я делал на фрилансе, т.к. у нас 100500к товаров, то на старте проекта, когда мы тестировали, в некоторых местах загрузка страницы могла занимать около минуты, т.к. внутри бекенда(php, yii2) код был организован несколько плохо. Со временем вылизали запросы, сделал кеширование запросов и всё в целом стало ок.
Ну и сам сервер, чем больше сайт, тем больше мощностей нужно. У нас пока 4гб, 2 ядра на Digital Ocean. В ближайших планах увеличить мощности, т.к. приток пользователей становится больше.
Когда только разрабатывали сайт, то у нас было 1гб и 1 ядро. Этого хватило на пару месяцев, т.к. сервер не выдерживал нагрузок. Пришлось увеличить оперативку до 2х гб. А уже готовую версию, как и написал выше, до 4гб и 2 ядра
Вопрос: Какими знаниями обладают разработчики ПО для сетевого оборудования?

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

Худший ответ:
Основной навык - умение искать информацию.
Вопрос: Функция ввода символов?

Лучший ответ:
while x not in ('y', 'n'):
	  x = input("Сыграть еще раз?")
Либо для любого регистра ('Y', 'y', 'N', 'n'):

while x.lower() not in ('y', 'n')

Худший ответ:
while True:#бесконечный цикл
    a = input("y/n")#ввод
    if a == "y":#если равно y(можно сделать как вы сразу проверка y и n)
        print(a)#напечатать текст
        break#выход из бесконечного цикла while True (писать не обязательно)
    elif a == "n":
        print(a)
        break
    else:#писать не обязательно else и следующую строку
        print("Не знаю такого символа")
print("Выход из цикла")
Вопрос: Как провайдер может занижать скорость?

Лучший ответ:
Как провайдер может занижать скорость?
Так:

В договоре указана скорость 500 мб/с
Скорей всего в договоре указана скорость до 500 Мбит.
Внимательно прочитайте договор, действительно ли они гарантируют вам скорость 500 Мбит(или космические мб).
В договоре указана скорость 500 мб/с, на деле имею 80-120 мб/c. Сеть разогнать до 500 Мбит в основном можно только торрентом, так как вря тли многие сайты будут вам отдавать файлы на такой скорости.
Судиться тоже не вариант, ибо компания крайне крупная, вряд ли я чего-то добьюсь. Если уверены, что вас обманывают - судитесь, размер конторки не имеет значения.
И неплохо бы здесь указать провайдера.

Худший ответ:
Есть контракты с гарантированным каналом, а есть для хомячков, скорость до XXX. Читайте контракт и тогда думайте судиться или нет.
Вопрос: Как правильно обрезать текст в bash?

Лучший ответ:
Конкретно в вашем случае:
python -c "exec(\"import site\nfor im in site.getsitepackages():print(im)\")"

Худший ответ:
Конкретно в вашем случае:
python -c "exec(\"import site\nfor im in site.getsitepackages():print(im)\")"
Вопрос: Перезапуск telegram bot'a, как сделать?

Лучший ответ:
while True:
  try:
    do_something_erronous()
  except Exception:
    pass
Вот такой код практически никогда не падает (за исключением Ctrl+C и явных вызовов os.exit()). Проблемы с сетью решит на корню :)

Худший ответ:
Так же позже узнал, что можно:
try:
    bot.poling(none_stop=True)
except:
    pass
В самом конце кода
Вопрос: Как можно объединить вычислительные мощности двух ПК на Windows?

Лучший ответ:
Никак.
Кластер создаётся для Windows Server и то не для любого ПО.
Остальное - кривые костыли.

Худший ответ:
Да не вопрос ставите 2 3дс Студио макс и запускаете сетевой рендеринг. И дальше по списку.
Вопрос: Решение задачи Python?

Лучший ответ:
num_set = set()
x = 1

while x != 0:
    x=int(input('введите число '))
    num_set.add(x)
    
num_set.remove(max(num_set))
print(max(num_set))

Худший ответ:
Кладешь все значения в список, сортируешь по убыванию и берешь второе значение.
Вопрос: Где хорошо почитать про ITIL?

Лучший ответ:
В официальных учебниках по ITIL.

Худший ответ:
Идёте вот сюда https://www.axelos.com/welcome-to-itil-4
Находите там книжку которую они рекламируют. Скачиваете ее где нибудь.  Читаем.
Вопрос: Мощнее процессор с HDD или слабее с SSD диском?

Лучший ответ:
Без SSD сейчас никак, но заменить HDD на SSD не слишком сложно, в то время как процессор поменять на ноуте в своем большинстве нереально.
Берите c нормальным процессором и SSD. Если проблема с деньгами - можно взять с нормальным процессором и SSD докупить как только так сразу.

Худший ответ:
В Екатеринбурге нашел 2 наиболее подходящих ноута.
1. https://www.citilink.ru/catalog/mobile/notebooks/1...
Преимущества: Есть SSD под систему и HDD под файлы. IPS FULL HD матрица. Более емкий аккумулятор по сравнению со вторым. И, в подобных условиях, с учетом покупки в крупном магазине я бы остановил выбор на нем.
2. https://www.citilink.ru/catalog/mobile/notebooks/1...
Преимущества - более емкий SSD, но и 128 Гб вам хватит под систему и софт. Возможно немного более лучшее качество, но это не точно.
Минусы: Нет информации о матрице в этой версии, нет HDD, менее емкий аккумулятор.
Вопрос: Как описать структуру входных данных?

Лучший ответ:
resp.Body содержит только байты и ничего более.

Вы можете в зависимости от статуса ответа сервера resp.Status, выбирать, как вам обрабатывать данные.
Например, у меня в проектах сделано так: 
Когда статус запроса 200, я декодирую его как обычно. 
Если статус другой, я ожидаю, что он будет содержать другую структуру, в которой будет описание ошибки и пытаюсь его декодировать в эту структуру и возвращаю как ошибку.
Но если декодирование ошибки не удалось, то я просто возвращаю ошибку, содержащую текст Body.

Худший ответ:
Ключ Content-Type в заголовке описывает что за данные в body. Для Json: application/json

type := resp.Header.Get("Content-Type")
Вопрос: Как зайти на компьютер нескольким пользователям одновременно.?

Лучший ответ:
Терминальный сервер. Они, кстати, не только майкрософтовские бывают.

Худший ответ:
VNS,
Тот же тим вивер, с доступом до загрузки пользователя, и дальше каждый заходит под своим юзером

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

Но я бы рекомендовал rdp
Вопрос: Как складывать элементы двумерного массива с++?

Лучший ответ:
В С++ можно так
#include <iostream>
#include <algorithm>
#include <string>
#include <numeric>
#include <vector>
#include <iterator>

using namespace std;

//Придумай сам алгоритм число в строку или нагугли
string lineNumberToString(int ln)
{
  return to_string(ln) + " сторка ";
}

int main()
{
  auto nums2dArray = vector<vector<int>>{{32,23}, {25,12}};

  transform(begin(nums2dArray), 
            end(nums2dArray), 
            ostream_iterator<string>(cout, "\n"), 
            [](auto row){
              static int lineNumber = 1;
              return lineNumberToString(lineNumber++) + 
                     to_string(accumulate(begin(row), end(row), 0));
  });
}


Худший ответ:
Вам нужен цикл по строкам. Внутри считайте сумму каждой строки и выводите.
Чтобы найти сумму одной строки вам нужен еще один цикл: Заводите переменную, равную 0, перед цикорм. В цикле прибавляете элементы строки к ней. Потом выводите.

Таким образом, у вас будет 2 вложенных цикла.
Вопрос: В чем проблема SQL-Инъекций?

Лучший ответ:
Разработкой занимается неприятно большое число глупых и халатных людей. Больше только жадных и некомпетентных заказчиков. Даже в серьёзных медицинских и банковских системах можно встретить чудовищные по своей простоте и в то же время опасности ошибки. А в web-разработке всё намного хуже, по оптимистичным оценкам 99% сайтов сделаны по принципу и так сойдёт.

Худший ответ:
не достаточно ты читал про иньекции, бывают с 2ым дномName : ' + (SELECT TOP 1 password FROM users ) + '
Вопрос: Как лучше распространить (продавать) коммерческий проект (angular 9 + php), локально или на сервере с общим доступом?

Лучший ответ:
во первых не смешивайте бизнес модели (единоразовая оплата и подписку ежемесячно/ежеквартально/ежегодно) и тип пользования (SaaS или установка на сервер клиента)

1) Регулярная подписка скорее всего даст большую прибыльность с одного клиента (LTV), чем стоимость его привлечения  (CAC) и для бизнеса лучше выбрать именно ее. Но все зависит от сложивших рыночных условий на ваш продукт - возможно в данном типе бизнеса подписки не берут. Чтобы понять нужно изучить рынок и сделать какие-то тестовые продажи. Даже если клиент пользуется ПО на своем сервере - вы также можете лицензировать его по подписке.  А еще для подписки важно правильно выбрать периодичность ее оплаты так, чтобы ее бизнес модель сложилась (LTV > 2 CAC не более чем за полгода) - некоторые компании берут например не менее чем  за 3-6 месяцев оплаты - тк меньше им не окупаются затраты на привлечение клиентов в разумное время.

2) Для защиты вашего ПО от кражи - самый надежный вариант продавать только доступ к своему серверу, про защиту данных и стоимость серверов - посмотрите на сервис Lightsail AWS - там в одном регионе по 3 датацентра с низким пингом,  делаете репликацию и бекапы чтобы данные были надежно защищены от потери и были высокодоступны, недорогие цены на  vps от 3.5$/месяц.

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

А еще есть ряд клиентов - которым администрирование своего сервера/хостинга - не удобно.

Какое бы ПО вы не выбрали для обфускации и защиты кода на сервере клиента - его все равно сломают. В коде вашем копаться никому не надо - а вот  сломать так чтобы можно было пользоваться бесплатно - это сделают!

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

Поэтому решение - 2 тарифа:

регулярная недорогая подписка на SaaS сервис в облаке (ежеквартально/ежемесячно/ежегодно) для клиентов которые платят немного
регулярная подписка с большой стоимостью с установкой на сервер клиента  (ежеквартально/ежемесячно/ежегодно) для корпоративных клиентов которые готовы платить много


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

Лучший ответ:
Если надо обновлять координаты после перемещения, то слушаете событие boundschange:

map.events.add('boundschange', function() {
  map.balloon.setPosition(map.getCenter());
});
Во время перемещения - слушаете actiontickcomplete:

map.events.add('actiontickcomplete', function(e) {
  const { globalPixelCenter, zoom } = e.get('tick');
  map.balloon.setPosition(map.options.get('projection').fromGlobalPixels(globalPixelCenter, zoom));
});
jsfiddle.net/da9ux62p/1

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

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

Худший ответ:
Если файлы полностью идентичны, то достаточно посчитать хеш, и по хешу сравнивать.
Если нужно нечеткое сравнение, то нужно реализовать нечеткое сравнение, как-то так.
Вопрос: Насколько стабилен Upwork в данное время, и стоит ли вливаться туда как разработчик Wordpress\PHP?

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

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

Какую обычно ставку ставят "начинающие" на фрилансе разработчики
Посмотрите людей из СНГ, кто делает то же, что и вы, и поставьте подобную ставку с учётом, что вы новичок. Думаю, что-то в районе $20/час должно быть.

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

Английский у меня на уровне pre-intermediate(хорошо читаю техническую литературу, но вот с разговорным проблемы, особенно когда волнуюсь, могу выдавить из себя типовые фразы, будет ли это камнем преткнования, или можно использовать чат?)
Есть некоторые клиенты, кому нужен принципиально fluent English и созвоны. Но такие далеко не все. Многих устраивает общение по чату. Особенно если клиент сам не англоговорящий. Абсолютно нормально сказать, что инглиш у вас неродной, поэтому лучше общаться только письменно.

Худший ответ:
Насколько стабилен Upwork в данное время, 
живее всех живых, выручка и прибыль растет каждый квартал: https://investors.upwork.com/

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

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

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