Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: С чего начать изучение ИБ?

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

Кинофильмы и сми, как правило, романтизируют вторую сторону, рассказами о том, как при помощи дуделки из пачки хлопьев можно поломать вообще все.

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

и так сойдет, никто не догадается, как это устроено

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

А юридическая сторона - это регламенты регламентов и отчеты об учете отчетов. И на специальности "ИБ" в вузе учат именно этому, как правило.

Худший ответ:
С выработки умения самостоятельно искать нужную информацию. ИБ-шнику это умение нужно в первую очередь - потому что выше него - только небо... (Ну и непосредственный начальник - добро, если он тоже ИБ-шник, а то ведь запросто будет директор по безопасности, бывший мент - хотя бывших ментов не бывает :) )
Потом ответить себе на вопрос - почему в ИБ? Что Вас сюда привлекло? Это область на стыке СБ и ИТ, сотрудники которой - этакие полуадмины-полуполицейские, маленькая конторская секретная служба... Для работы здесь нужно обладать достаточно специфическим характером и выраженной стрессоустойчивостью - потому что это может оказаться скучная, неприятная порой откровенно нечистоплотная работа...
И разумеется, регламенты, регламенты, регламенты, документация, знание законодательства, пароли, сертификаты, файрволлы, права доступа, блокировка ВКонтактика. Добро, если контора не очень большая, где будете одним ИБ-шником (или одним из двух) и на Вас свесят еще линуха - тут хоть что-то будет интересное. А то можете ведь и сутками сидеть, пялясь в экран оперативного мониторинга юзеров :)
Вопрос: Актуальные ресурсы по Kotlin и мобилную разработку?

Лучший ответ:
То есть вы даже не смогли найти документацию к котлину на русском? То есть вы хотите ни копейки не вложить? На что вы рассчитываете? 

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

А вообще лучше вначале научитесь поисковиком лучше пользоваться. Все ответы на ваши вопросы и ошибки все равно в интернете уже есть и скорее всего на англ. 

Начните с изучения программирования, а не языка

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

Лучший ответ:
Какой у вас сейчас телефон в кармане, с того и начинайте.

Худший ответ:
Начать 100% нужно с идеи того, что вы собираетесь делать и как будете это раскручивать. Если сделаете что-то, а вас скачает 1000 человек за пол года - не думаю, что желание продолжать у вас ещё останется :)
Вопрос: Задание с learn.javascript. Поясните код?

Лучший ответ:
+ Чтобы число получить и работало строгое равенство number === 0Унарный плюс
https://learn.javascript.ru/operators#preobrazovan...
А обратных слешей у тебя в вопросе вообще нет, но вообще они используются для экранирования или указания спецсимволов

Худший ответ:
+ перед prompt это краткая форма приведения строки к числу, так как возвращаемое значение prompt является строкой. а символ \ используется для экранирования символов, которые являются обычно специальными для строки и их просто так не используешь в строках. Например console.log("abc\"de") - выведет строку abc"de. То есть сочетание \" заменилось просто на " при выводе.
Вопрос: Как правильно удалить рекурсивно все файлы и директории, кроме файлов одного типа?

Лучший ответ:
find /каталог ! -name \*.txt -type f -delete && find /каталог -type d -empty -delete

Худший ответ:
В МАНе мало вменяемых способов, увы...

Можно так, например - указать расширения, которые нужно удалить

rm *.jpg *.gif

не указывая .txt

А лучше, как парни выше написали через find
Вопрос: Какие подводные камни при разработке крупного маркетплейса на vue+ssr?

Лучший ответ:
"Научите меня программировать?"
Вопрос слишком общий. 
Сделать можно. Ибо vue и рожден ради крупнейшего в мире маркетплейса.
Вопрос только в том - а способны ли вы это сделать и какие лично у вас будут косяки.

Худший ответ:
Делайте сразу с расчетом на гор. масштабирование, почитайте про технологию kubernetes
Вопрос: Как исправить ошибку dictionary changed size during iteration?

