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

Лучший ответ:
У меня один ПК с Ubuntu и все. Нет Mac, нет IOS. 
Если мощность компьютера позволяет, то установите VMware + Mac OS + Xcode  coha.look-website.xyz - последний мой проект, в котором наблюдаются косяки только в браузере Safari, а таже в Safari и Chrome под IOS, где проблему выявить так и не удалось.
Вы используете только -ms префикс добавьте ещё -webkit префикс. 
На примере .main класса:
у вас: .main {
    max-width: 1170px;
    margin: 0 auto;
    display: -ms-flexbox;
    display: flex;
    -ms-flex-pack: justify;
    justify-content: space-between;
    -ms-flex-flow: row nowrap;
    flex-flow: row nowrap;
}
а какой должен быть:.main {
    max-width: 1170px;
    margin: 0 auto;
     display: inline-block;
    display: -webkit-box;
    display: -moz-box;
    display: -ms-flexbox;
    display: -webkit-flex;
    display: flex;
    -ms-flex-pack: justify;
    -webkit-justify-content:space-between;
    justify-content: space-between;
    -ms-flex-flow: row nowrap;
    -webkit-flex-flow: row nowrap;
    flex-flow: row nowrap;
}

Худший ответ:
Частенько вертска едет из-за отсутствия flex-bazis - вы можете задавать его в тех же величинах (в процентах лучше, конечно) и поддержать через width или max-width. Но с max-width - все темно - часто мобилы с сафари это свойство игнорируют как факт.
Еще хак - поиграйтесь с flex: 1 0 initial; - тут самое интересное именно initial.
Вопрос: Как отобразить все процессы базы данных?

Лучший ответ:
Это обёртка SHOW FULL PROCESSLIST и частота опроса в ней больше чем время выполнения запросов.
включите логирование в my.cnf и используйте tail -f log.file

Худший ответ:
SHOW FULL PROCESSLISTДокументация
Вопрос: Как установить phpmyadmin на php7?

Лучший ответ:
нужно настроить веб-сервер

Худший ответ:
Нужно установить и включить mod-php
Вопрос: Свой VPN в сети Beeline?)?

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

Худший ответ:
Сейчас, насколько мне известно, многие операторы практикуют раздачу трафика с ваших же точек для увеличения покрытия и прочего. Полагаю, что такое можно сделать лишь на "их" точках. Если это так и точка это устройство, выданное провайдером или там продано за 1 рупь, то наверняка всё подряд там не режется
Вопрос: Почему обработчик onclick срабатывает при загрузке страницы?

Лучший ответ:
Потому что вы вызываете функцию myFunction с аргументом 5  и присваиваете someBtn.onclick результат ее выполнения, а не саму функцию.
Исправьте так:var someBtn = document.getElementById('all');

someBtn.onclick = function() {
  myFunction(5);
}

function myFunction(a){
  alert(a);
}
или так:var someBtn = document.getElementById('all');

someBtn.onclick = function() {
  alert(5);
}
а по-хорошему так:var someBtn = document.getElementById('all');

someBtn.addEventListener('click', function() {
  myFunction(5);
});

function myFunction(a){
  alert(a);
}

Худший ответ:
Нужно события навешивать через addEventListenervar someBtn = document.getElementById('all');

someBtn.addEventListener('click', funtion(){ myFunction(5); });

function myFunction (a){
  alert(a);
}
Вопрос: Что происходит при переполнении оперативной памяти?

