pavki/hr_qa_sbs_best_bad huggingface dataset:
Вопрос: Как настроить автообновление Let's Encrypt?

Лучший ответ: 1. При получении/обновлении сертификата движок Апача можно вообще не задействовать.
2. Создайте каталог /var/www/letsencrypt
3. Создайте файл /etc/nginx/letsencrypt.inc с содержимым
location /.well-known {

        allow           all;
        root            /var/www/letsencrypt;
        error_log       /var/log/nginx/!letsencrypt.error.log;
        access_log      /var/log/nginx/!letsencrypt.access.log;

    }
4. В секции server подключите файл letsencrypt.inc
include letsencrypt.inc
5. В каталоге /etc/letsencrypt найдите файл cli.ini, в нём должны быть строки
webroot-path = /var/www/letsencrypt
authenticator = webroot
installer = None
6. Запустите команду certbot renew
7. В файле crontab создать строки
# Certbot renew
0 0     15 * *  root    certbot renew --renew-hook "service apache reload; service nginx reload"

PS: Если обновление таким способом не пройдёт, то забейте на текущий сертификат, получите новый безо всяких оболочек, а сразу через консольные программы согласно инструкции к certbot для Nginx. В общем, никаких особых сложностей быть не должно, тут только вопрос чётко прописать откуда брать и куда класть.

Худший ответ: Нужно настроить выдачу\обновление сертификата через webroot path, а не через поднятие временного web сервера. Тогда все равно кто и что проксирует - если ваш корень сайта доступен.
Как потом настроить автообновление - гуглится на раз - это одна строка в cron.
Вопрос: Права в Linux на директории важнее прав вложенных файлов и папок?

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

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

Лучший ответ: Управление курсором, как и многими другими штуками в терминале, осуществляется через escape sequences.
Почитайте: Console Virtual Terminal Sequences

Худший ответ: А теперь вопрос, правильно ли я понимаю, что при вводе например первого символа f из foobar фактически в powershell вводятся следующая последовательность: \b\b\b\bfhey1 ?
Нет, вы неправильно понимаете.
В powershell(а, точнее, в поток) уйдёт чистая строка. все перемещения курсора и тд не имеют никакого отношения к потокам ввода\вывода.
В поток введённые данные отправятся после enter.
Командная строка(терминал) - это куда более сложная сущность, чем просто комбинация потоков ввода и вывода.
а конкретно в powershell это ещё и разбавляется встроенным модулем подсветки синтаксиса PSReadline

P.S.
И, если уж быть полностью корректным, то Write-Host - это именно вывод в хост(терминал), чисто в поток вывода powershell оно не попадает. Для вывода в поток есть Write-Output. А то, что вывел Write-Host, попадает в поток вывода, который вы, например, можете записать в файл, уже из терминала.

Попробуйте в консоли Powershell:
PS D:\> Write-Host 'tohost' > d:\111
tohost
PS D:\> Get-Content d:\111
PS D:\> Write-Output 'tooutput' > d:\111
PS D:\> Get-Content d:\111
tooutput
PS D:\>
Разницу замечаете ?

А теперь сравните результат с
Powershell -Noprofile -Command "Write-Host 'tohost'; Write-Output 'tooutput' " > D:\111
Powershell -Noprofile -Command "Get-Content d:\111"
hint: полностью вывод попадает в файл только в последнем примере
Вопрос: В каком сейчас состоянии Android Development Studio + AMD?

Лучший ответ: Виртуализация нужна для эмулятора.
Но лучше работать без эмулятора, сразу на реальном устройстве. Тогда нет разницы - Intel или AMD