Лучший ответ:
Проблема связана с тем, что вы пытаетесь модифицировать словарь, по элементам которого итерируетесь.
В условиях вашего кода это не проблема. Но вы должны сначала прежде чем начнётся цикл с удалениями) взять список пар элементов из вашего словаря.
products.items() возвращает не список, а итератор по элементам словаря. Само собой этот итератор ломается как только вы удаляете из словаря первый элемент.
Но если этот итератор до первого удаления полностью превратить в список, то удалять потом можно что хотите.
for product_id, value in list(products.items()):
    if value['g_1'] == 0:
        del products[product_id]
Или так:
new_products_dict = {k: v for k, v in products.items() if v['g_1'] != 0}
Здесь создаётся новый словарь из элементов, которые удовлетворяют вашим условиям.

Худший ответ:
products = {
    '00000234': {'value1': 0, 'value2': 23},
    '567333': {'value1': 5, 'value2': 23},
    '23234243': {'value1': 25, 'value2': 23},
}
products = {product_id: values for product_id, values in products.items() if values['value1']}
print(products)
# {'567333': {'value1': 5, 'value2': 23}, '23234243': {'value1': 25, 'value2': 23}}

Или

spoilerСоздай еще один словарь, проверяй условие в цикле 
если проходит по твоим параметрам (что нет параметров равных 0) добавляй в новый словарь,
по окончании цикла возвращай новый словарь
Вопрос: Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, bool given in?

Лучший ответ:
Проблема в неспособности произвести отладку и недостаточном знании php"SELECT * FROM `persons` WHERE fname='".$fname."'"<?= $r['firstname']; ?>
Так fname или firstname?
PS. sql инъекций не существует, подготовленные запросы придумали масоны чтоб усложнить жизнь разработчикам. Извините, накипело

Худший ответ:
Подскажите, пожалуйста, в чём проблема?
В ДНК. Шутка.
Проблема в чудовищном пещерном коде, который до сих пор преподают во всяких хтмлакадемиях и прочих видео с ютуба.
Ну то есть основная причина - это неверное имя поля, как правильно заметили в соседнем ответе, но при правильно настроенном пхп не пришлось бы гадать. при соединении надо сказать mysqli чтобы сообщала обо всех ошибках. Ну и сам запрос надо исполняьт не так как у тебя, а правильно
Сначала делаем отдельный файл mysqli.php и пишем в него код соединения. И это не одна строчка.
Код берем отсюда, подставляем свои значения.if (isset($_POST['search'])) {
    require 'mysqli.php';
    $stmt= $mysqli->prepare("SELECT * FROM `persons` WHERE firstname=?");
    $stmt->bind_param("s", $_POST['fname']);
    $stmt->execute();
    $result = $stmt->get_result();
    while($r = mysqli_fetch_assoc($result)){ ?>
                    <tr>
                          <td><?= $r['id']; ?></td>
                          <td><?= $r['firstname']; ?></td>
                          <td><?= $r['lastname']; ?></td>
                          <td><?= $r['age']; ?></td>
                          <td><?= $r['gender']; ?></td>
                          <td><?= $r['city']; ?></td>
                      </tr>
            	<?php
   		}
       	} ?>
Вопрос: Есть ли сайт с установленным linux?

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

Худший ответ:
Эмулятор компьютера с linux на JavaScript 
https://habr.com/ru/post/119424/
Вопрос: Почему браузер зависает в цикле при i+1?

Лучший ответ:
В чем проблема?
При i + 1 значение i не меняется и цикл зацикливается навечно )

Худший ответ:
В чем проблема?
При i + 1 значение i не меняется и цикл зацикливается навечно )
Вопрос: Border-bottom Почему в виде трапеции?

Лучший ответ:
Попробуйте убрать строчки border-left: 1px solid white;
border-right: 1px solid white;

Худший ответ:
уберите границы (border-left/border-right)
Вопрос: Встанет ssd на эту материнскую плату?

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

Худший ответ:
Да вроде не видно причин, почему бы ему не встать. Asus говорит, что на плате:
1 x M.2 Socket 3 with M key, type 2242/2260/2280 storage devices support (SATA & PCIE 3.0 x 4 mode)
Диск соответствует.
Вопрос: Как описать структуру PHP объекта?

Лучший ответ:
Чтобы делать "каскад" последовательных методов тебе нужно в каждом методе возвращать этот же объект.

class Base {
	
	public function test($string){
		// Что то делаем.
		return $this;
	}
	
	public function chek($string){
		// Что то делаем.
		return $this;
	}
	
