Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как взять из многомерного массива значение, имея ключи этого значения в другом массиве или строке?

Лучший ответ:
/**
 * Retrieves an element within multidimensional array stored on any level by it's keys.
 * @param array $data A multidimensional array with data
 * @param array $keys A list of keys to element stored in $data
 * @return null|mixed Returns null if elements is not found. Element's value otherwise.
 */
function getElement(array $data, array $keys)
{
    /** перебираем ключи */
    foreach($keys as $key) {
        /** 
         * Если текущий элемент - массив, и в нём есть ключ, то текущий массив перезаписываем на новый.
         * А если ключа такого нет или это не массив, то возвращаем null.
         */
        if (is_array($data) && array_key_exists($key, $data)) {
            $data = $data[$key];
        } else {
            return null;
        }
    }
    
    return $data;
}
Использовать как-то так:$data = [
  'key1' => [
    'key2' => [
      'key3' => [
        'value' => 123
      ]
    ]
  ]
];

echo getElement($data, ['key1', 'key2', 'key3', 'value']); // => 123Можно пойти дальше и упростить себе вызов этой функции буквальной парой строк:Добавляем обработку ключа как строки:/**
 * Retrieves an element within multidimensional array stored on any level by it's keys.
 * @param array $data A multidimensional array with data
 * @param string|array $keys A list of keys to element stored in $data as an array or a string with joined keys with a dot (.)
 * @return null|mixed Returns null if elements is not found. Element's value otherwise.
 */
function getElement(array $data, $keys)
{
    if (is_string($keys)) $keys = explode('.', $keys);
    /** перебираем ключи */
    foreach($keys as $key) {
        /** 
         * Если текущий элемент - массив, и в нём есть ключ, то текущий массив перезаписываем на новый.
         * А если ключа такого нет или это не массив, то возвращаем null.
         */
        if (is_array($data) && array_key_exists($key, $data)) {
            $data = $data[$key];
        } else {
            return null;
        }
    }
    
    return $data;
}
И уже можно делать так:echo getElement($data, 'key1.key2.key3.value'); // => 123

Худший ответ:
ну так по мере получения ключей и забраться внутрь$data[$key][$key2][$key3]
Вопрос: Как посмотреть историю команд всех пользователей в Linux?