Лучший ответ:
В первую очередь интересует Linux, но хотелось бы вместе с этим узнать, как дела обстоят на других операционных системах.
Начнёт заполняться свой (swap), в других ОС (windows) примерно такая же система, про "совсем другие ОС" - я не в курсе. 
И в Linux и в Windows и в других ОС, для которых есть компиляторы языка Си, есть функция, если посмотреть описание, например, такой функции, как malloc, то мы увидим оттуда, что: Если функции не удалось выделить требуемый блок памяти, возвращается нулевой указатель.
То есть программа сама должна контроллировать, выделили ли ей память или нет. В языках высокого уровня, этот процесс происходит аналогичным образом, просто функция выделения памяти обычно "спрятана" от глаз программиста и этот процесс происходит автоматически, но результат в теории должен быть аналогичным.Про SWAP можно немного почитать тут.
Некоторые программы, такие как Photoshop например, будучи заранее зная, что оперативной памяти не хватит наверняка, имеют свои механизмы "свопинга", т.е. создание некоего подобия "подкачки" на диске. У меня например, при открытии одного шаблона (макета) Photoshop может легко "откусить" 100Гб с диска, а если ещё и история изменений большая - может и больше.
Отдельно хочу обратить Ваше внимание, что в Linux'е есть некий механизм "самосохранения" в ядре, который при определенных условиях начинает "убивать" процессы, вышедшие из под контроля. В какой именно момент времени это происходит - точно я к сожалению сказать не могу, т.к. ещё только в процессе изучения подобных механизмов, но подозреваю, что "выход из под контроля" - это когда процесс и его потомки (форки) начинают потреблять чрезмерное кол-во процессорного времени и возможно памяти. Я наблюдал такую картину во время DDoS атаки на сервер, в этот момент Linux начал "крошить" всё подряд, в т.ч. и веб-сервер попал под раздачу. Среди прочего, помню, что где-то в документации читал, что процессу можно установить соотв. "флаг" или "приоритет" влияющий на этот механизм.
*ещё раз раз обращаю Ваше внимание, касательно абзаца выше - я детально не изучал данный механизм и в документации "по быстрому" информации не нашел, по этому, в последнем абзаце - информация может быть не совсем точной.

Худший ответ:
Будет грузить данные в своп. Если и он закончится, то программа выдаст что то вроде "can not allocate memory"
Вопрос: Как выглядит диаграмма направленности такой СВЧ антенны на плате?

Лучший ответ:
Если найденные прямоугольные структуры на плате таки есть вторая антеннаРазумеется, это она.1) Куда она светит? "Гантелей" перпендикулярно плоскости платы? Было бы логично прикрыть подслеповатые "полюсы" штыревой антенны, особенно в частном доме с тремя этажами и подвалом...Поскольку форма её не является регулярной, а представляет собой набор проводников произвольной длины и ширины, вряд ли можно достаточно точно прикинуть её ДН "на глаз". Думаю, тут и математика не всякая справится. Ну, для начала в первом приближении считайте её шаровой. Паузы штыревой она при этом заполнит при любом наклоне штыря.2) В каких пределах обычно находятся КУ таких антенн на плате? Предположу, что он очень малый.Правильно предполагаете. Вряд дли там даже 5 дб есть.3) Если отвинтить внешнюю штыревую антенну на 5dBi и прикрутить "хлыст" на 8-10dBi, электронику на плате не стошнит от такого издевательства?Абсолютно не стошнит, я такое не раз делал. Надо только по возможности точнее согласовать антенну с кабелем 50 ом, чтобы не допустить стоячих волн. Ну и  расположить новый штырь так, чтобы максимально эффективно использовать его блинообразную ДН, а в тех направлениях, где она имеет провалы, понадеяться на слабенькую встроенную.

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

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

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

Лучший ответ:
Если у тебя ничего кроме SQL нет - отдай все ядра ему.
То что ты читал про удвоение - это гипертрейдинг и никакого отношения к виртуалке не имеет.

Худший ответ:
отдавать нужно столько ядер, сколько реально может "освоить" виртуальная машина. бессмысленно выделять 8 ядер на виртуалку, которая крутит приложения, оптимизированные только для двух. в вашем случае, очевидно, речь идёт про mssql или аналогичную промышленную субд, которая умеет грамотно работать в многоядерной среде, поэтому выделить можно (и нужно) все доступные ядра.
Вопрос: Зачем нужны миграции?

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

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

Лучший ответ:
Резиновая лодка, фриланс, ноутбук - вещи несовместимые.
Это просто опасно не только для техники, но и для Вас.
Если всё-таки хотите по-дольше поплавать с ноутом - Вам нужно что-то вроде портативной энергостанции. Самое простое - это зарядка аккумулятора на солнечных батареях. https://www.amazon.com/X-DRAGON-Charger-Sunpower-N...
www.ebay.com/bhp/solar-battery-charger-laptop

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

Лучший ответ:
Открыть в новой странице для которой css@page {
  size: A4;
  margin: 0;
}
@media print {
  html, body {
    width: 210mm;
    height: 297mm;
  }
}
Укажите нужные размеры страницы