	public function hello(){
		// Что то делаем.
		return $this;
	}
}
А писать в коде удобнее так:

$base
->test('string1')
->chek('string')
->hello();

Худший ответ:
Классы могут выглядеть как угодно.
К синтакису вызова "структура объектов" (на самом деле классов) не имеет никакого отношения.

В РНР используется унифицированный синтаксис. К результату любого выражения в РНР можно обратиться так же как к переменной. 
Если выражение возвращает массив, то можно приписать скобочки и обратиться к элементу возвращаемого массива
echo function()[1];
Если выражение возвращает объект, то можно приписать стрелочку обратиться к методу или свойству
echo function()[1]->hello;

Следовательно, чтобы писать стрелочку после метода, метод - сюрприз - должен возвращать объект. Себя или любой другой - без разницы
Вопрос: Как начать работать без «фонового шума»?

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

Худший ответ:
Музыка не только изолирует от окружающих шумов, но и стимулирует определенный ритм, не давая расслабиться.
Чтобы она не отвлекала, стоит слушать то, что и так знаешь до ноты и слушал сто раз. 
Что-нибудь бодренькое, но не агрессивное - оно утомляет - и не монотонное - оно отупляет. 
По мере уставания можно переходить, скажем, от Милен Фармер к Скорпионз ;)
Понимание того, что слушаешь, не особенно влияет на отвлечение. 
Разницы между Макаром, БГ и ERA в этом плане мне лично заметить не удалось.
Вопрос: Как удалённо подключится командной строке другого компьютера на Active directory?

Лучший ответ:
Ну это же не гугл. В гугле по первым запросам можно всё найти.

Psexec - надо качать
в powershell - New-PSSession
win32-openssh
telnet тоже можно, но это совсем уже "такое"..

Худший ответ:
telnet server встроен в виндовс.
Вопрос: Почему ГПСЧ нужно инициализировать в main()?

Лучший ответ:
Не должно быть ошибки. Если вы только не в цикле его инициализируете. Приведите код который приводит к ошибке.

Худший ответ:
Потому что в srand() будет передаваться одинаковое число. Функция time возвращает число секунд от начала 1970 года, её значение меняется раз в секунду, а цикл программы выполняется намного быстрее.
Вопрос: Как изменить цвет текста в Telegram Bot?

Лучший ответ:
Никак

Худший ответ:
Сделайте текст в `таких штуках`
Вопрос: Имена массивов в си?

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

Главный источник информации о языке - стандарт языка. Не книжки Страуструпа, Майерса, не то, что показывает CLion, IntelliSense и их друзья, а стандарт языка. Не следует делать выводов о работе и устройстве языка из этих источников.

Далее, нет такоего термина "имя массива в C". Есть термин "переменная типа массив". Если вы написали:
int ints[2];
- это у вас массив на стеке. ints при этом имеет семантику указателя, который всегда и гарантированно указывает на 0 элемент в массиве. Понятно, что коль скоро это указатель на стек, записать туда другой указатель (ints=somePointer) нельзя - потому что нигде в программе, на самом деле, этот указатель не хранится - он вычисляется и подставляется компилятором на ходу. 

Из этого не следует(!), что переменная типа "массив" не имеет семантики указателя.

Худший ответ:
 Здравствуйте, чем является имя массива в C?
Ничем. "Имя массива" - это просто удобное название для тех, кто не одолел темы указателей. Те, кто эту тему одолел, таким вопросом уже не задаются, потому что статические массивы типа int[5] для них просто перестают существовать. "Имя массива" указывает на его первый элемент, но сделать с ним ничего нельзя. Точка. Не нравится - используйте динамические массивы.
При создании многомерного массива (двух мерного в частности)
"Двумерный (трех- , четырех-, n- мерный) массив" - это абстракция. В памяти данные идут последовательно, следовательно вся "мерность" массива - это автоматическое перемещение текущего указателя к некоей точке. Что опять нас возвращает к вопросу о статических и динамических массивах. 

Осваивайте указатели и все эти костыли отвалятся сами по себе.
Вопрос: Как превратить Си код или Masm в набор байт?

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

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