Лучший ответ:
grep -e "$pattern" /home/*/.bash_history
(при условии, что все пользователи лежат в /home/*)
ну или чтоб знать кто точноgetent passwd | cut -d : -f 6 | sed 's:$:/.bash_history:' | xargs -d '\n' grep -s -H -e "$pattern"

Худший ответ:
при корректном выходе пользователя, его история сохраняется в его домашнем каталоге в .<ШЕЛЛ>_history - например $HOME/.bash_history, $HOME/.ksh_history
Файл доступен только пользователю, или суперпользователю.
Следовательно запускайте cat от суперпользователя
sudo cat /home/ЮЗЕР/.bash_history
можно одной командой сразу все (правда эта команда скорее всего бесполезна):for d in $(cut -d: -f 6 </etc/passwd); do sudo cat $d/.*_history; done
или так еще прощеcut -d: -f 6 </etc/passwd | xargs -ID sudo grep -Hs "" D/.bash_history
Вопрос: Как делать запрос с сервера на сайт и проходить авторизацию?

Лучший ответ:
С какой авторизацией?
Через basic auth так:$auth = base64_encode("username:password");
$context = stream_context_create(['http' => ['header' => "Authorization: Basic $auth"]]);
$homepage = file_get_contents("http://example.com/file", false, $context );

Худший ответ:
А для обычной (через html форму) - рекомендую воспользоваться curl. Передать POST параметры и сохранить cookie
Вопрос: Как форматировать все устройства (флешки / внешние hdd и прочее) при подключению к компу?

Лучший ответ:
Вообще не советую такое делать...)

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

Лучший ответ:
Ко всем скриптам и css файлам добавьте случайный аттрибут. К примеру ?v=2
Это заставит браузер скачать все ресурсы заново

Худший ответ:
Вопрос. Как научить новый сайт перезаписывать куки и кеш самостоятельно?
HTTP заголовки, например Set-cookie и/или Cache-control, Expires, и т.д.
Вопрос: Зачем склеивают html-теги комментариями и как решить проблему без комментов?

Лучший ответ:
Подобный хак используется при верстке через inline-block: написав комментарий впритык, убирается небольшой отступ по краям элемента. Это межбуквенный отступ, если мне не изменяет память. 
Решается проблема обнулением шрифта у родителя, и повторным выставлением размера шрифта дочерним элементам.

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

Лучший ответ:
Со школы?) Всю конечно. Там база то... плюс, минус, процент, синус

Худший ответ:
ничего не пригодится, посмотри сколько кредитов берут, какие там "три по 26 будет 200"
Вопрос: Какую минимальную версию SDK ставить для новых приложений?

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

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

Лучший ответ:
Клик правой кнопкой мыши на любую точку останова, выбрать "remove all ... "
UPD. заменил картинку на более информативную

Худший ответ:
DOM брэкпоинты (то, что у вас на скрине) удаляются на вкладке DOM Breakpoints
Вопрос: Как сделать загрузку скрипта после события onload?

Лучший ответ:
гуглите dom ready или DOMContentLoaded.
Ну или в конец страницы суйте js

Худший ответ:
Можно же вставить отдельный скрипт простым способомvar scrpt = document.createElement('script');
scrpt.src = '.../...';
document.body.appendChild(scrpt);
На этом прелоадер закончится, а вставленный скрипт начнёт исполняться.
Вопрос: Насколько SEO-вреден редизайн?

Лучший ответ:
Если вы сохраняете структуру и контент, то с ним ничего не случится

Худший ответ:
Сайт допускать к индексированию стоит, если после редизайна не планируете кардинально менять тематику,  контент, семантическое ядро и структуру сайта. 
Да и в случае смены структуры вам поможет 301 редирект.
Вопрос: Групповое резервное копирование на один сервер?

Лучший ответ:
Привет,
https://syncthing.net/
Не нужно никаких облаков, все синхронизируется между машинами. Не нужно ничего никуда переносить, сделал архив, он синхронизировался с главной машиной. Обновил архив, он снова синхронизировался.
Вот тут обзор - https://ru.wikipedia.org/wiki/Syncthing

Худший ответ:
На каждом бэкапятся ежедневно базы 1С. Файловый режим. На выходе имеем файлы *.dt.При бэкапе не могут получаться файлы *.dt.Ребят, как через интернет, все это собирать каждый день на одну машину?FTP.
Вопрос: Как узнать не попали ли мои сайты в фильтр поисковой системы?

Лучший ответ:
Добавить сайт в панель вебмастера, если есть баны, то там будут соответвующие записи 
https://www.google.com/webmasters/
https://webmaster.yandex.ru

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

Лучший ответ:
Как вариант, заведите котов.

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

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

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

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

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

Лучший ответ:
Это штука называется "Skeleton loading" или "Skeleton screens " )

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

Лучший ответ:
А вы так часто их используете, чтобы прям учить? Когда мне надо написать, что-то сложнее [a-zA-Z] я лезу вот сюда, например. Там есть и подсветка, и быстрый доступ к документации, и подсказки о найденных вхождениях. Языков маловато конечно, но это не сильно мешает.

Худший ответ:
Достаточно проработать раздел "Регулярные выражения" онлайн учебника learn.javascript.ru
Вопрос: BIOS не видит SSD,как исправить?

Лучший ответ:
Материнская плата ASUS P8H77-V версия биоса последняя SSD M2 PCIe NVMe 480гб,Windows 10.Биос не видит этот диск что делать ?Ничего не делать. BIOS этой платы не умеет работать с такими дисками.
Поэтому загрузиться с него не получится, а в остальном без проблем.
С такой платой в качестве загрузочного лучше использовать SATA SSD.

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

Лучший ответ:
В https://developer.mozilla.org/ru/docs/Web/API/Docu... содержится url предыдущей страницы, с которой был произведен переход. Сделайте проверку, что если в ней есть значение текущего сайта, то это переход. Примерif (document.referrer.startsWith(document.location.origin)) {
     console.warn('Снова привет!');
} else {
     console.warn('Обычный переход');
}

Худший ответ:
Можно навесить на ссылку (на страницах сайта) параметр например mysite.ru?preloader=no. 
Отследить на JS и отключать его.
Вот так можно параметры достать из url
https://stackoverflow.com/questions/979975/how-to-...
Вопрос: Как можно геренировать отчеты в док в проекте на Ruby on Rails?

Лучший ответ:
гемчик

Худший ответ:
Собираете данные из базы и конвертируете в docx. Для этого есть готовые решения.
https://github.com/trade-informatics/caracal
https://github.com/karnov/htmltoword
https://github.com/chrahunt/docx
Вопрос: Можно ли зарегистрировать Payoneer на другое лицо?

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

Худший ответ:
1. На payoneer российские законы не распространяются.
2. payoneer - не банк, к нему многие банковские условия не применяются (со всеми вытекающими, типа банкротства, либо просто закрытия счета как на paypal, хотя я не знаю не одного случая, но все же возможность существует). Сюда же, возможно, можно отнести и закон РФ о счетах за рубежом (который штраф до 100%), т.е. формально у вас нет банковского счета (т.к. это не банк), а доход возникает в момент вывода/траты.
Так же, можете сразу перебрасывать все деньги со своего аккаунта, на другой в пределах payoneer, итого деньги будут лежать на "другом лице".
Вопрос: Обработка команд чат-бота?

Лучший ответ:
interface ICommand {
    execute();
}

Command1 implements ICommand {
   execute() {
        //command1 job  
   };
}

Command2 implements ICommand {
   execute() {
        //command2 job  
   };
}
//далее делаешь комманд фактори, который будет возвращать по интерфейсу ICommand и //вызывать у них execute
//в самой CommandFactory можешь использовать CommandRegistry, в которой будут 
//храниться все существующие команды и оттуда просто 
//CommandRegistry.get(commandName). В registry можешь в Map<String, ICommand> хранить
CommandFactory.get(commandName).execute()
Вот тебе псевдо код, как-то так можешь сделать. Если вопросы остались, пиши

Худший ответ:
Почитайте про конечные автоматы.
Вопрос: 4G, неадекватные блокировки сайтов. Что это такое и как бороться?

Лучший ответ:
Обращаться в техническую поддержку оператора.

Худший ответ:
Впн и прокси
Вопрос: Как сделать ожидание на setTimeout?

Лучший ответ:
Во в первых используй setInterval. 
Во вторых поставь какой нибудь глобальный счетчик. Когда запрос отправляется увеличиваешь на 1, когда запрос вернулся уменьшаешь на 1. И если счетчик равен 0, то делаешь запросы заново. Примерно так.window.globalCounter = 0;
setInterval(function(){
        if(window.globalCounter == 0){
             // Выполнять запросы
        }
    }, 1500);

Худший ответ:
Попробуйте сделать переменную status которая будет содержать в себе массив из всех send. Если у всех пунктов true, то позволять делать новый запрос
Вопрос: Что такое Loopback Test(s)?

Лучший ответ:
Это ошибка означает, что для теста адаптера (который скорее всего совсем ни при чём), нужно сделать специальный loopback  кабель, который и вставить в коннектор тестируемой карточки. (отсюда, но в других местах тоже есть разводка https://www.juniper.net/documentation/en_US/junos/... 
Если есть проблемы с интернетом, то вызывайте провайдера на разбор полетов.

Худший ответ:
loopback test в сетевухах -- это тест, при котором передатчик подключается к приёмнику внутри сетевухи (internal loopback -- при этом тестируется всё кроме физического интерфейса) или снаружи (external loopback -- при этом тестируется всё).
Вопрос: Как написать динамический location и try_files в конфиге NGINX?

Лучший ответ:
Вы почти нашли решение, только «/» в начале пропустили:location ~ ^/([a-zA-Z0-9]*)/ {
    root /usr/share/nginx/html;
    try_files $uri $uri/ /$1/index.html;
}

Худший ответ:
трай файл вообще  не нужно использовать
поскольку все коды должна отрабатывать CMS.
Если у вас apache+nginxerror_page 401 403 404 405 500 502 503 = @fallback;
        location @fallback {
                proxy_pass              http://127.0.0.1:82;
                proxy_set_header        Host            $host;
                proxy_set_header        X-Real-IP       $remote_addr;
                proxy_set_header        X-Forwarded-For $proxy_add_x_forwarded_for;
                }
Если чисто nginx то там еще проще по аналогие сделайте.
 За то, как отдавать ошибку, должен отвечать сам сайт, как минимум  у всех cms есть сове офомление 404
Вы привели частный случай но на сайте может быть миллион тонкостей, и в любом раскладе их должна попытаться обработать cms
Вопрос: Можно ли как-нибудь запретить открывать скрипт в браузере, но разрешить его выполнять для Cron?

Лучший ответ:
return (php_sapi_name() === 'cli');
вернет true если запускалось из коммандной строки

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

Лучший ответ:
1) Вы смешиваете алгоритмы сжатия, форматы данных и программы сжатия (архиваторы). Определитесь, что именно из этих 3 Вас интересует.
2) Теоретически почти любая программа сжатия, определив, что данные после сжатия занимают место больше, чем в оригинале, заменит алгоритм на STORING. 
НО у Вас все равно появятся накладные расходы в виде заголовка этого формата. Более того, в теории этот заголовок не может быть меньше 1 бита, т.к. информацию о том, применялся ли алгоритм сжатия или нет, необходимо как-то донести до приемной (распаковывающей) стороны, если только Вы не будете использовать для этого out-of-band-data, например, изменять/сохранять исходное расширение файла в зависимости от использованного метода/формата.

Худший ответ:
попробуйте  freearc, умеет искать повторы в диапазоне ажно 2 гб, можно "бустануть" внешними архиваторами, для улучшения сжатия отдельных типов файлов
Вопрос: Стоит ли учиться по видеоурокам HTMLacdemy?

Лучший ответ:
Если честно, то сам курс хтмлакадеми качественнее чем их вебинары, лучше пройти его весь(с премиум акком за 300 рублей или сколько там), этих знаний с головой хватит, чтобы начинать получать деньги за вёрстку, ну а дальше только опыт.

Худший ответ:
Конечно стоит. А после просмотра видео записывайтесь на интенсив, чтобы разобрать вашу работу с наставником.
Вопрос: Сертификаты для frontend-разработчика — какие получить?

Лучший ответ:
лучший сертификат для frontend-разработчика - это его github аккаунт с крутыми проектами. акцент на "крутыми".

Худший ответ:
Их никто не смотрит по факту.
Сертификаты еще могут иметь значение, когда выбирают из двух студентов.
Если у вас есть хотя бы 2 года опыта - сертификаты нафиг не нужны.
Вопрос: Как залить проект symfony на хостинг timeweb?

Лучший ответ:
Для  версии 3.4:
symfony.com/doc/3.4/configuration/override_dir_str...
для версии 4:
symfony.com/doc/current/configuration/override_dir...

Худший ответ:
Если у вас linux, просто сделайте ссылку
ln -s public public_html
Вопрос: Можно ли инициализировать статический массив алгоритмом?

Лучший ответ:
В C++14 для этого есть constexpr-функции:#include <iostream>
#include <array>

template<typename T, size_t n>
constexpr T& at(std::array<T, n>& a, size_t i) {
    return const_cast<T&>(static_cast<const std::array<T, n>&>(a)[i]);
}

template<typename T, size_t n>
constexpr const T& at(const std::array<T, n>& a, size_t i) {
    return a[i];
}

constexpr std::array<int, 20> generate_fib() {
    auto result = std::array<int, 20>{};
    for (size_t i = 0; i < 20; ++i) {
        if (i < 2) {
            at(result, i) = 1;
        } else {
            at(result, i) = at(result, i-1) + at(result, i-2);
        }
    }
    return result;
}

constexpr static const auto fib = generate_fib();

int main()
{
    for (auto elem : fib) {
        std::cout << elem << ' ';
    }
    return 0;
}Скомпилировать онлайн на GCC6.
Ограничения:В C++14 не предусмотрели constexpr для std::array::operator[]. Обещают исправить в C++17, а пока имеем костыль в виде функции at.Ни одна из текущих версий Visual Studio не способна скомпилировать данный код. M$ не дружит с constexpr.

Худший ответ:
Что мешает написать ф-цию?
Вопрос: В биосе в строке «boot option priorities» ничего не отображается. Что делать?

Лучший ответ:
Всё, нашел как решить задачу:
Зайдите в BIOS
1 Зайдите во вкладку Security – отключите Secure Boot (должно стоять - disabled).
2 Зайдите во вкладку Boot – должен быть включен Launch CSM (enabled).
3 Далее нажмите F10 для сохранения настроек и выхода.

Худший ответ:
Там же есть пункт "Add new boot option"?
Вопрос: Windows 10 1809 теряет клавиатуру PS/2, что делать?

Лучший ответ:
Проверьте реестр 
HKEY_LOCAL_MACHINE > SYSTEM > CurrentControlSet > Services > i8042prt
Если default value не 1, то откорректируйте и перезагрузите компьютер.

Худший ответ:
Купить новую Клаву. Провод хреновый. Других советов не будет
Вопрос: Это мошенническое письмо?

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

Худший ответ:
Однозначно мошенническое, ну если только вы не работаете с забугорьем.
Скачать LiveCD с антивирем, записать на диск или флэшку, остановить систему, потому что если это шифровальщик - аля улю, гони гусей. Загрузиться с LiveCD и проверить систему. На всякий случай, отключить от сети, хотя этот совет сейчас не особо актуален. Проверить состояние бэкапов - есть ли вообще :D когда последний раз делались :)
Лучше перебдеть, потому что вот у меня лежит юзерский ноут с полтерабайтным архивом фоток. Da vinchi какой-то новой разновидности, к которому еще не подобрали расшифровщика...
Вопрос: Почему foreach так работает?

Лучший ответ:
foreach ($children as $key => $child) {
    $children[$key]['href'] = $this->url->link('product/category', 'path='.
    $this->request->get['path'].'_'.$child['category_id'].$url);
}
или такforeach ($children as &$child) {
    $child['href'] = $this->url->link('product/category', 'path='.
    $this->request->get['path'].'_'.$child['category_id'].$url);
}
Описание оператора foreach

Худший ответ:
Потому что итератор по умолчанию создаёт копию объекта. Используйте ссылку:foreach ($children as &$child) {
...
}
Вопрос: На чем сделать магазин. Битрикс или Laravel?

Лучший ответ:
На ларе ты будешь писать магазин с нуля. Да, какие то модули найдешь, но основную массу придется писать с нуля. Плюс разрабатывать структуру бд. Да к тому же если сайт перейдет к другим разрабам, не факт что найдутся со знанием лары. (история из жизни - сделали клиенту небольшой сайтик на ларке. Потом он с нами поругался и ушел. Через три месяца вернулся - давай те дальше сайт сопровождать. Ларку никто не знает и не берет, а те кто знает просят астрономические суммы).
А на битриксе ты получишь один из самых крутых им в плане фишек, но при этом будешь бороться с его косяками. 
P.S. Я бы посоветовал битрикс. Он намного проще ларки и имеет из коробки мощный ИМ.

Худший ответ:
Вобще странный вопрос. Если нужен интернет магазин, ставь Битрикс. Если у вас команда разработчиков и интернет магазин на Битикс уже не справляется с задачами, то помаленьку можно писать свой на фрейморке. Это путь всех крупных компаний.
А если изначально вы уже крупная компания и у вас вдруг нет Битрикс, ну тогда возможно есть бюджет на разработку в ларовел.
Вопрос: Можно ли сделать такое на CSS?

Лучший ответ:
Как писали выше - бордер радиусом будет где-то так - нужно смотреть и править. Соглашусь с вариантом SVG

Худший ответ:
Можно, играясь с бордер-радиусами, но стоит ли? Гораздо проще взять svg.
Вопрос: При поиске по длине строки в MySQL индекс поля поможет или нет?

Лучший ответ:
Стандартный индекс здесь не поможет. Но можно воспользоваться индексом по генерируемой колонке.ALTER TABLE `table`
  ADD COLUMN `len` INT GENERATED ALWAYS AS (LENGTH(`field`)) VIRTUAL,
  ADD INDEX `by_length` (`len`)
Ну и в выборке использовать поле `len`

Худший ответ:
Нет, не ускорит. Нужен функциональный индекс именно по length(field).
mysql 5.7.6 позволяет создать вычисляемые поля: https://dev.mysql.com/doc/refman/5.7/en/create-tab...
Это может быть STORED значение - т.е. будет занимать место как обычное поле, но вычисляться автоматически при добавлении/изменении строки. Может индексироваться всё с той же 5.7.6. И может быть virtual - такое поле вычисляется при обращении, не хранится на диске, но может индексироваться только с версии 5.7.8.
Если ваша версия старая и не умеет генерируемые колонки - то в вашем распоряжении всё ещё остаются старые методы для имитации функционального индекса: создаёте ещё одно числовое поле, куда сохраняете длину текста. Индексируете как обычно. За актуальностью данных могут следить пара триггеров на before insert и before update.
Вопрос: Почему не стартует компьютер, собранный из совместимых и новых запчастей?

Лучший ответ:
Проц слишком новый. Обновите биос материнской платы до F20. Но для этого нужен проц более старой модели.

Худший ответ:
Ну напишут вам, что может быть плата... пойдете менять плату? А потом проц? Это называется - дурная голова ногам покою не дает )))
Грузите все в один пакет идете в магазин, там собираете на столе и поочередно меняете: плату, проц, память, блок питания... пока не заработает.
Вопрос: Почему Google Page Speed ругается на bootstrap?

Лучший ответ:
Лучше все стили подключать одним файлом

Худший ответ:
Лучше все стили подключать одним файлом
Вопрос: Что такое инстанс (экземпляр) приложения?

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

Худший ответ:
Ну применимо к локальной разработке:rails s -p 3001 -P tmp/pids/server1.pid  это первый инстантrails s -p 3002 -P tmp/pids/server2.pid  это второй инстант
Возможно подразумевалось отдельный сервер с приложением - один инстант.