pavki/hr_qa_sbs_best_bad huggingface dataset:
Вопрос: Почему отзывы лестнее о шарпе, а популярнее все равно джава?

Лучший ответ: C# is the best of the best.
Кратко: исторически сложилось.
Длиннее: Однако, если учесть, что Microsoft преподносила .Net как универсальную виртуальную машину для любой платформы, но при том 10 лет блокировала чужие платформы, то, очевидно, .Net потерял весь потенциал популярности. Поэтому .Net захватил только сектор прикладного бизнеса.

Худший ответ: Неужели дело только в лицензии, которую себе не могут позволить корпорации?
Шарп под свободной же лицензией.
 И главный вопрос, рационально ли выбирать c# как язык для свитча и претензии на позицию Джуниора без опыта?
Why not?
Объективно - вакансий больше на джаве, но при этом лестных отзывов о шарпе я читал на том же тостере субъективно больше...
При этом разработчиков меньше. Вакансий в принципе хватает. В моём городе, например, на шарпе вроде даже больше вакансий, или примерно столько же, сколько ин а жаве.

Кратко, почему Java популярнее:
Java появилась раньше и сразу была кроссплатформенной, а шарп только под виндой.
Потом накопилась гора легаси, которую уже не особо хочется переписывать, ещё появился софт, который хорошо работает с Java - например kafka и hadoop. Ну и android, да.
Вопрос: Как качественно верстать?

Лучший ответ: чтобы больше приседать надо больше приседать
это универсальный принцип

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

Лучший ответ: Ножничками его чик и все.

Худший ответ: esp8266? 
откатитесь с 3.x ядра на предыдущее или перейдите на dma
Вопрос: Зачем использовать callback функцию(именно передавать ее в качестве аргумента),если можно просто вызвать функцию,которая видна например по замыканию?

Лучший ответ: Callback-функция может меняться от вызова к вызову основной функции.
Например, метод Array.prototype.sort(), в который передаётся функция, определяющая порядок сортировки. В зависимости от переданной callback-функции метод может сортировать как числа, так и строки или объекты, как в возрастающем или убывающем порядке, так и в более сложном, например по расстоянию от заданной точки.
Кстати, onload в вашем примере - это тоже callback-функция, только переданная как свойство, а не аргумент другой функции.

Худший ответ: Затем, что, навскидку:

На момент написания кода функции first, функции second может не существовать
Внутри first может быть асинхронная операция
first может передать коллбэк далее вниз по цепочке или еще в какую другую функцию
Вопрос: Почему не переназначает стиль?

Лучший ответ: Специфичность селекторов

Верхний селектор имеет больший вес. Там селектор класса + селектор псевдокласса.

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

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

Худший ответ: проще 2го провайдера в квартиру завести
Вопрос: Как привязать мышь defender к приемнику asus?

Лучший ответ: 99% что нет

Худший ответ: потеряла bluetooth-приемник.

Если Bluetooth, то без проблем. Но я уверен, что вы один из тех, кто всё беспроводное называет Блютусом.

Я еще не видел ни одной Bluetooth мышки, продающейся вместе с Bluetooth приемником, потому что подразумевается, что ваше устройство и так уже поддерживает Bluetooth.

У вас скорее всего обычные беспроводные мышки, которые никакого отношения не имеют к Bluetooth. И хоть они скорее всего и общаются на частоте 2.4 ГГц, это все равно даже не Wi-Fi, ибо это сделано лишь потому, что данные частоты не лицензируются на малых мощностях.

Короче выкидывайте обе мышки нафиг.
Вопрос: Как сделать чтобы скрипт window.screen.width срабатывал без перезагрузки страницы?

Лучший ответ: Слушай событие изменения размера окна и вызывай свой код. Ну или https://developer.mozilla.org/ru/docs/Web/API/Wind...

Худший ответ: addEventListener("resize", (event) => {
 ... код который нужно выполнить при изменении размеров окна браузера. 
});
Вопрос: Как можно сделать свою ОС на чистом ассемблере NASM и яп C (C++)?

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

Ну и собственно, вопрос слишком общий и нехороший. Если ты новичок в программировании, то задача явно не по плечу, следует сперва попробовать что-то попроще.
Если опытный, то почему не нашел в гугле первые топ ссылок?

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

Лучший ответ: Именно через URLSheme и делается. 
https://stackoverflow.com/questions/80650/how-do-i...

Худший ответ: Как вариант, я использовал приложение External Application Button. Поддерживаются нужные мне хром и едж. Пока устраивает.
Вопрос: Админка,как правильно написать тз?

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

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