Лучший ответ:
key-value это обычно документ-ориентированный подход, т.е. когда вся необходимая информация хранится в виде объекта.
В вашем случае это будет
comment_1:{data:comment_data,tags:[tag_1,tag_2,tag_3]}
справочники храните как отдельные объекты
tag_1:tag_data
И не заводите прослойку из id, это лишнее,.. точнее старайтесь чтобы идентификатором была сама строка (если она уникальная) тогда вам не придется городить целый уровень абстракций.
Да, в документ-ориентированных базах сложнее контролировать целостность, самим надо заниматься индексами и прочее.. такова селяви

Худший ответ:
Если говорить о гугл-хроме, то почему бы не использовать WebSQL?
Вопрос: Есть ли удобный color picker (пипетка) для windows 10?

Лучший ответ:
Пользуюсь InstantEyedropper если нужна палитра то Instant Color Picker

Худший ответ:
есть отличная утилита - называется ColorGet. Не требует установки, скачайте и пользуйтесь. Определяет цвет на экране (в любом окне). Скачать можно здесь: https://get-color.ru/image/ в самом низу
Вопрос: Граница между front-end и back-end?

Лучший ответ:
Чтобы там не говорили, бэкэнд может оставаться полностью черным ящиком только для верстальщика, ито с оговорками.
Фроентэнд разработчик, даже с джун уровня, уже активно работает с получением отправкой данных, интерактивными интерфейсами и тп. Понимать как и почему некоторые штуки там работают нужно. Хорошо даже уметь быстро что-то простое сделать. Я не говорю становится фулстеком в полном смысле этого слова, НО. По хорошему: фронтендер мидл и выше уровня можно с натяжкой назвать фулстеком, просто с большим перекосом на фронт часть.
Просто даже серверлесс направление, заставляет в той или иной степени понимать процессы происходящие на той стороне.
Ну и в любом случае, в случае активной практики и развития, вы сами столкнётесь с тем, что иногда нужно даже лезть и писать какие-либо свои простые скрипты.
Отмечу отдельно, это не значит что нужно с головой падать, пытаться стать фулстеком. знать всё и тп. Нет, я имею ввиду что понимание работы бекенда, а значит и умение делать некоторые вещи, должны будут и прийдут при активной работе и роста вас как специалиста.
Это же касается тех же софт скилз  и менеджерских умений.

Худший ответ:
Если хочешь нормально шарить, бери и разбирайся в том, как устроено веб приложения/сайты полностью. Без разделения на фронтенды и бекенды.
Вопрос: Как шифровать заголовки/атрибуты файлов С++ в MFT?

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

Почему.

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

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

Лучший ответ:
Это значит только то что на первом собеседовании не отсеяли.
И хотят посмотреть осилишь или нет и как осилишь.

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

Компаний миллионы, каждая по-своему ставит свой процесс рекрутинга.
Вопрос: Как перенести строку на другой лист по условию?

Лучший ответ:
Если через Google Script:
let ss = SpreadsheetApp.getActiveSpreadsheet();
let zayvkaSheet = ss.getSheetByName('Заявки'); //или как нужно лист назвать
let doSheet = ss.getSheetByName('Выполнено');

function onEdit(e) {
  let cell = e.range;
  if (cell.getSheet().getSheetName() === zayvkaSheet.getSheetName()){ // проверка на то, что изменение происходит именно на листе со списком заявок
    if (cell.getValue() === 'Выполнено'){
      zayvkaSheet.getRange(cell.getRow(), 1, 1, zayvkaSheet.getLastColumn()).copyTo(doSheet.getRange(doSheet.getLastRow() + 1, 1)); //перенос на другой лист
      zayvkaSheet.deleteRow(cell.getRow()); // удаление строки из листа
    }
  }
}
Добавьте, сохраните, запустите один раз через редактор скриптов (он попросит разрешение на изменение текста в таблице) и все
так же добавьте проверку данных для выпадающих списков

Худший ответ:

Формулой (см. FILTER(); только это будет не перенос, а показ/вывод).
Дополнением для Гугл-таблиц (см. Reactor).
Сервисом интеграции (Zapier, Integromat, automate.io, etc.)
Google Apps Script.
Вопрос: Какой учебник выбрать для изучения Linux, если цель стать системный администратором?

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

