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

Лучший ответ:
typescriptlang.org/play
spoilertype Alph = 'Q' | 'W' | 'E' | 'R' | 'T' | 'Y' | 'U' | 'I' | 'O' | 'P' | 'A' | 'S' | 'D' | 'F' | 'G' | 'H' | 'J' | 'K' | 'L' | 'X' | 'Z' | 'C' | 'V' | 'B' | 'N' | 'M'

type CamelToSnake<T extends string> = T extends `${infer S1}${Alph}${string}` ? T extends `${S1}${infer S2}` ? `${Lowercase<S1>}_${CamelToSnake<Uncapitalize<S2>>}` : T : T;
type AsdSnake = CamelToSnake<'asdAsdAsd'> // asd_asd_asd

type SnakeToCamel<T extends string> = T extends `${infer S1}_${infer S2}` ? `${Lowercase<S1>}${Capitalize<SnakeToCamel<S2>>}` : T;
type AsdCamel = SnakeToCamel<'asd_asd_asd'> // asdAsdAsd

type SnakePropToCamel<T extends PropertyKey> = T extends string ? SnakeToCamel<T> : T;
type CamelPropToSnake<T extends PropertyKey> = T extends string ? CamelToSnake<T> : T;

let camelToSnakeCase: <T extends PropertyKey>(str: T) => CamelPropToSnake<T>;

type CamelObjectToSnake<T extends {[key: string]: any}> = {
  [K in keyof T as CamelPropToSnake<K>]: T[K]
}

function camelCaseObject<T extends {[key: string]: any}>(obj: T) {
  return Object.entries(obj)
    .reduce((acc, [key, value]) =>
        (acc[camelToSnakeCase(key as keyof T)] = value, acc),
      {} as CamelObjectToSnake<T>
    )
}

function camelToSnakeKeysOfArrayObject<T extends Array<{[key: string]: any}>>(arr: T) {
  return arr.map(camelCaseObject) as {
    [K in keyof T]: CamelObjectToSnake<T[K]>
  };
}
Основано на варианте WbICHA но поддерживает объекты разных сигнатур, типа:
camelToSnakeKeysOfArrayObject([{
  aaAa: 1,
  bbBb: true
}, {
  aaAa: 'ggg'
}]);

Худший ответ:
Нужен ли здесь темплейт? 

Может, будет достаточно 
type Data = Array<Record<string, unknown>>;

const camelToSnakeKeysOfArrayObject = (arr: Data): Data => ...
?
Вопрос: Вход не поддерживается, что делать?

Лучший ответ:
Поставь винду и не мучайся.

Худший ответ:
Проблема решена! 
У меня было подключено 2 монитора, и из-за этого была ошибка "Вход не поддерживается", отключил 2 монитор и всё заработало!!!
Вопрос: Как rsync сжимает при передаче данных?

Лучший ответ:
Не будет ли он на сервере создавать какие то архивы?
Нет. rsync -z сжимает на лету.
Из man rsync:
--compress, -z
              With this option, rsync compresses the file data as it is
              sent to the destination machine, which reduces the amount
              of data being transmitted -- something that is useful over
              a slow connection.

Худший ответ:
Просто на сервере дай бог 10 гб свободного места осталось. Не будет ли он на сервере создавать какие то архивы?
А передать надо много, гб 200
Можешь отдельно заархивировать кастомным архиватором и порезать на тома и добавить контрольные суммы для восстановления.
200 Гб - это тот размер когда стоит дополнительно сделать проверки на целостность.
Вопрос: Какая технология актуальна для создания приложения на python под android?

Лучший ответ:
Kivy, Qt (для питона он представлен библиотеками PyQt6, PySide2 или их более старые версии) так позволяет собирать приложение под android, но там все не так тривиально как с Kivy.
Также вот что предлагает google, но лично мною оные опробованы не были, поэтому советовать не берусь.
Но лучше выбирать специально созданные для android платформы языки.

Худший ответ:
Kivy, KivyMD. Но серьёзные приложения все таки лучше писать на Java.
Вопрос: На чём можно сделать простой интернет магазин?

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

Худший ответ:
Если нет планов сильно масштабироваться со сложной логикой и т.д., то рекомендую Tilda. Он простой в освоении, удобный и красивый
Вот гайд:  https://tilda.cc/ru/build-online-store/
Вопрос: Насколько актуальна информация о производительности данного бенчмарка C# vs Go?

