Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как вернуть первые N максимальных элементов из массива без сортировки массива?

Лучший ответ:
Есть такой алгоритм. Называется quickSelect. Фактически, это обрезанный quickSort, где после выбора ведущего элемента и разбивки массива работа продолжается только в той половине, где находится раздел между первыми K элементами и остальными N-K.

Пусть у вас N элементов в массиве и надо вернуть K минимальных. Тогда сортировка будет работать за O(N log N), а quickselect за O(N) в среднем*. В худшем случае может быть и квадратичное время работы, но этот случай практически невозможен, если реализация испольует случайные числа для выбора ведущего элемента.

Если же вы боитесь этого худшего случая, или считаете себя самим невезучим человеком за всю историю человечества (или боитесь, что злой хакер взломает генератор случайных чисел и передаст вашей программе специально составленный массив, чтобы ее подвесить), то есть другой алгоритм, всегда работающий за O(n log k). При маленьких k - может быть даже быстрее первого алгоритма.

Суть его в том, чтобы в куче (heap aka priority queue) поддерживать пока найденные K минимальных элементов. При этом куча будет на максимум. Сначала туда кладутся первые k элементов массива, а потом каждый следующий вытесняет максимальный элемент в куче, если он его меньше.

* Вообще говоря, можно заставить quickselect и quicksort работать идеально всегда, если использовать алгоритм Блюма-Флойда-Пратта-Ривеста-Тарьяна, который ищет медиану за O(n). Но на практике этот алгоритм не применятеся, потому что у него такая константа, что там на логарифм хватит и еще на квадрат останется.

Худший ответ:
Строго - никак.

Есть разные алгоритмы частичной сортировки с минимальной сложность O(N+KlogN), где K - количество максимумов, а N - размер массива, но совсем без сортировки не получится в общем случае.

Если не строго, то сильно зависит от специфики задачи, из которой нужно взять какие-то доп. условия и допущения. Именно они позволят оптимизировать алгоритм.

Например, если K не строгое, а лишь примерное, то можно прикинуть некий порог, выше которого эти элементы будут расположены. Скажем, K=10, N=1000 элементов, и в каждом случайное число от 1 до 1000. Тогда можно почти уверенно заявить, что все искомые элементы больше 970. Пробегаем массив один раз и находим все элементы больше 970. Их окажется около 30 плюс-минус. Главное, что не менее 10. Далее этот маленький массив можно отсортировать, но это снова сортировка.
Вопрос: Какую команду необходимо ввести в маршрутизатор Juniper для сохранения текущей конфигурации после выключения питания?

Лучший ответ:
Привет!

Советую посмотреть небольшое обучение "Junos как второй язык ( Juniper Networks )" 
https://rutracker.org/forum/viewtopic.php?t=1127541
Там есть объяснения что такое режим конфигурации, candidate config, commit/commit confirmed и т.п. 

И ещё, Оливка(Olive) такая старая тема, сейчас лучше ориентироваться на EVE-NG с образами vMX/vSRX/vQFX!

Hope this helps!

Худший ответ:
Доброго времени суток !
Попробуйте для сохранения текущей конфигурации после выключения питания на маршрутизаторах Juniper необходимо выполнить следующую команду:

commit and-quit

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

Лучший ответ:
Поделитесь советом. 
Пройти курс (если такой кто-то создаст) "Как перестать искать курсы и начать читать учебники?".

Есть проверенные временем учебники (для JS это, например, David Flanagan. JavaScript: The Definitive Guide или Marijn Haverbeke. Eloquent JavaScript).

Худший ответ:
https://rs.school/js/
Долго, сложно, но зато будет результат
Вопрос: Почему AnyDesk не работает без монитора?

Лучший ответ:
Потому что все ПО, что не RDP, на самом деле  занимается съемкой скриншотов, которые хост рисует на видеокерте. Без монитора карта начинает лениться и ничего не рисует.

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

Решение банально - купите эмулятор монитора 