Лучший ответ: Скриншот в студию.

Худший ответ: скриншот из BlueScreenView
Вопрос: Uncaught mysqli_sql_exception: Ошибка в запросе мускуля, что делать?

Лучший ответ: Скоро с этим MySQL с ума сойду...Да, с таким подходом лучше бросайте это грязное дело...

Ничего не понимаю!Ну так чтобы что-то понимать, нужно смотреть что происходит, знать что содержится в переменных и читать ошибки. Чтобы смотреть что происходит нужно использовать var_dump или ставить xdebug, чтобы знать что в переменных - нужно понимать какие переменные смотреть. В том числе знать почему возникают варнинги и все их исправить. 

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

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

Лучший ответ: Обратиться на сервис freelance.habr.com и заказать там.

Худший ответ: Ну для начала определи понятие "активность".
Время работы процесса приложения?
Время, пока окно приложения активно, т.е. находится на переднем плане и/или имеет фокус?
Время, пока пользователь манипулирует клавиатурой и мышью, пока окно приложения активно?
Вот исходя из этого уже и гугли либо работу с процессами, либо работу с окнами (наверняка потербуется winapi), либо установку хуков на клавиатуру/мышь. Язык программирования выбираешь сам, так как тема не тривиальная, и бороться одновременно с инструментарием и с языком будет сложно вдвойне.
Вопрос: Можно ли сравнивать через переопределенный GetHashCode() в C#?

Лучший ответ: GetHashCode - это не про сравнение, а про генерацию хэша для объекта.
Хэши могут пересекаться, тк количество хэшэй принципиально меньше количества уникальных объектов.
По тому, если тебе нужно ответить на вопрос "равен ли объект А объекту Б", то обязательно нужно проверить на Equals.
Чтобы при разных типах у тебя не было ложного совпадения - просто сравнивай ещё и тип в Equals (через GetType)

Если тебе нужно сравнить объекты по принципу больше/меньше/равно, то тут к тебе на помощь приходит интерфейс IComparable.

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

Лучший ответ: Это нарушение закона. Вы получили доступ к той информаци, на которую на что не имели право.
Тайна частной переписки и всё такое.

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

Худший ответ: Формально это либо вмешательство в работу сетей либо кража. Доказать все очень сложно но владелец может просто отвертеть вам голову. Что как то и было с не вмеру любопытным админом любящим посмотреть ящики секретарш
Вопрос: DoH, DoT, DoQ и DNSCrypt не нужны?

Лучший ответ: провайдер - нет.
а впн провайдер - да
и кстати в вопросе не указано -  идут ли Ваши запросы ДНС в ВПН или нет... потому что настроить можно по разному

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

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

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

Худший ответ: Ну советы просты, 1)постоянная практика программирования, каждый день 1-2 часа нужно именно писать код. Может быть неприятно, желание послушать лекцию, почитать книжку.
Вам нужно мозг перестроить, поэтому самое главное код, когда писать станет легко, тогда вы и лекции по слушаете и книжку быстро прочтете полностью понимая, что там написано и уже извлечете максимум пользы и поймёте если вы неправильно писали.
2) Не пытайтесь вызубрить api библиотек, фреймворков, просто быстро пробегайте глазами по всем методам в документации, когда понадобился какой то один и используйте только его. Api вы запомните, когда понадобится, а скорей всего он и не понадобится никогда.
3) Больше изучайте постоянных вещей, внутренние особенности языка, алгоритмы.
4)Не слушайте советы от ноунеймов из интернета. Я вообще embedder, который иногда пишет код на qt и распознавание образов на pytorch. У меня практически все знания постоянные, электроника за 20 лет работать по другому не стала, с++ обновляется раз в 3 года, фреймвор qt ещё реже, математика не изменилась и соответственно алгоритмы тоже.
А вы учитесь веб разработке, где каждый полгода начинается активное движение.
Вопрос: Как посмотреть на телефоне список подключившихся девайсов к раздаваемого интернету (к точке доступа телефона)?

Лучший ответ: В MIUI почти в любой версии "из коробки"  в настройках точки можно просмотреть подключенные устройства, их netbios имена и mac-адреса. Там же можно и заблокировать, если MAC не изменяется.

Если c Windows ПК - Wireless Network Watcher от Nirsoft, портативен, установки не требует.
Если программой под android - в playmarket множество сканеров сети
Если на linux - сканировать через nmap или arp (android с нормальным busybox и эмулятором терминала тоже)

Еще вариант для Android через эмулятор терминала / Linux:
for i in {1..254}; do ping -c 1 -W 1 192.168.43.$i | grep 'from'; done