Лучший ответ:
Вот само по себе "сравнение производительности" не совсем корректная постановка вопроса,т.к. в некоторых тестах там не самые производительные языки на первом месте, поэтому нужно уточнить контекст сравнения, в какой области, допустимо ли использование стандартных общих функций и т.д.  
 По нормальному нужно проверять, что код оптимизирован под определенный язык, если вы напишите похожий на разных языках, не факт, что он будет одинаково оптимизирован. Вот в нескольких тестах я нашел прямой вывод в консоль во время выполнения теста, хоть я не занимаюсь обычно написанием тестов производительности, но такие вещи в тестах это плохо, т.к. фукции вывода в консоль сильно по разному реализованы в каждом языке(//go fmt.Println(prime) //c# Console.WriteLine(prime)). И обычно они разной степени тяжести.
UPD: в общем я хотел сказать, что в одном языке могут лучше оптимизированы одни функции лучше других, и если вы пишете приложение с использованием определенных стандартных функций, то практически есть смысл сравнивать только эти функции/модули в языках

Худший ответ:
Оценить сложно, тк для решения задач вполне могут использоваться разные алгоритмы.
Также я не нашёл настроек рантайма для C#, так что может использоваться не самый производительный профиль.
Также сам код выглядит подозрительно.

Рекомендую ориентироваться на techempower - там решаются в основном задачи приближенные к реальным в веб-разработке.
(Правда там код для .NET, который в топе, очень далёк от того что будет писаться в реальной ситуации)

В целом C# и Go тут идут почти на равных, с разницей только в потреблении памяти.
Вопрос: Где можно найти Windows XP SP3 x64?

Лучший ответ:
нигде, так как её нет. последний SP для Windows XP x64 был SP2.

Худший ответ:
https://ru.wikipedia.org/wiki/Windows_XP_Professio...
Пакет обновлений Service Pack 2 стал общедоступным 12 марта 2007 года и является последним выпущенным пакетом обновлений для Windows XP Professional x64 Edition.
После 8 апреля 2014 года Microsoft более не планирует выпускать никаких пакетов обновления для Windows Server 2003 и, следовательно, для Windows XP Professional x64 Edition.
Вопрос: Повышение частоты и виртуализация относиться к мультимедийным технологиям CPU?

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

Инструкции F16C, MMX, как повышение частоты и виртуализация не имеют никакого отношения к мультимедиа!!!!

Я не помня этого получил 4Препод лопух. Я бы двойку влепил, только за то что F16C и MMX отнесли к мультимедийным технологиям.

Худший ответ:
Нет.
Мультимедиа - контент, или содержание, которое одновременно передается в разных формах: звук, анимированная компьютерная графика, видеоряд.

Инструкции F16C, MMX, как повышение частоты и виртуализация не имеют никакого отношения к мультимедиа!!!!

Я не помня этого получил 4Препод лопух. Я бы двойку влепил, только за то что F16C и MMX отнесли к мультимедийным технологиям.
Вопрос: Что означает строка c @@ в логах Git?

Лучший ответ:
https://ru.m.wikipedia.org/wiki/Diff
Раздел Универсальный формат

Худший ответ:
Что означает строка c @@ в логах Git?
Кол-во удалений и кол-во вставок.

И что означают зелёные квадратики в GitHub
То же.
Вопрос: Нужно ли вкратце конспектировать материал из книги по програмированию?

Лучший ответ:
Ответ абсолютно индивидуален. Все зависит от того, как у вас устроена память -  у кого-то лучше всего работает визуальная память, у кого-то аудио. Я знаю, что у меня лучше всего работает моторная -  еще учась и институте я на каждый экзамен писал шпору (шпаргалку), но за все время учебы использовал эту технология только один раз и то, на абсолютно непрофильном экзамене. Но вот при написании, вернее - в его процессе -  материал закреплялся в голове на долго. И именно писал, от руки  - во-первых, компьютеров тогда еще не было, а во вторых уже потом заметил, что набор на клавиатуре не дает того-же эффекта. 
Поэтому я и сейчас иногда, когда что-то новое читаю или изучаю, делаю небольшой конспект в блокноте (физическом, а не MS Notepad :-) ). И пусть потом я его никогда и не открою, но запомню точно лучше. К сожалению, замечаю, что современные студенты даже конспект на лекции вести не умеют - кто на диктофон записывает, кто фотографирует с доски, но очень мало кто именно самостоятельно пишет. По моему мнению тут дело не в технике  - а именно в отсутствии навыков. И в частности и в этом - неумении самостоятельно делать "выжимки" из увиденного или прочитанного - есть одна из причин снижения качества образования.
В общем -  я бы рекомендовал делать такие записи, но в кто-бы что-бы тут не насоветовал -  вам надо "прислушаться" к собственному мозгу и понять, как ему легче работать с материалом.

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

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