Худший ответ: Оххх, и не советую же я AMD для Android разработки... нахлебался.
Но вообще верно - на живой железке правильнее отлаживать.
Вопрос: Как работать в строке с «{»?

Лучший ответ: Там в подсказках было, что тебе нужно продублировать фигурные скобки и отсчет начинается с 0
Console.WriteLine("new Item{{ Thumbnail = {0} }}", item.Thumbnail);

Худший ответ: Проблема не в самих скобках, а именно во вложенных "{1}", компилятор не умеет их интерпретировать.  Как вариант возможно такое решение
Console.WriteLine("new Item { Thumbnail = " + "{1}" + " }");
Но у меня подозрение, что Вы хотите сделать это
Console.WriteLine("new Item { Thumbnail = " + $"{item.Thumbnail}" + " }");
Вопрос: Как управлять сервером, который стоит в датацентре?

Лучший ответ: Ну, обычно, в датацентры ставят нормальные серверные сервера, у которых есть iKVM/iLO/iDRAC (названия разные - суть одна - плата, которая позволяет по тырнету управлять компом - зайти в BIOS, сделать начальную настройку оси, залезть в настройки RAID-контроллера, буде есть таковой.
Но это все для нормального серверного сервера. Для "сервера-из-рабочей-станции" ничего такого нет. Да, есть некоторые модели матерей, поддерживающие удаленное управление. Но для обычного компа нет и не предвидится никакой железки, которую можно было бы вставить в тачку, даже за сто тыщ мильенов.

Худший ответ: Лучше подготовить сервер полностью заранее и важно, чтобы адреса он получал по DHCP - возможно в датацентре вам сразу после включения смогут сообщить его ip адрес.
Но первичный доступ через IP KVM и доступ через него по запросу (платный или бесплатный) это стандартная практика.
Также стандартная практика - виртуализировать сервер - то есть установить на него ESXI\Hyper-V, что позволит вам более гибко управлять ОС и нагрузками на сервере. Но это зависит от задач.
Вопрос: Стоит ли подписывать такой nda ???

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

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

PS Разглашать чужие тайны плохо.

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

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

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

которая будет жрать меньше ОЗУ.Крайне странный критерий для выбора ОС.

Худший ответ: Все зависит от того что будет выполняся на сервере и какие требования к ПО. Если это древние версии то CentOS, если нужна стабильнось то Debian. Если нужны последние версии ПО, то лучше Ubuntu.

Что бы понять о чем речь, попробуйте сравнить какие версии того же php | MySQL, python по умолчанию входят в пакетные менеджеры.  Да, всегда можно подключить сторонний репозиторий и подтянуть свежак (привет от CentOS и Debian), но тогда про аргумент "стабильный" и "провереный" дистрибутив можно забыть.
  Моя рекомендация Ubuntu. И версии По более менее свежие найти в Интернет помощь по настройке Ubuntu сильно больше (тот же askubuntu.com)
Вопрос: Добрый день я хочу сделать движок для 2d Rpg с инвинтарем, спелами, боссами и тд... на чистом C# winforms хотел бы спросить что нужно учить и где?

Лучший ответ: Игра и винформс плохо совместимы. Даже для 2D крайне желательно иметь нормальное аппаратное ускорение графики. Так что - учите любую графическую библиотеку под выбранный вами язык программирования.

Гуглить как-то так

Худший ответ: В первую очередь вам необходимо создать свой движок, а точнее все используемые вами части:
1) графический движок
2) физический движок
3) возможно, магический движок
4) систему интерфейса
5) звуковой движок
6) возможно, сетевой движок
7) редактор уровней
8) редактор персонажей

Затем уже в своём движке создать игру как на любом другом движке.

p.s.
Также советую взглянуть на Unity 3D.
Вопрос: Ревью ТЗ, по которому отказ. Какие грубые ошибки совершил?

Лучший ответ: Может быть она уже нашли специалиста и проводить ваше code review уже было накладно.


Например стучится на эту вакансию 100+ человек, каждый высылает по тестовому заданию.

Факторы: скорость выполнения, адекватность собеседника, личные предпочтения. Какой-то фактор сыграл не в вашу пользу, и скорее всего вы отсеялись на уровне - "так, тех. задание выполнил, но Вася Пупкин из саратова сделал на 2 часа быстрее, + понравился HR или тех. лиду".

Итог: не расстраивайтесь, выполнять code review каждому потенциальному кандидату - это деньги, и время. Не все компании готовы выливать излишек.

PS: у нас на позицию джуна в прошлом месяце пришло 320 резюме + тех.задание, на 150м резюме мы остановились,  условно мы нашли всех кандидатов, остальные 170 остались в недоумении скорее всего. Таков бизнес :)

Худший ответ: subsetofmultiset Бегло посмотрел код. Видно сразу что имеется определенное представление о слоистой/чистой/луковой архитектуре, возможно даже читал что-то из книг Эванса/Вернона по DDD и PoEAA от Мартина Фаулера, ну или как минимум какие-то статьи базирующиеся на информации из этих книг.

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

Но это всё можно быстро рассказать такому кандидату, дать почитать соответствующие главы из книг и будет реально толковый специалист. С такими знаниями не то что джуны, даже те кто сеньорами себя мнят ничерта подобного не знают. Одни ифоделы приходят (if-else-if-else).