Худший ответ:
Тут проблема в ммм, доверии к кассиру
В общем случае, нельзя давать печатать из интерфейса браузера
Потому, пишем сервис, который будет висеть на пк кассира и слушать порт например 1337
Когда джанга сформирует чек на печать, показываем кассиру сообщение
Кассир нажимает кнопку и подтверждает, что нужно напечатать чек
Кнопка ведет на порт (допустим 127.0.0.1:1337/check_id=1234), который слушает твой софт, который соединен с принтером
Софт идет на сайт и забирает оттуда чек c id 1234
Печатает
И отправляет лог печати в джангу
ПС: при отключении сайта/инета схема не будет работать
Вопрос: Как «зафиксировать» ширину блока при присвоении position: fixed; и контролировать его поведение?

Лучший ответ:
Вообще поведение полностью логичное. Вы сами пишитечто, в принципе, естественно, т.к. отчет от экрана, и с этим можно бороться
относительный размер (как у вас) тоже будет считаться от экрана.
Насколько я понимаю эту проблему призван решить position: sticky, (поправьте, если нет)  но работает он пока что далеко не везде.
1. В любом решении без JS необходимо будет какое-то фиксированное значение, один из вариантов: добавить контейнеру фиксированный max-width, а блоку width: inherit;
max-width: inherit;
Таким образом блок унаследует max-width контейнера и не будет выходить за его пределы.2. Как контролировать поведение и сделать плавное "скольжение" блока без прыжков на старте?
"Прыжок" в вашем случае это премещение на 12px от края экрана, поскольку вы добавляете класс с position: fixed 
top: 12px только когда scrollTop становится равен offsetTop, а после этого он естественно отпрыгивает вниз на 12px. Чтобы избежать этого надо добавлять класс когда scrollTop равен (offsetTop - 12px), потому что в этом случае блок при добавлении будет уже в "нужном" месте.
https://codepen.io/Alvvi/pen/MEXeaV

Худший ответ:
.fixed {
	position: relative;
	//width: 100%;
	margin: 0 auto;
	border: 1px solid #0C0;
	background: #EAFFEA;
}
потому что тут position: relative; и размер он берет относительно родителя. а когда вы делаете блок фиксированным, размер берется относительно окна.
Вопрос: Вывести элемент по клику, react?

Лучший ответ:
Да, это называется порталы, вот раздел в документации:
https://reactjs.org/docs/portals.html

Худший ответ:
Да, нужно использовать порталы. Имеет смысл создать специальный компонент для этого.
Portal.jsx:import React, { Component } from "react";
import ReactDOM from "react-dom";


class Portal extends Component {
  componentWillUnmount() {
    document.body.removeChild(this.defaultNode);
  }
  render()
  {
    if(!this.defaultNode) {
      this.defaultNode = document.createElement('div');
      document.body.appendChild(this.defaultNode);
    }
    return ReactDOM.createPortal(this.props.children,this.defaultNode)
  }
}
export default Portal;
Потом используем в любом компоненте:import Portal from "./Portal";
//...

class App extends Component {
  render()
  {
      return (
         <div>
            <Portal>
               <div style={{zIndex:10000}}>Этот див буде добавлен перед закрытием body</div>
            </Portal>
         </div>
      );
  }
}
export default App;
Вопрос: Как автоматически распознать название товара?

Лучший ответ:
Первое, что бы я сделал, это собрал базу брендов (например Michelin, Pirelli и тд). Дальше необходимо распарсить параметры резины: 275/30 R20, тем самым мы сужаем поиск. Дело остаётся за малым).
PS  Но я нахожусь в Украине, а у нас на данный момент этот сервис заблокирован
Если проблема только в этом, то это вообще не проблема :)

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

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

Худший ответ:
Очень удобный
https://asana.com
Вопрос: В программисты или в тестировщики (идти)?

Лучший ответ:
Какая работа по душе, туда и идите. Если бы грузчики получали больше инженеров (а иногда так и есть), я бы все равно не пошел работать грузчиком потому что не люблю рутинную монотонную изнурительную работу. С другой стороны, кто-то не любит напрягать мозг - он идет грузчиком. Это ничего не значит, просто каждому свое. Из своего опыта добровольного и бесплатного опыта бета-тестера могу сказать, что это рутинное и неинтересное занятие, от которого сильно тянет в кроватку. Но есть прекрасные тестировщики, балдеющие от своей работы. Кто прав? Тот кто сделал для себя правильный выбор.