Худший ответ:
Почему - уже объяснили)) Он тупо копирует то что на мониторе - нет картинки на мониторе - нет копии))

Нормально будет работать VNC или RDP, они програмные, им пофиг
Вопрос: Какие есть инструменты сборки html для верстальщика?

Лучший ответ:
gulp плагин для конкретно этого действия.
gulp-inject-in-html

pug - препроцессор. Много всего в том числе и это

Худший ответ:
Лично я использую gulp-file-include - он позволяет внешне задавать переменные (даже отдельным файлом json) инклюдить любой файл (например svg) в любой файл.
Вопрос: Гайд по дериктивам assembler'a?

Лучший ответ:
А чем официальный не устроил?
https://docs.microsoft.com/ru-ru/cpp/assembler/mas...

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

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

Худший ответ:
Bungeecord - это всего лишь прокси между твоими minecraft-серверами. Не более того. Он не занимается распределением нагрузки
Вопрос: The object of type has been destroyed but you're still trying to acess it, что делать?

Лучший ответ:
Удаляете что то не то. Надо дебажить.

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

Лучший ответ:
Категории кабеля не имеют понятности актуальности. Каждая из них имеет свой диапазон применимости. В диапазонах до 1Гбит/с - категория 5e - сверхдостаточна и оптимальна. Аналогия: фапать на кабель AWG-0000 для зарядки сотового телефона)

Домашние провайдеры не предоставляют услуг гарантированного канала - поэтому и тарифы "10Мбит" и "1гигабит" и "100500гигабит" звучат так только в рекламном булшите... в договорах звучит как "..скоростью [от нуля] до xx Гбит/с [до порта провайдера]" и в переводе на человекопонятный язык это выглядит как:
- даже скорость 0 (ноль) гигабит/с в таких тарифах юридически допустима и нормальна
- это скорость от квартиры до ближайшего коммутатора, не более... 

 Так что в принципе всё это скорее развод для лошков)

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

Дальше можно прикинуть что будет когда 48 жителей одного подъезда вдруг зарядят например закачку торрентов))

Ну и да: более-менее нормальные сайты и ресурсы обязательно шейпят отдаваемый в одни руки поток... как правило не очень быстрый

Худший ответ:
Ты можешь купить хоть 10 гигабит, но заплатишь очень и очень много, коммерческий интернет минимальный от 8 рублей за 1 мбит, хочешь можешь платить за 10 гигабит.
Так скорость возможна, если сам сервер поддерживает.
Вопрос: Стоит ли пользоваться elementor и wp bakery, или как конкурировать с теми, кто с подвешенным языком и пользуется?

Лучший ответ:
Прочитал пост с месячными. 

Единственный метод долгосрочной конкуренции с кем либо - качество продукта и профессионализм.

Качество продукта = когда вы четко понимаете что требует бизнес, если это цветочный магазин с небольшой прибылью, у которого на старте банально нет денег на ваш условный магазин на laravel, а вы им его пихаете с умным видом ростовщика - то вы глупый. Скорее всего такому бизнесу для старта поможет банальная тильда или конструктор, а потом уже при росте бизнеса и потребностях - переделывать. Конструкторы это не зло, если сайт на конструкторе за 10 000 р позволяет зарабатывать миллионы при небольших отказах со стороны пользователей, то это 100% решение бизнес задачи.

Профессионализм = это ваши хард скилы, и софт скилы + умение найти ключик к клиенту и его бизнес задаче.

Всё.

Худший ответ:
Стоит ли идти на их методы, чтобы конкурировать?

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

не видишь противоречий?

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

Лучший ответ:
Любой хостинг за бугром + cloudflare.

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

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