Я так понял, для техлида то что ты написал получилось слишком сложно. Он походу хотел чтобы ты написал всё используя подход transaction script и готово, как это делают кнопкодавы.

Для меня, человек который вас не нанял - кретин. Показать бы ему что к нам приходит на собеседования за 100к.
Вопрос: Куда развиваться? Android vs NodeJS vs Python vs Spring?

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

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

Худший ответ: Иди в Java Android, норм впринципе
Вопрос: JS. Как подсчитать количество комбинаций цифр в числе?

Лучший ответ: function nextLexInPlace(arr) {
    let i, a = -1, b = -1;
    for( i = 0; i < arr.length-1; i++) if(arr[i] < arr[1+i]) a = i;
    if( !~a) return; // no more permutations
    for( i = a + 1; i < arr.length; i++) if(arr[a] < arr[i]) b = i;
    swap(arr, a, b);
    a++;
    b = arr.length - 1;
    while( a < b) swap(arr, a++, b--);
    return true;
}

function swap( arr, a, b) {
    let xx = arr[a];
    arr[a] = arr[b];
    arr[b] = xx;
}

function allMutations( source ) {
    let result = [], arr = Array.from(String(source)).slice();
    result.push( arr.sort().slice());
    while( nextLexInPlace(arr)) result.push(arr.slice());
    return result.join('..').replace(/,/g,'')
}

console.log(allMutations(112))
console.log(allMutations(1112))
console.log(allMutations(11122))

Решение: Как составить все возможные комбинации? Сергей Соколов 

Чуть-чуть видоизменил под конкретную ситуацию

Худший ответ: Держи
Вопрос: Как правильно реализовать withRouter в реалях react-router-dom@6.0.2 и react-router@6.0.2?

Лучший ответ: ProfileContainer.js

import React from "react";
import Profile from "./Profile";
import * as axios from "axios";
import {setUserProfile} from "../../redux/profile-reducer";
import {connect} from 'react-redux';
import {useParams} from "react-router-dom";

const withRouter = WrappedComponent => props => {
    const params = useParams();
    // etc... other react-router-dom v6 hooks
    return (
        <WrappedComponent
            {...props}
            params={params}
            // etc...
        />
    );
};

class ProfileContainer extends React.Component{
    componentDidMount() {
        // debugger;
        //
        console.log(this.props);
        let userId = this.props.params.userId;
        if (!userId){
            userId=2;
        }
        axios.get(`https://social-network.samuraijs.com/api/1.0/profile/`+userId)
            .then(response => {
                // debugger;
                this.props.setUserProfile(response.data);
            });
    }
    render () {
    // debugger;
    return(
<Profile {...this.props}  profile={this.props.profile}/>
    )
  }
}

let mapStateToProps = (state) => ({
    profile: state.profilePage.profile
});

let WithUrlDataContainerComponent = withRouter(ProfileContainer);

export default connect(mapStateToProps, {
    setUserProfile
}) (WithUrlDataContainerComponent);

App.js

<Route path="/profile" element={<ProfileContainer />}>
        <Route path=":userId" element={<ProfileContainer />} />
      </Route>

это 100% работает но не самый лучший способ и нужно делать по-другому но я решаю частную задачу - нужно доделать работу в парадигме IT React Kamasutra версии 2019 года

Худший ответ: 
useParams
Миграция с v5 на v6
Вопрос: Как провести влан в удалённый комплекс?

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

Худший ответ: EOIP tunnel должен вам подойти
Вопрос: Как сделать виджет в README.md?

Лучший ответ: Они называются badges.
Брать отсюда: https://shields.io/

Худший ответ: Можно зайти в исходный код Readme.md этого репозитория - https://raw.githubusercontent.com/ScreamingSandals... увидеть там ссылки на картинки, а там уже каждый сервис по-своему выдаёт код на соотвестствующую картинку со статусом
Вопрос: Создание классов в цикле?

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

В качестве попытки угадать задачу, могу предложить функцию class_alias.

Худший ответ: В нормальных языках программирования создать экземпляр любого класса можно с помощью Reflection.
в PHP это тоже возможно:
https://www.php.net/manual/en/reflectionclass.newi...

https://stackoverflow.com/questions/1203625/dynami...
Вопрос: Как в Laravel вызвать метод модели?

Лучший ответ: Ну если вы все запрашиваете Category::all(), то вам все и выплевываются.
Запрашивайте только активные