Худший ответ:
в тестировании легче построить карьеру ;)
Вопрос: Пути заполнения базы данных адресами РФ?

Лучший ответ:
Вариантов немного: ФИАС

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

Лучший ответ:
Здравствуйте.
Посмотрите содержимое файла robots.txt 
Скорее всего вы запретили доступ гуглоботу к файлам css & js темы из-за чего сайт отображается некорректно.
Добавьте следующие строки в роботс и перепроверьте заново:User-agent: Googlebot
Allow:	/*.css*
Allow:	/*.js*
Allow: 	/*.ttf*
Allow: 	/*.woff*
User-agent: Googlebot-Mobile
Allow:	/*.css*
Allow:	/*.js*
Allow: 	/*.ttf*
Allow: 	/*.woff*

Худший ответ:
Вроде разобрался. Почему то он так реагировал на свойство: min-width. И причем даже на закомментированное.
Вопрос: Какова правильная логика обновления клиента игры?

Лучший ответ:
Из личного опыта: imho самое правильное это иметь неразрывную цепочку обновлений с первой версии до текущей, т.е 1>2, 2>3, 3>4 итд. 
Периодически для чистой установки выпускать мажорные версии, - но при этом все равно иметь неразрывную цепочку обновлений. 
Делать патчи вида 1>4, 2>4 итд - по моему опыту архи неправильно, т.к создает огромные риски неявных багов + затраты на сборку таких патчей.
По факту для пользователя нет проблемы установить много обновлений.Будет осуществляться проверка на то, какая из блоков цифр в версии отличается.Это Вы какие то мелкие частности обсуждаете.Как у них осуществляется проверка наличия даже самого ненужного файла? Удалил файл из каталога, а он берет и докачивает его. Проверяет перед запуском все каталоги на время изменения и сравнивает с серверными?
Вопрос третий: Насколько эффективно будет сравнивать время изменения каталогов у пользователя и сравнивать с серверными? Ведь если даже в самой глубокой директории был изменен/удален/создан файл, то самый верхний по иерархии каталог будет иметь дату изменения ту, когда был затронут файл. Соответственно, таким образом можно избежать большого количества рекурсивных проверок.
И, соответственно, обновиться будет проще. Удаляем измененный каталог и закачиваем заново.Привязываться к дате изменений - не лучшая идея. Проверка обходит каталоги рекурсивно, сравнивает не только список файлов но и их хеши. Почитайте как работает dropbox/яндекс.диск, да тот же торрент наконец

Худший ответ:
Честно говоря, я с этим не сталкивался, но я бы попробовал сделать так:
Допустим, мы выпускаем новую версию - 2.46. При этом на сервер мы заливаем полную версию для чистой установки или для обновления с очень старых версий, и делаем n-ное количество патчей 2.45to2.46, 2.44to2.46, 2.43to2.46... Так, если пользователь отстаёт на несколько версий, он просто загрузит минимально необходимую разницу между его версией и актуальной, если же у пользователя очень старая версия, он скачивает заново весь клиент.
Таким образом минимизируется количество загрузок для пользователя, а следовательно уменьшится нагрузка и на сервер.
Вопрос: Как запускать js при определенном разрешении экрана?

Лучший ответ:
А почему бы не использовать медиа-запросы? matchMediaПростенький примерvar mediaQuery = window.matchMedia("screen and (min-width: 600px)");
mediaQuery.addListener(foo);
foo(mediaQuery);

function foo(mq) {
    document.body.style.backgroundColor = mq.matches ? '#f00' : '#060';
}

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

Лучший ответ:
Очень просто.
Асинхронные всегда.
Синхронные никогда.
https://developer.mozilla.org/ru/docs/Web/API/XMLH...[...] В основном предпочтительно использовать асинхронные запросы вместо синхронных из-за соображений производительности.
Синхронный запрос приводит к выполнению кода, который "блокирует" взаимодействие с вкладкой браузера до тех пор, пока запрос не будет полностью выполнен, что существенно ухудшает отклик страницы.
Новомодный fetch вообще не имеет синхронной версии и даже старый добрый XHR сильно ограничен.

Худший ответ:
Все просто -
Асинхронные - когда дальнейшая работа программы не зависит от выполнения запроса.
Синхронные - когда зависит.
Вопрос: 1С:Бухгалтерия 7.7 Представление регламентированной отчетности — ошибка. Что не так?

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

Худший ответ:
Вы совершенно правы. Я просто не обратил внимания, что была устаревшая редакция. Сейчас уже третья за 1 квартал 2018 года. Виной всему моя невнимательность. Повторное обновление решило проблему.
Вопрос: CSS+HTML. Как реализовать текст в углу?

Лучший ответ:
родителю надписи position: relative, 
надписи position: absolute; top: 10px; right: 10px;

Худший ответ:
Можно и с помощью flex  ТЫЦ
Вопрос: Как выровнять блок по центру Bootstrap?

Лучший ответ:
Верстку поправьте, у вас в списке то </a></li>, то </li></a>jsbin.com/kojawuw/edit?html,css,output

Худший ответ:
Добавьте вашему классу .breadcrumb display: inline-block
Вопрос: Хорошая коллекция элементов Windows Forms?

Лучший ответ:
Только платные решения типа DevExpress и Telerik. 
Иначе зачем разработчикам активно поддерживать устаревший фреймворк?

Худший ответ:
Попробуй AvaloniaUI
https://github.com/AvaloniaUI
Вопрос: Почему меню сразу схлопывается?

Лучший ответ:
Добавь в стили .navbar-collapse.collapse.in {
        display: block!important;
    }
Код срабатывает, а вот стили для .in - нет!

Худший ответ:
а где это можно увидить в действии ?
Вопрос: Почему блок с position:fixed двигается?

Лучший ответ:
Это такая тонкость в спецификации.
https://stackoverflow.com/questions/15194313/trans...

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

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

Худший ответ:
С хэшом все правильно. Можно еще класть в куки этот хэш, чтобы при закрытии сессии авторизация сохранялась. И последовательно проверять при открытии сайта, сначала переменную сессию потом куку. Если в куке нет хэша то юзер точно вылетел))
А при принудительной деавторизации можно сделать так. Ты в индекс файле проверяешь авторизован ли юзер или нет. При каждой заходе на сайт ты сравниваешь хэш в браузере с хэшом базы. Если разные то - просишь авторизоваться снова.
Вопрос: Поиск значения в объекте JS?

Лучший ответ:
Это обычный массив. В javascript typeof почти на всё отдаёт object, тип массивов проверяют иначе.
learn.javascript.ru/types-intro

Худший ответ:
console.dir(value); // Array(2) // Вам это ничего не говорит?

const arr = [20, 27];

console.log(arr.includes(27)); // true// К тому же если бы это был объект (ассоциативный массив) в виде обычного массива (наличие порядка и длины), то...
const obj = {
  0: 20,
  1: 27,
  length: 2
};

console.log(Array.prototype.includes.call(obj, 27));  // true// Определение типа
const getType = something => Object.prototype.toString.call(something).slice(8, -1);

console.log(getType([1, 2, 3, 4, 5])); // Array
console.log(getType({})); // Object
console.log(getType(12)); // Number
console.log(getType("iamevg")); // String// Перевод объекта в массив.
const obj = {
  0: 20,
  1: 27,
  2: 54,
  3: 12,
  4: 67
};

console.log(Array.of(...(Object.entries(obj)).map(item => item[1]))); // [20, 27, 54, 12, 67]
console.log(Array.of(...Object.values(obj))); // тоже самое, только ES2017
Вопрос: Какая разница между ES5 и ES6?

Лучший ответ:
Текущий стандарт начинается со слов:ECMA-262
7ᵗʰ Edition / June 2016
ECMAScript® 2016 Language Specification
Прошлый:Standart ECMA-262
6th Edition / June 2015
ECMAScript® 2015 Language Specification
Еще раньше начинался так:Standard ECMA-262
5.1 Edition / June 2011
ECMAScript® Language Specification
Ходят слухи, что в те далекие времена говорили просто - Javascript, и никто особо не заморачивался. В особо запущенных случаях разделяли пятую версию и самую древнюю - третью (ее использовали особые гуру для поддержки каких-то динозавров и осликов). Но с некоторых пор стандарт стал обновляться каждый год, и к названию ECMAScript добавили год издания стандарта, но старая нумерация (3,5,6,7) осталась в сердцах людей, вот и получается, что "ES2015" - это "ES6 по старому стилю", "ES2016" - "ES7 по старому стилю".

Худший ответ:
Был ES6 и позже его переименовали в ES2015. Согласно https://en.wikipedia.org/wiki/ECMAScript