А вот стиль повторения - это уже дело вкуса. Конспект - это тоже как бы повторение, но повторение в тот же день, что и получение, имеет наименьший эффект. Гораздо более полезно попытаться воспроизвести без подсказок свой конспект на следующий день, а потом и позже. То есть устроить себе маленький экзамен, а потом и большой.

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

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

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

Лучший ответ:
Всё отличие, если у вас API на локальном компьютере, а не на другом в сети - в адресе. Для локального компьютера это будет localhost или 127.0.0.1

Худший ответ:
local host это локальный адрес на ПК, ты можешь запускать множество серверов на разных портах по типу localhost:9901 localhost:9902
Вопрос: Вопросы по настройке и оптимизации Windows 10 LTSC?

Лучший ответ:
Сайт мелкомягких не рассматриваю.
Почему?
слабого железа
На сколько слабого?

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

Худший ответ:
 Может кто-то подсказать, где взять (проверенные) оригинальные iso-образы Windows 10 LTSC.На сайте майкрософт.
Сайт мелкомягких не рассматриваю.Оригинальные только на офсайте и нигде более.

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

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

Есть смысл брать более дорогие роутеры, например с AX5400? Или они ни чем не лучше AX1800? Сигнал затухает на стенах, особенно если речь идет про 5ггц, а уж если стена железобетон....
Роутер не перфоратор, им стены не сверлят.
Если стена мешает - убираем стену, или ставим дополнительную точку доступа. Иначе - миримся с хреновой скоростью.

Худший ответ:
MIKROTIK hAP ac берите и все. все равно 700мб Вы не получите по вифи...  ну и насчет стены верно написали, через неё плохо будет)
Вопрос: Можно ли так решить задачу «камень-ножницы-бумага»?

Лучший ответ:
1.Зачем вы два раза запрашиваете ввод числа? Просто сделайте бесконечный цикл а для выхода используйте проверку на соответствие данных.
2.Проверку ввода можно свести к двум вариантам:
    а. Введенное число удовлетворяет требованием.
    б. Оно не удовлетворяет
Для проверки можно использовать два подхода: конструкция match case и оператор in.
Хотя, на мой взгляд, вариант с match тут чуть более уместен с точки зрения семантики.
3.Зачем вы вводите название "жестов" и потом добавляете "прослойку" для сравнения чисел? Эти названия все-равно нигде не фигурируют, не лучше ли сравнивать сразу цифры?
По поводу остального уже ответили.

Худший ответ:
В свое время решил ее так:

import random

stuffs = ["камень", "ножницы", "бумага"]  #создаем список с возможными предметами
rand = random.randint(0, 2) #генерим число рандомом от 0 до 2

pobed = ["каменьножницы", "ножницыбумага", "бумагакамень"] #варианты исходов
beda = ["ножницыкамень", "бумаганожницы", "каменьбумага"]
nich = ["ножницыножницы", "бумагабумага", "каменькамень"]

while True:
    lox = input ("Введите команду (камень, ножницы, бумага) : ") #игрок вводит значение
    game = lox+stuffs[rand]   #складываем значение игрока и рандома
    if lox not in stuffs:
        print ("Введите верные данные, можно только слова: камень, ножницы или бумага!")
    else:
        print (f'У тебя {lox}, а у компьютера {stuffs[rand]}', end = " ") #ищем в списках результат
        if game in pobed:
            print ("ты победил!")
        elif game in beda:
            print ("ты проиграл!")
        elif game in nich:
            print ("тоже, у вас ничья!")
        break

Возможно и не верно))
Вопрос: Объясните, плиз, в чём преимущество Юкассы в сравнении с прямым платежом через API «родного» для ИП банка?

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

Худший ответ:
Собственно все преимущества описаны у них на сайте:


Удобная форма оплаты
Множество способов оплаты, включая кредит
Онлайн-касса
Из коробки интеграция со всякими другими сервисами


Кстати минимальная комиссия не 4%, а 2.8% на оплату банковскими картами

Если вам это всё в принципе не нужно и эквайринг от банка вас устраивает всем - не вижу смысла переходить.
Вопрос: Как быстро скачать файл весом 4гб?

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

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

Так и тут - общее время на скачку будет определяться размером файла деленному на самую меньшую скорость между отправителем и получателем. 

Единственное что можно сделать для сокращение времени при ситуациях обрывов связи и повторов закачки - использовать механизмы докачки (это если отдающая сторона умеет). 

Тогда общая канва будет выглядеть следующим образом:

- получаем размер файла
- готовим список фрагментов исходя из размера и прочих предположений
- качаем файл фрагментами (Range)
- если скачка удалась - метим фрагмент полученным, а неудавшуюся - повторяем
- когда все фрагменты получены - собираем их в файл
profit 

p.s. по вкусу вышеописанное можно пускать в несколько потоков - иногда лимитер отдачи может лимитировать по конкретному соединению, а не сессии и суммарная скорость может подрасти.
Вопрос: Как интерпретируeтся этот пункт трудового договора?

Лучший ответ:
Но ведь формально выходит, что результаты ЛЮБОЙ трудовой деятельности подпадают под этот пункт.
Так и есть. Смотрите историю с nginx.

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

Лучший ответ:
В $uri будет весь путь /dir/1, а в try_files нужно передать только часть /dir/.
Для этого в шаблоне ставим (/[a-z-]+/) и в $1 получаем нужное значение.
После try_files если папка существует работает index и там в конце списка может стоять файл с абсолютным путём.
location ~ "^(/[a-z-]+/)(1\d|[1-9])$" {
    index /category.php;
    try_files $1/ =404;
}

Худший ответ:
составить правильный запрос
Вопрос: Как сдать в аренду серверную тачку?

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

Худший ответ:
Серверная тачка интересна только тогда, когда размещены на нормальной площадке.
Обеспечьте бесперебойной питание, место для бэкапов, хороший канал,  и белый адрес на сервер.
Дайте гарантии. 
И тогда с вами можно будет заключить договор.

А на таких условиях как вы описали - ну разве что соседу дайте бесплатно в доту погонять, или во что там сейчас играют.
Вопрос: Как в Python перевести string в bytes, не меняя string?

Лучший ответ:
Если вы хотите сохранить в БД бинарные данные. то у вас есть три варианта:
1) Хранить в БД данные в поле типа binary blob. В таком поле может храниться произвольный набор байтов, он не птается преобраховаться в строку при работе.
2) Хранить в БД экранированную строку в поле обычного строкового типа. При этом все непечатные и спец-символы должны быть экранированны специальной последовательностью, которая состоит из печатных обычных символов. Тогда нужно перед испольованием полученных из БД данных разэкранировать строку и получить байты. 
3) Можно хранить данные в БД в обычном текстовом или текстовом blob-поле, но в виде закодированно последовательности base16 или base64. В base64 каждые два байта кодируются тремя символами из 64-битного набора печатных символов. Нужно кодировать и декодировать такие строки при сохранении\загрузке.

Вам больше всего подходит base64. Посмотрите в документации как с этим работать

Худший ответ:
Для хранения байтов в базах данных обычно из заворачивают в строки в кодировках BinHex, Base64.
Вопрос: Помнит ли, кто игру веб-приложение про IP пакеты в сети?

Лучший ответ:
CS4G Netsim by Erinn Atwater and Cecylia Bocovich

Netsim is a simulator game intended to teach you the basics of how computer networks function, with an emphasis on security. You will learn how to perform attacks that real hackers use, and see how they work in our simulator!

Оно? А то я из вашего описания впервые про такую штуку слышу.

Худший ответ:
> Но ведь коммутатор работает на 2 уровне
Коммутаторы 2-го уровня - на 2-м, коммутаторы 3-го уровня - на 3-м.
Вопрос: Существует ли стандартный протокол для GPS трекеров?

Лучший ответ:
https://ru.wikipedia.org/wiki/NMEA_0183
там внизу страницы ссылки для дальнейшего изучения

Как получить координаты с устройства ГЛОНАСС?