'mainMenu'   => CategoryResource::collection(Category::where('enabled', true)->get()),

https://laravel.com/docs/8.x/eloquent#building-queries

Худший ответ: Ну если вы все запрашиваете Category::all(), то вам все и выплевываются.
Запрашивайте только активные

'mainMenu'   => CategoryResource::collection(Category::where('enabled', true)->get()),

https://laravel.com/docs/8.x/eloquent#building-queries
Вопрос: Как запретить обратную анимацию при снятии мышки с элемента?

Лучший ответ: Да, без @keyframes не обойтись. 
При отводе мыши сначала доводим rotateY до 360 (чтобы анимация продолжалась вправо), а затем очень быстро сбрасываем с 360 до 0 - так карточка незаметно перейдёт в первоначальное состояние.

UPD спустя 3 месяца :) Набрёл на этот вопрос и решил "победить" проблему: https://codepen.io/tsymbal_su/pen/vYrqLJP - как и писал ранее, нужно использовать @keyframes с очень быстрой сменой финального состояния на дефолтное

Худший ответ: @keyframes в помощь. 
на MDN
Вопрос: Должен ли я запоминать это все?

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

Худший ответ: нет - это не школа, где надо заучивать стих. Но надо это было "суметь" хотябы 1 раз. Когда 1 раз что-то осваиваешь, то второй раз ты уже "вспоминаешь", а этот процесс как правило в разы быстрее. 
 А для того, чтобы еще больше вспоминать, то я лично запоминаю определенные детали:
1) Ты уже делал вещь "х" в проэкте "х" 
2) В Проекте х ведешь блокнотик с комментами, мини документацией для тебя или же в самых нижних строках пишешь примеры.  
- (approximate solution) - тоже очень хорошее решение, но я лично слишком ленив для такого, чтобы тратить на это столько времени)))
3) Когда ты в следующий раз будешь делать какие-либо вещи, то все что тебе надо вспомнить - это то, что ты делал их уже в том проекте "х", открываешь свои комменты и делаешь копи-пейст + адаптацию. 

Если все резюмировать - вещи, которые ты используешь разово, ты ну никак не запомнишь и не зазубришь. Просто записывай их и запоминай не как они делаются, а где они лежат. Это вопрос организации, а не зубрежки.
Вопрос: Как подключить имеющийся raid1 с файлами к виртуальной машине windows server на proxmox?

Лучший ответ: Читая официальную документацию?
https://pve.proxmox.com/wiki/Passthrough_Physical_...

Худший ответ: Расшарьте по сети через самбу
Вопрос: На сколько надежны VPN-протоколы PPTP и L2TP?

Лучший ответ: Ничего не понятно. Кому получить, как получить, откуда получить. Вы, блин, сценарий атаки сначала распишите нормально и модель нарушителя укажите - кто пытается получить? У государства есть логи, всегда, если сервер физически в РФ (это так, JFYI)

Худший ответ: Имею ввиду что доступа к логам нет.  И есть ли возможность получить реальный  ip клиента подключенного к серверу. Или вторая ситуация это когда он уже отключился и потом узнать его реальный ip.  Используя уязвимости или возможно брутфорс.. или еще что-то. Не важно кто пытается получить - просто кто-то другой. Любым способом.
Вопрос: Установил ubuntu server без оболочки графической, как зайти в интернет и скачать что-то?

Лучший ответ: Браузеры для командной строки
lynx
links2 

Если точно знаете URL того что надо скачать 
wget https://site.com/file.zip

Худший ответ: Самый простой путь на десктопе скопировать ссылку на скачивание и на сервере использовать wget
Вопрос: Для чего нужен грид в 24 колонки?

Лучший ответ: Чаще всего используют 12 колонок. Причина в сравнении с красивыми 10 проста - большее количество вариаций делений при относительно небольшом числе колонок, учитывая исходные что ширина бОльшей часть экранов кратно 8.  Поэтому может вернее будет назвать эту систему системой 8-пиксельной, тк шаг в 8 пикселей для большинства размеров(при хард сетке всё кратно 8, при софт только расстояния между элементами). Таким образом легко быстро выстраивается модульная сетка с приятным ритмом.
Поэтому многие системы/фреймворки по умолчанию настроены на 12 колонок. 
24 колонки - можно условно считать вариацией для любителей чуть большей вариативности и тонкостей с шириной/расстоянием между колонками и шага в 4 пикселя и тонкой настройки золотого сечения на странице. 
Отдельно стоят любители 16 колонок(относительно популярный вариант), это, как другие менее популярные, уже частные случаи сетки и дизайна, где все в ручную подбирается, либо изначально допускается меньшая вариативность размещения элементов/колонок/модулей. Поэтому прям зацикливаться не стоит, исходите из своих задач и требований, полёта фантазии дизайнера.