Ну и совсем простое - поставить надежный пароль ;)

Худший ответ: команда arp -an или ip neigh в эмуляторе терминала (termux подойдёт) выведет IP и MAC подключённых устройств.
Вопрос: Работа с деньгами в php, лишние копейка в ту или иную сторону при округлении?

Лучший ответ: Я вам страшное скажу: в операциях с деньгами не всегда важна математическая точность.
Но очень важно, чтобы результат был в точности такой, как в бухгалтерии. 
А там далеко не всегда царит формальная математика, особенно когда числа, которые потом сводятся к одному результату, по-разному налогооблагаются.
Задача программиста здесь - не в том, чтобы компьютер считал правильно, а чтобы результат сошелся до копейки с 1С-кой, например.

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

Лучший ответ: А не проще ли дать компас и определить азимут выхода на дорогу?
Заблудишься - выход Азимут-135.
Что уж проще-то и компас надёжнее смартфона...
Ардуино не выход, батарейка сядет, а вдруг дождь? Проводок отвалился...

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

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

Этот вопрос уже обсуждался стопицот раз. И всем обсуждателям я предлагаю небольшой кейс (после которого обычно становится понятно, почему никак)
Я - легитимный юзер, оплативший все услуги. У Вас нет оснований не показывать мне курс. Я подключаюсь и начинаю просмотр... 
Где подвох, спросите Вы?
Правильно спросите. Потому что подключаюсь я с виртуалки, а параллельно ей, в абсолютно недостижимой для Вас области работает программа записи экрана. Которая в итоге сграбит все, что там игралось.
Как Вы собираетесь от этого защищаться? 

Детект виртуалки - и отвалятся все, кто их использует
Какие-то фантастические варианты типа поляризационных очков - и курс купят полторы калеки

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

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

Сетевую карту на компьютере
Провод и коннекторы.
Порт на свитче


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

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

Худший ответ: Вы купили сервер. 
Далее Вам надо зайти на него по ssh, установить необходимые пакеты \ программы и запустить.

Если Вы вообще не знаете как это делается - то либо гугл, либо фриланс
Вопрос: Наушники для смартфона отказываются работать на компьютере, диспетчер Realtek начинает спамить. Как исправить?

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

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

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

const isFormula_ = value => String(value).charAt(0) === '=';
const editValue_ = value => isFormula_(value) ? String(value).substring(1) : value;

function onEdit(e) {
  const sheet = e.range.getSheet();
  if (
    sheet.getName() === 'Пример' && 
    e.range.getRow() > 1 && 
    e.range.getColumn() === 8 && 
    isFormula_(e.value)) {
    e.range.setValue(editValue_(e.value));
  }
}

Пример в Таблице https://docs.google.com/spreadsheets/d/1qe4gHivzlO...

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

Лучший ответ: Я исхожу из того, что VPS под линуксом.
Потому что когда ты закрываешь соединение, SSH-демон завершает процесс оболочки, который он запустил для его обслуживания (скорее всего это bash), посылая ему сигнал HUP. А твой сервис запущен как дочерний процесс из этой оболочки, и потому тоже получает сигнал HUP. Так как он этот сигнал не обрабатывает, он завершается.

Если тебе нужно запустить процесс сервиса разово, и больше его не трогать, запускай его такой командой:
nohup /путь/до/сервиса --параметры --сервиса &
& позволит оболочке продолжить работу (запустит твою программу "в фоне"), а nohup "проглотит" сигнал HUP и тем самым не даст завершиться твоему сервису, когда ты отключишь сессию SSH. Но если сервис "упадёт", то запускать его придётся снова.

Если для тебя допустимо запускать сервис вручную, и тебе нужно взаимодействие с сервисом через консоль (ну скажем, прочитать что он туда пишет), используй программу screen (может потребоваться её установить). Что это за программа, погугли сам, но вкратце, она позволяет создать сессию оболочки, которая переживёт отключение. Однако опять же, если сервис упал, screen его обратно не поднимет.

Предыдущие варианты сойдут для отладки. А если на постоянку, то тебе нужно запускать сервис как демон, при старте VPS (ну мало ли хостер её перезагрузит), так что разбирайся с автозагрузкой. В зависимости от установленного на VPS дистрибутива это может быть скрипт init.d (смотри скрипты в каталоге /etc/init.d), модуль systemd или что-то ещё. Разбирайся, гугли, по этому материалов в сети полно.

Худший ответ: Доброго времени.
А ваш проект работает как демон, или простое приложение?
Если простое приложение, то оно будет закрываться вместе с сессией ssh.
Вопрос: Как отправить данные на сервер с Ajax на чистом JavaScript?