Худший ответ:
Для начала сгодятся материалы по подготовке к сертификации RHCSA и RHCE, ориентированные на RHEL не ниже 7 версии. Linux from scratch тоже очень познавательно, даже если не делать, а просто читать.
Вопрос: Почему иконки FontAwesome съезжают?

Лучший ответ:
вообще у вас в вёрстке всё съехало. Разберитесь с содержимым тега <head>
Там какой-то пи..ец творится.


Худший ответ:
У вас какие-то проблемы в путями к файлам.
Вопрос: Как убрать часы с 00:00 до 8:00 из календаря Google?

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

Плагин называется Hide morning in Calendar, он просто открывает календарь уже проскроленным вниз, чтобы 9:00 было самой верхней строчкой. Но работает эта простейшая схема как надо!

Худший ответ:
Здравствуйте.
Тоже мучался.

Это решается виджетом Google Calendar Plus
Вопрос: Какие знания необходимы для устройства джуном на работу фронтенд разработчиком?

Лучший ответ:
Лучший совет, который можно дать в этом случае - нужно ходить на собеседования, чем больше тем лучше. Таким способом можно сформировать у себя в голове список технологий, которые хотят видеть от джуна потенциальные работодатели. 
Требования, которые мне кажутся сейчас более-менее общие для рынка:
Html5 (семантика, async и defer), css3 (flexbox/grid, sass/less), js (es 6+), rest (запросы, cors), browser API, network,  один фреймворк / библиотеку (нет, jQuery недостаточно :)): React, Angular, Vue - я бы рекомендовал React по совокупности причин.

Худший ответ:
Так же как и всем.
Вопрос: Вакансии C Junior developer?

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

Худший ответ:
вообще такое бывает в 2020 году?
Бывает летняя практика/internship, рекомендую начать с этого.
Вопрос: Как структурировать разработку веб-приложений?

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

docker-compose'ом это собрать выйдет в 10 раз быстрее, и на сервере нужно будет буквально только docker и поставить. Конечно, начать с простенького варианта (просто один компоуз на все окружения).

Не совсем ясно, используете ли вы одну dev ветку или по одной на фиче. Первый вариант в топку - иногда релиз фичи надо отстрочить, отменить либо наоборот зарелизить прямо сейчас. Если в это же время на ветке будет куча недоделок с других фич - так не выйдет.

Второй вариант лучше всего с ПРами, а не мерджами напрямую в главную, даже если из команды их никто не смотрит - просто потому что девелопер сможет посмотреть, че он там накалякал перед мерджом. Ну и CI/CD ерунда автоматически становится доступной и простой, если речь об любом популярном git хосте (github/gitlab/bitbucket).

Собирать все лучше всего на CI-ке, там часто описано все с екзамплами (в т.ч. для сборки фронта и бэка) и есть кнопочки, с помощью которых можно прямо оттуда сразу релизить на серваки.

Худший ответ:
1. схема нормальная, работаем сейчас по аналогичной
2. докер в любом случае поможет использовать одно окружение для все разработчиков, CI для проекта
Вопрос: Существует ли тенденция на неадекватные требования на позиции Automation QA?

Лучший ответ:
Это везде проблема где бизнес не имеет компетенции и ищет сотрудников. Это нормально

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

Лучший ответ:
В руби есть специальный класс Time
Просто вызываете time = Time.parse("2019-07-10 00:18:50 +0300")
Из переменной time уже можно вытащить что угодно, например, time.year

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

Лучший ответ:
1) Самое примитивное - пресеты цветов. И выбирать уже из массива пресетов.
2) Попробовать использовать HSL вместо RGB. Во первых "похожие" цвета в нем легче детектить, во вторых легче получить более разные цвета - просто параметр H генерить с каким то шагом, а не весь диапазон от 0 до 1.
А зачем вы рандомите альфу? )

Худший ответ:
Может сделать список, где-то ~30 цветов , и из него на рандом будет браться шарик
Вопрос: Как сделать живое фото на сайте?

Лучший ответ:
mousemove_event
пример https://codepen.io/andrejsharapov/pen/GPvmgG

Худший ответ:
Это называется "параллакс-эффект". Есть и библиотек множество, и на чистом CSS набомбить можно.
Вопрос: Как корректно удалять элементы из большого redux state?

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

Худший ответ:
а для создания дипклона удобно использовать JSON.parse(JSON.stringify(obj))