Худший ответ:
Что значит "рандом был хорошим"? Ты можешь сформулировать это в виде "генерю 100500 случайных чисел стандартным алгоритмом, в распределении видны такие-то и такие-то аномалии"?
Если тебе для целей криптографии, то используй WinAPI функцию CryptGenRandom() или обёртки над ней. Хотя она устарела, так что можешь посмотреть в сторону BCryptGenRandom(). Ну или как выше посоветовали, пусть пользователь мышкой пошевелит.
Для всех остальных целей тебе и дефолтный генератор сойдёт. В качестве сида возьми метку текущего времени unix, опционально смешай её с ID твоего процесса. Если тебе не требуется инициализировать десяток генераторов случайных чисел за раз, этого хватит.
Вопрос: Как написать собственную платформу для e-commerce?

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

Худший ответ:
Какой вопрос, такой ответ: "Взять и написать".

Для этого можно использовать любые технологии, которые позволяют разрабатывать для Web. Все вами перечисленное сделать можно без особых проблем на:
PHP (Symfony/Doctrine, Laravel и т.п.)
Java/Kotlin (Spring)
Node.js
Python (Django)
и прочие.

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

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

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

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

Тут конечно рекомендуют использовать базы данных, но в некоторых случаях это может оказаться оверкилом, и возможно, тебе будет достаточно хранить полученные данные прямо как есть в файлах (не объединяя их), и при запросе, просто считывать их полностью (можно сразу после получения данных, делать по ним индекс и складывать рядом тоже в файл)

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

Но стоит только этим данным начать меняться, или количество данных станет несоизмеримо больше чем однократно запрашиваемые, индексные файлы и код работы с ними станут сложнее и станет проще перенести все данные в sql базу.

p.s. я воспринимаю хранение в файлах как использование nosql база данных, тем более что это очень даже быстро, и даже если хранение данных в режиме много файлов в одной записи

p.p.s. хранение файлов в php формате (var_export) и подключение их include может оказаться самым быстрым способом из всех возможных, для readonly 'баз данных' (json или serialize медленнее в полтора два раза).
upd. мне тут подсказали что есть еще более быстрый сериализатор php - igbinary и входит в поставку того же debian/ubuntu

Худший ответ:
Не уверен, что стоит писать все эти данные в MySQL, ведь каждый раз придется полностью очищать таблицу от старых данные и записывать новые.А что мешает не удалять, а менять данные?
INSERT ... ON DUPLICATE KEY UPDATE
Вопрос: Почему не роботает Slick?

Лучший ответ:
Так у вас опечатка.  Вместо "type"  "src" должно же быть в третьей строке, где подгружаете main.js
У  вас код запуска слайдера не грузится.

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.3/jquery.min.js"></script>
<script src="js/slick.min.js"></script>
<script src="js/main.js"></script>

Худший ответ:
насколько я помню в разметке для slick обязательны div внутри:
<div class="bike-slider">
  <div><img class="bike-slider__item" src="images/bike-1.jpg" alt=""></div>
  <div><img class="bike-slider__item" src="images/bike-2.jpg" alt=""></div>
  <div><img class="bike-slider__item" src="images/bike-3.jpg" alt=""></div>
  <div><img class="bike-slider__item" src="images/bike-4.jpg" alt=""></div>
</div>
Вопрос: Вопрос к владельцам VR-шлема Oculus Quest 2: отразилась ли ситуация в России на вас? Если да, то как спасаетесь?

Лучший ответ:
шлем хорошо работает и без подключения к интернету, по поводу приложений side loader в помощь (осуждаю пиратство, но что поделать)

Худший ответ:
Использую WMR шлем и стим - проблем нет.
Игры купил заранее. Как пополнить - найду способ. В крайней случае вещи из инвентаря продавать буду.

PS: квест можно хакнуть и отвязать от фейсбука
Вопрос: Uniry3D и мое железо, совместимы ли?

Лучший ответ:
Можно, но очень тупить будет, так как мало ОЗУ, но в целом можно(если у тебя стальные нервы)

UPD: По поводу "Как обстоят дела в этой сфере?". На этот вопрос ответить не могу.

Худший ответ:
Не согласен с ответом про оперативку.
У меня ноут Acer nitro 5, тоже 8 ОП, процессор Ryzen 5. Практически такие же характеристики как и у вас.
Юнити летает, лагов и прочего вообще нет.