GPS-трекинг что необходимо для разработки?

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

Но меня интересует есть ли у этой задачи общее решения ... В частности возможно есть уже сервисы-агрегаторы, которыми можно воспользоваться
Как вариант, можно использовать ретранслятор. То есть разные трекеры с разными протоколами настраивать на сервис мониторинга, а данные получать себе по одному протоколу. 
Например как-то так: https://livegpstracks.com/forum/viewtopic.php?f=30...
Вопрос: Как решить задачу по теории вероятности с карандашами разных цветов?

Лучший ответ:
везде далее C(x, y) - количество сочетаний
С(x, y) = x! / (y! * (x-y)!)
https://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D1%87%D...

Итак, сначала считаем 2 синих

количество способов выбрать 6 из 17 карандашей равно 
C(17, 6)
количество удачных выборов (когда выбрали 2 синих из 6, и 4 не синих из 11) равно 
C(6, 2) * C(11, 4)

вероятность выбрать 2 синих равна C(6, 2) * C(11, 4) / C(17, 6)

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

всего возможных выборов, как ранее говорилось, C(11, 4)

из них неудачных способов, то есть когда ни одного красного, C(4, 4) = 1, то есть среди этих 4 карандашей только черные.
вероятность не выбрать красные получается 1/C(11, 4)
тогда вероятность выбрать хотя бы один красный равна (C(11, 4) - 1) / C(11, 4)

но это была условная вероятность. А полная будет произведением

P = (C(6, 2) * C(11, 4) / C(17, 6)) *  (C(11, 4) - 1) / C(11, 4)

Худший ответ:
Решение в лоб:
6 карандашей можно выбрать следующими способами:
6к, 5к+1с, 5к+1ч, 4к+2с, 4к+1с+1ч, 4к+2ч, 3к+3с, 3к+2с+1ч, 3к+1с+2ч, 3к+3ч, 2к+4с, 2к+3с+1ч, 2к+2с+2ч, 2к+1с+3ч, 2к+4ч, 1к+5с, 1к+4с+1ч, 1к+3с+2ч, 1к+2с+3ч, 1к+1с+4ч, 6с, 5с+1ч, 4с+2ч, 3с+3ч, 2с+4ч.
Остаётся посмотреть количество вариантов для каждого случая, просуммировать и поделить.
spoiler6к: 7
5к+1с: 126
5к+1ч: 84
4к+2с: 525
4к+1с+1ч: 840
4к+2ч: 210
3к+3с: 700
3к+2с+1ч: 2100
3к+1с+2ч: 1260
3к+3ч: 140
2к+4с: 315
2к+3с+1ч: 1680
2к+2с+2ч: 1890
2к+1с+3ч: 504
2к+4ч: 21
1к+5с: 42
1к+4с+1ч: 420
1к+3с+2ч: 840
1к+2с+3ч: 420
1к+1с+4ч: 42
6c: 1
5с+1ч: 24
4с+2ч: 90
3с+3ч: 80
2с+4ч: 15Получаем 4935 вариантов из 12376 возможных или 0.39875566
Вопрос: Нашел приватный мессенджер Prival, стоит ли пользоваться, надежен ли?

Лучший ответ:
Автор темы прав. Эти серверные мессенджеры, которые заполонили интернет все читаются (вышел закон) и нужно от них уходить. Сам сижу на бессерверных Bitmessage и Тox
Упоротые и страшные, как черти, но куда надёжнее чем обычная почта. К стати мою почту уже ломали, последний раз пароль украли.  Ушёл от темы. Prival этот посмотрел сайт.  Очень забавный сайт,  сказать ничего не могу про ЭТО
На мой взгляд хороший мессенджер Bitmessage  хотя очень страшен и неудобен. Это смесь бульдога с носорогом, то есть почты как в программном виде.  Имён там нет одни какие-то цифры, вобщем ни о чём.  Тяжела работа хакера ))

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

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

Ну и держите ссылку на статью по теме: https://habr.com/ru/company/redmadrobot/blog/426617/

Худший ответ:
Да, уже давно надо было перейти. 
Такой подход лучше, а не хуже. Лучше тем, что фрагменты можно более-менее нормально анимировать. Также фрагменты между собой в рамках одной активити могут нормально взаимодействовать(target fragment, parent fragment). А активити могут только в интенте передавать данные и получать через onActivityResult.