Лучший ответ: Отправку данных делаете так:
spoiler// Ждем когда элементы на странице прогрузятся:

document.addEventListener('DOMContentLoaded', function() {

	// Вешаем на кпопку обработчик клика, чтобы при каждом клике
	// сразу запускалась функц я dataSend отвечающая за отправку данных:
	
	document.querySelector('.button').addEventListener('click', dataSend);
	
});

// Функция для отправки данных на сервер:

async function dataSend() {

	// Получаем данные с нужных нам полей в переменные:
	
	var loginValue = document.querySelector('.login').value
	var emailValue = document.querySelector('.email').value
	var passwordValue = document.querySelector('.password').value
	var conf_passwordValue = document.querySelector('.conf_password').value

	// Создаем объект с данными:

	var data = {
		'login': loginValue,
		'email': emailValue,
		'password': passwordValue,
		'conf_password': conf_passwordValue
	}

	// Конвертируем объект в JSON:

	var json = JSON.stringify(data);

	// Отправялеям полученный JSON на сервер обычным POST-запросом:

	var response = await (await fetch('https://yousite.ru/handler.php', {
		'method': 'POST',
		'headers': {
			'Content-Type': 'application/json; charset=utf-8'
		},
		'body': json
	})).text();

	// Выводим ответ сервера в консоли:

	console.log('Ответ сервера:');
	console.log(response);

}
Замените только ссылку на php-обработчик на свой. Далее, принимать данные отправленные, как JSON надо по другому. Пример получения данных отправленных, как JSON:
spoiler<?php

// Включим показ ошибок:

ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);

// Считываем полученный JSON:

$json = file_get_contents('php://input');

// Раскодируем JSON в массив:

$array = json_decode($json, true);

// Выведем массив, чтобы посмотиеть, что в нем:

header('Content-Type: text/plain; charset=UTF-8'); // Указыавем браузеру, что ответ будет обычным текстом
echo "Из браузера получены следующие данные:\n"; // Выведем текст-предупреждение
print_r($array); // Выведем все, что находится в массиве

Худший ответ: Поместите объявление xhr вовнутрь return new Promise.
Вопрос: Фронт и бэк на локалхосте. Как обмениваться данными?

Лучший ответ: Добавьте заголовки для cors
res.setHeader("Access-Control-Allow-Origin", "*")
	res.setHeader("Access-Control-Allow-Credentials", "true");
	res.setHeader("Access-Control-Allow-Headers", "*");
	res.setHeader("Access-Control-Expose-Headers", "*");
	res.setHeader("Access-Control-Request-Headers", "*");
	res.setHeader( "Access-Control-Allow-Methods", "PUT, POST, GET, DELETE, PATCH, OPTIONS" );
https://developer.mozilla.org/ru/docs/Web/HTTP/CORS

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

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

class Test {
    protected $where;
    protected $params;

    public function getAll()
    {
        $result=$this->db->prepare("SELECT * FROM table WHERE 1=1 ".$this->where);
        $result->execute($this->params);
        return $result->fetchAll(PDO::FETCH_ASSOC);
    }

    public function byDate($start,$end=false)
    {
        if ($end) {
            $this->where .= " AND data BETWEEN :start AND :end";
            $this->params['end'] = $end;
        } else {
            $this->where .= " date >= :start";
        }
        $this->params['start'] = $start;
        return $this;
    }

    public function byCol($col)
    {
        $this->where .= " AND col = :col";
        $this->params['col'] = $col;
        return $this;
    }
}

$sql = new Test;
$data = $sql->byCol($col)->byDate($start)->getAll();

по-хорошему тут еще должны быть отдельные переменные для самого запроса, для order by, limit и так далее
Но начать можно с такого

Худший ответ: Если это не тестовое задание, то проще всего использовать какой-нибудь готовый query builder. А так - использовать prepared statements, динамически создавая плейсхолдеры, а потом вызывая с нужными значениями. Т.е. типа такого$this->where .= "data BETWEEN :start AND ".($end ? ":end": "NOW()");
Вопрос: Есть ли смысл выключать 2,4Ггц на двухдиапазонном Wi-Fi роутере?

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

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

Лучший ответ: Не нужно ничего сокращать. Код вполне краток и понятен. Дальнейшие сокращения лишь ухудшат читаемость.
Но если хочется поговнокодить можно взять empty.

Худший ответ: Не нужно ничего сокращать. Код вполне краток и понятен. Дальнейшие сокращения лишь ухудшат читаемость.
Но если хочется поговнокодить можно взять empty.