Насчёт рисков и сферы в общем - можете полистать вакансии на hh и Хабре. Я не вижу, чтобы происходило что-то критическое. Все актуально.
Вопрос: Как сделать изображение сине-жёлтым?

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

Уточните задачу — что на входе и что на выходе? Даётся ли пара картинок «до» и «после» как образец?
Возможно, подойдёт cv2.LUT (color lookup table), пример.

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

Лучший ответ:
Тип того.
$path = Storage::disk('local')->path($path);
return response()->download($path, basename($path));

Худший ответ:
Тип того.
$path = Storage::disk('local')->path($path);
return response()->download($path, basename($path));
Вопрос: Сколько по времени займёт создание Базы данных?

Лучший ответ:
Наискорейший способ для новичка для создания базы данных и десктопного windows приложения по работе с этой базой данных - это microsoft visual studio, .net windows forms (при использовании DataSource), а так как тебе известен язык c++ то можно сразу использовать c++.net или c# (они похоже синтаксически, а так как фреймворк так или иначе тут .net то всеравно на его использование переучиваться)
да простят меня хейтерыКонечно можно и WFP но речь шла про новичка, скорость и удобство. С winforms я работал достаточно давно и тогда это было нереально удобно круто быстро просто... недавно я запустил последнюю версию студии, и проваливаясь почти на каждом шагу в ошибки и косяки понял что от былого удобства ничего не осталось (у меня выдавало ошибки на hello world примере из документации на специально начистую установленной системе и студии), например банально на уровне интерфейса красиво забиндить данные базы данных на элементы формы не получится, везде придется писать, копаться в документации и разбираться почему оно в очередной раз заглючило на пустом месте.
Базу данных можно создавать тут же или в какой-либо другой программе проектирования базы данных. Я помню мне хватало бесплатной версии dbforge (есть и для других баз, есть драйвер даже для sqlite), в принципе программ по созданию баз данных в мышевозекательном стиле полно, с диаграммами и построителями запросов.

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

Худший ответ:
SQL + html + js + (php или python или java)и немножко css.

СпойлерPS: Да да, я знаю что html - это не язык программирования. 

сколько примерно займёт это времени?Примерно от пары часов до пару лет.
Вопрос: Как организовать сеть 500 и болье хостов через lan и wifi?

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

Худший ответ:
Конкретизируйте вопрос. 
Так же как на 10 или 100 или 1000ПК...
Вопрос: Как правильно реализовать модальное подтверждением удаления элементов?

Лучший ответ:
Если именно с вашей структурой то вот:
const modal = document.querySelector('.modal')
document.querySelector('.list').addEventListener('click', (event) => {
  const target = event.target
  var task = document.querySelector(`[data-id="${target.dataset.delete}"]`)
  if (target.classList.contains('delete')) {
  
  modal.classList.remove('hidden')
  modal.addEventListener('click', (event) => {
    if (event.target.classList.contains('cancel')) {
      modal.classList.add('hidden')
      task = null
      return false
    } else if (event.target.classList.contains('confirm')) {
      modal.classList.add('hidden')
      if (task) {
         task.remove()
      }  
    }
  })
  }
})