Худший ответ: Да хоть 100. Никто не запрещает.
12 - просто самое удобное и самое популярно. Но это не есть правило, что везде должно быть 12.

Для жестких интерфейсов 24 вполне себе нормально.

Если с 12 колонками ты гимнаст, то с 24 ты проф атлет.
Вопрос: Как перенести сайт на другой хостинг, чтобы не полетела почта?

Лучший ответ: Да, всё так - но конструкция в целом с использованием ns-серверов хостера ущербна.

Минимум 4 часа пока не обновятся зоны у Вас ничего работать не будет.

Правильно делать так:

Использовать два (Primary и Secondary) dns-хостинга. Прописываете там что надо. В дальнейшем при смене хостера меняете только ip в A записи домена и всё начнёт работать максимум минут через 15. А почта (учитывая что у Вас через gmail и соотвественно ничего менять не надо) как работала так и будет работать.

Худший ответ: Точно ли все верно?Нет. Нужно уточнить, где сейчас находится NS, отвечающий за ваш домен. Вариантов несколько:
1. у регистратора домена;
2. на старом хостинге;
3. на отдельном DNS-хостинге (вряд ли это ваш случай);
4. на вашем собственном сервере (вряд ли);
Заново настраивать MX потребуется в случае (2), если вы также будете переносить NS на новый хостинг (при этом вы без изменений скопируете MX-запись со старого NS). В остальных случаях NS остается на своём месте, и MX на нём остаётся без изменений. Но A-запись для сайта вы меняете в любом случае.

P.S. в случае (2) вам еще поменять делегирование у регистратора домена.
Вопрос: Как из строки сделать массив чисел?

Лучший ответ: coord.split(', ').map(Number)

или

coord.match(/[\d.]+/g).map(n => +n)

или

eval(`[${coord}]`)

Худший ответ: Гугл, гугл, гугл...
Вопрос: Почему getBoundingClientRect считает не правильно высоту?

Лучший ответ: Вы родителю .item присваиваете высоту .hidden. Там ещё label рядом лежит, у которого своя высота есть + бордер + маргин. Замените 70 в расчёте h на высоту лейбла + его нижний маргин, и логика будет правильной. А ещё лучше просто сделайте так: let h = parent.scrollHeight;

Худший ответ: Скрытые элементы браузер не рендерит, поэтому размер у такого элементы не узнать.
У вас не вся высота - видимо потому, что в момент работы getBoundingClientRect() - элемент виден именно на столько...

Решение зависит от конкретной ситуации.
Я обычно позиционирую элемент абсолютно за экраном - меряю его высоту, и возвращаю на место...
Вопрос: Что лучше l2tp/ipsec или ovpn?

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

Худший ответ: но аудитор настаивает на его небезопасности
"Какие Ваши доказательства?" (С)
Вопрос: Возможно ли централизованно принудительное кэширование доменных паролей Windows на машинах пользователей?

Лучший ответ: попробуй с машины, где уже есть закешированный вход, скопировать ключ реестра HKLM/SECURITY/Cache/NL$xxxx

ну и почти первая же ссылка в гугле на dump domain cached credential

Худший ответ: За кэширование паролей отвечает политика "Интерактивный вход в систему: количество предыдущих подключений к кэшу (в случае отсутствия доступа к контроллеру домена)", значение, несмотря на описание, это количество последних пользователей домена, которые входили на эту машину. Т.к. на конкретную машину входят, обычно, 1-2 пользователя и админ(в другом случае, несколько админов), то значение 3-5 гарантированно добавит в кэш доменных админов(если они вообще когда-либо заходили на данную машину). Т.е., чтоб подключится к конторскому компу у пользователя дома - задайте политику(по умолчанию, вроде, 5), скажем, 10, зайдите под своей учёткой и отдайте комп.
Или я чего-то не понял?
Вопрос: Что лучше взять, выделенную БД или подключить свою на vps?

Лучший ответ: Есть ли какая-то разница?
Безусловно. Локальная база гораздо быстрее в работе на больших объёмах.

Худший ответ: для скорости лучше локальная СУБД
для надёжности - на отдельной машине.