Но я вам рекомендую изменить логику, потому что вам не нужно слушать каждый клик в этом блоке, а именно кнопки.
Если по простому, то я бы привязал слушатель на каждый из трех элементов,
В клике кнопке привязал бы передачу id из data-id и и удалял бы если в модалке нажимаешь на delete
Так-же на всякий случай подскажу если интерфейс не очень важен - есть нативный метод confir('test'): 
if (confirm('Удалить элемент?') {
 delete()
}

Худший ответ:
Не пойму в чем дело, разъясните пожалуйста.

Действительно, что-то тут не так...

Немного об оригинальном коде из вопроса...

Для начала поставьте console.log в определенном месте своего кода:

document.querySelector('.list').addEventListener('click', (event) => {
  const target = event.target
  if (target.classList.contains('delete')) {
    const task = document.querySelector(`[data-id="${target.dataset.delete}"]`)
    // Посмотрим что будет выводиться в консоль?
    console.log(target.dataset.id)
    deleteTask(task)
  }
})

И попробуйте проделать все описанные в вопросе действия, после чего посмотрите сколько идентификаторов текущего "таска" - выводятся в консоль. Что-то тут не так... Разобраться конечно в этом можно, но нужно разбираться и тратить время... 


Ну, а вообще, если как-то по простому решить проблему + немного подчистить код, то можно сделать например вот так:

const modal = document.querySelector(".modal");
const listbox = document.querySelector(".list");
const modalCancelButton = modal.querySelector(".cancel");
const modalConfirmButton = modal.querySelector(".confirm");

let currentTaskID = null;

listbox.addEventListener("click", ({ target: t }) => {
  if (t.classList.contains("delete")) {
    currentTaskID = t.dataset.delete;
    modal.classList.remove("hidden");
  }
});

modalCancelButton.addEventListener("click", () => {
  modal.classList.add("hidden");
  currentTaskID = null;
});

modalConfirmButton.addEventListener("click", () => {
  modal.classList.add("hidden");
  deleteTask(currentTaskID);
});

const deleteTask = id => id && listbox.querySelector(`[data-id="${id}"]`).remove();
Вопрос: Почему Git изменил код?

Лучший ответ:
Это конфликт версий.

Худший ответ:
У WebStorm, который у вас открыт, есть прекрасный инструмент разрешения конфликтов.

Через меню сначала сделайте Git->Commit. 
Потом в меню Git -> Fetch (вытащить все последние изменения с сервера в кэш гита).
Затем Git -> Pull. 
Если есть конфликты, откроется инструмент разрешения конфликтов.

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

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

Худший ответ:
Задайте кастомный IMAGE_INLINE_SIZE_LIMIT через переменные окружения.

https://create-react-app.dev/docs/advanced-configu...

Если нужно конкретно для определеной папки, то найдите следующий блок, скопируйте его, и в верхнем укажите регулярку, которая удовлетворит папку с emoji.

// "url" loader works like "file" loader except that it embeds assets
            // smaller than specified limit in bytes as data URLs to avoid requests.
            // A missing `test` is equivalent to a match.
            {
              test: [/\.bmp$/, /\.gif$/, /\.jpe?g$/, /\.png$/],
              type: 'asset',
              parser: {
                dataUrlCondition: {
                  maxSize: imageInlineSizeLimit,
                },
              },
            },
Вопрос: Как работает умножение вероятностей?

Лучший ответ:
Всё очень просто выводится из определения вероятности: вероятность - это отношение количества благоприятных исходов к количеству экспериментов, p=n/m. Отсюда следует, что для двух независимых событий p1=n1/m1, p2=n2/m2 количество благоприятных исходов n=n1*n2 (т.е. при каждом любом благоприятном исходе события 1 нас удовлетворит абсолютно любой благоприятный исход события 2), а количество экспериментов - m=m1*m2. Тогда p=n/m=(n1*n2)/(m1*m2)=p1*p2.

Это обычная комбинаторика. Ещё раз обращаю внимание, что для любого конкретного отдельного благоприятного исхода события 1, например #456, нас удовлетворит любой благоприятный исход события 2, например #789. Это означает, что общий исход #123 & #789 отличается от общего исхода #456 & #789, поэтому всего таких комбинаций n1*n2, а не (как вам кажется на первый взгляд) n1+n2.

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

Лучший ответ:
Если ставить сперва Win 7, а потом Win 10 со стандартной разметкой диска (где загрузчик на отдельном разделе), то и при первом варианте (UEFI/GPT загрузке) и при втором (Legacy/MBR) все будет нормально и при загрузке будет выбор какую ОС грузить. 
Касательно третьего варианта точно не скажу как будет, но без танцев с бубном точно не обойтись.

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