Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Какая необходима база, для начала обучение java?

Лучший ответ:
Приступить к изучению Java можно с полного нуля. Но вот "изучение того java, который отвечает за web-приложения" требует хорошего знания  core java, как минимум.

Худший ответ:
Добрый вечер! Прежде чем перейду к основной суть вопроса, небольшое, но важное отступление. Прошу вас прочитать весь вопрос. Для меня это очень важно.
Добрый вечер. Прежде чем перейти к основной сути ответа, небольшое, но важное отступление, прошу дочитать мой ответ до конца. Это для Вас очень важно.Я начинающий frontend-щик. Мне необходимо изучение того java, который отвечает за web-приложения. Вопрос такой задал потому, что мой друг, который является сис-админом, услышав, что я ищу курсы для изучения java, начал меня отговаривать, сказав, что не зная Алфавита(а именно Pascal и C++ минимум), я не должен приступать к изучению java. Что это будет сложно без хороших знаний базы.
Для того, чтобы вообще войти в ИТ профессию, до того как изучить фронтенд, до того как изучить java или что-либо. Но можно и парралельно. Вам нужно научиться искать информацию в инете. Готовые ответы. Уметь их анализировать. Уметь их воспринимать, а не надеяться на слова друга, который даже не является программистом, а сисадмином.
У вас огромное количество вопросов, которые спрашивают элементарные вещи. Готовые ответы уже существуют. Такое впечатление, что вы даже не пытаетесь их искать.Я с ним отчасти, конечно согласен! Java С-подобный язык! И не понимание процессов, которые происходят внутри системы, может затруднить работу над создание в будущем web-приложении, да и вообще работы в компании.
Джава это конечно не javascript, но это совсем не С-подобный язык. Это отдельный язык. У него есть своя платформа - java, ее нужно изучать, когда изучаете java. Понимание процессов которые происходят в системе - происходят в системе, а не в паскале или Си, поэтому их нужно понимать и изучать, но это можно делать без Си и без ПаскаляВопрос мой заключается в том, возможно ли приступить к изучению данного языка, не зная низкоуровневых языков?
Да. С какими именно сложностями я могу столкнуться, если пренебрегу ?
Судя по вашей сотне простейших вопросов, на которые в интернете уже есть ответы, сложности у вас будут все время, пока вы не будете просто больше искать, читать и естественно пробовать на практике. Базовый широкой кругозор в ИТ, у которого есть термин PC Essentials - дает интуицию в понимании как оно должно быть. Но это не относится непосредственно к знанию языков низкого уровня. Это относится на широте вашего понимания различных вещей в ИТ, типа что такое регистр процессора, или как работает https, и другое. На мнение авторов книг и курсов по java, я полностью довериться не могу, поскольку они заинтересованные лица) Они все пишут, что можно не иметь знании. Поэтому мне очень важно ваше мнение! Прошу подсказать! Может у вас или у вашего друга и т.д. был такой опыт... 
Ладно еще курсы. Но автора книг то тут причем?
Не нужно искать лучший курс, лучшую книгу. Чтобы стать специалистом изучать нужно в любом случае гораздо больше, чем просто курс и книгу. Почитайте 2-3-5-10 книг, и будете сами уже понимать что читать а что пропустить.
Вопрос: Как получить имя человека через vkapi?

Лучший ответ:
Попробуйте продебажить, чтобы узнать полный путь до имени.
Я например делаю так: ["response"][0]["first_name"]

Я надеюсь вы что-то возьмете для себя из этого кода:
info = requests.get('https://api.vk.com/method/users.get', params={
        'v': v,
        'name_case': 'Nom',
        'access_token': token,
        'fields': 'photo_max_orig,counters'
    }).json()
if "error" in info:
    print("[red]Неправильный токен[/red]")
    sys.exit()

first_name = info["response"][0]["first_name"]
last_name = info["response"][0]["last_name"]

Худший ответ:
Используешь метод users.get с нужным тебе id. 
Без дополнительного запроса к API никак.
Вопрос: Как узнать, что асинхронный метод выполнил свою работу?

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

public async Task DownloadVideo1080PAsync(string path, ProgressBar progressBar, string link)
{
    await ytClient.Videos.Streams.DownloadAsync(audioInfo, Path.Combine(newLink, $"audio.wav"));
    await ytClient.Videos.Streams.DownloadAsync(videoInfo, Path.Combine(newLink, $"video.mp4"), progressHandler);
}

public Task MergeAudioVideoAsync(string link)
{
    return ffmpeg.ExecuteAsync($@"-i video.mp4  -i audio.wav -c:v copy -c:a aac newVideo.mp4");
}

....
  await DownloadVideo1080PAsync(....);
  await MergeAudioVideoAsync(...);
....

Худший ответ:
вопрос довольно интересный. вы можете загружать синхронно, но придется дольше ждать
загружать асинхронно очень логично. но тогда вам надо изучать доки на api
вы часом не вот это используете?
https://developers.google.com/api-client-library/d...

если да, то логика примерно такая
https://developers.google.com/api-client-library/d...
по IDownloadProgress.Status вы узнаете когда будет 100%, но надо читать доки, возможно есть калбэк сообщающий конкретно о завершении

если другой api, все равно - у вас в коде, для видеопотока, указан progressHandler, сделайте такой же и для аудио. когда оба отловят 100%, тогда время и объединять..
.. еще точнее можно начинать. хотя может оказаться что какие то тайм ауты потребуются, если дисковая система не очень быстрая + загрузка в tmp, а потом копирование в целевую папку. об этом тоже надо искать инфу в доках на api. но когда отловите окончания загрузок, тайм ауты при необходимости, можно и экспериментально подбирать
.. или там изучить подписку на файловые события https://docs.microsoft.com/ru-ru/dotnet/api/system...
Вопрос: Для чего нужен адрес шлюза?

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

Не зная где выход - вы не выйдете за пределы локальной сети. Только и всего.

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

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

А единственное назначение шлюзаЕдинственное его назначение - служить точкой выхода из локальной сети и точкой входа в локальную сеть.
Это его единственное назначение.

Худший ответ:
В сети может быть несколько шлюзов.
И да, шлюз может не только выплевывать что-то там, работать по намного более сложным правилам. Фильтровать, шейпить, проверять аутентификацию, и прочая.
И да, сеть может быть разделена на сегменты.
Вопрос: Каков процент пользы для seo переход с cms на php-фреймворк (laravel)?

Лучший ответ:
Каков процент пользы для seo переход с cms на php-фреймворк (laravel)?
никакойКакие доводы, помимо того, что это затратно и, что seo никак не связано c тем, на каком движке или фрейме сделано, можно привести в дополнение?
Какие еще доводы-то нужны? Сео никак не связано с тем что происходит внутри вот и всё. Если хочется поднимать позиции надо изменять то что влияет на это самое сео - контент.

Худший ответ:
Смотри скорость загрузки страниц там и там. Где страницы грузятся быстрее, там польза.
Вопрос: Нужна самая удобная/быстрая среда для эксперементирования с js функциями?

Лучший ответ:
Ну быстрее всего в девтулзах браузера.
Для VSCode можно еще плагин Code Runner поставить.

Худший ответ:
Online:
The best: jsfiddle
2: codepen
3: playcode
Offline:
The best: Sublime Text 3
2: VS Code
3: Atom ( чувствителен к плагинам )
Вопрос: На сколько сейчас frontend про верстку?

Лучший ответ:
но сейчас фронтенд != верстальщик
Фронтендер без умения верстать - это как автогонщик, не умеющий крутить руль.

Худший ответ:
Html - это структура, css - стили, js - действия, без нормальных знаний html и css ты не сможешь писать скрипты и реализовать действия для клиента в полной мере, отсюда вытекает, что без хороших знаний html,css фронтендер будет плохой
Вопрос: Как правильно разметить диск для Windows 10 и Linux (Ubuntu, Kubuntu, Manjaro KDE) в GPT?

Лучший ответ:
Ну да, груб записать в /boot/efi, нечего тут.
Своп Убунта уже умеет держать в файле, раздел не требуется.
Так что вам нужен один-единственный раздел под корень.

Худший ответ:
Правильный ли у меня ход мыслей? не совсем. по тому что все не так как на самом деле (с) без понятия кто linux swap по желанию (если хочу гибернацию, то размер по количеству RAM) жутко медленный, по тому что очень тщательный. хотя SSD вас спасет )).. на практике все равно проще не пользовать гибернацию в линукс. мало того, маны по ее активации в ку/ю/бунте, лично меня отпугнули (а вот в fedora, при наличии своп раздела не меньше рама - она доступна из коробки. но я сейчас пилю конфигурацию на федоре в железяке с хардом, но 16 гигами. там гибернация ужасает своей длительностью)Потом при установке Kubuntu мне нужно дополнительно создать:
- boot/efi на 500 МБ (и указать этот раздел для загрузчика GRUB) категорически свой загрузочный раздел! (тронете виндовый - потеряете винду upd ну не то что совсем, но квалификация потребуется на порядок большая, чем уровень вашего вопроса ))) boot/efi строго FAT32. выделите гиг, хватит за уши.
после установки винды, доверьтесь инсталятору *бунты, груб2 в бутсектор, ефи раздел ручками (фат32), остальное под рут. но сразу готовьте маны, по восстановлению загрузчиков и винды, и груба ... в идеале на внешних носителях ))).. а то когда вы все заготовили, а загрузка ой, бегать читать к соседу, будет трудно совместимо с процессом починки )))
есть еще много вариантов. можно и с виндового загрузчика цеплять линукс. upd но смысла рассказывать нет EasyBCD самый простой, но не смотря на GUI и виндовость, там все равно надо уже знать что делаете )). дерзайте, накапливайте опыт, и чаще делайте бекапы всего важного )))
Вопрос: Не будет ли проблем, если я сделаю редизайн и вёрстку какого-то сайта, а владелец сайта увидит мой редизайн и вёрстку?

Лучший ответ:
98% - он будет только рад упоминанию бренда,
2% - он дурачок, попросит удалить, Вы удалите и забудете.

Насчет прав на ОИС. Авторское право воще никогда не сможете затронуть, а за права на интеллектуальную собственность прилетит когда начнете вести коммерческую деятельность под маркой бренда, то есть никогда. Так что успехов в редизайне Вконтакте! B-)

Худший ответ:
Не будет т.к. всякие Stylish, ReSTYLE и т.д. не смогли бы существовать.
Вопрос: Почему может падать скорость на прием в Debian?

Лучший ответ:
Прием какого типа? пользователь что то скачивает, или приложение типа FTP  на которое что то сливается ?
Как определяете, что скорость упала ?

Худший ответ:
Господа, прошу прощения.
Причина оказалась банальна и постыдна: Один из юзеров сервера был не зарезан по полосе, и просто кушал очень много.
Вопрос: Как открыть 22 порт на Убунту?

Лучший ответ:
Исходя из комментов - у вас не порт закрыт, а сервер ssh не стартанул.

Жесткая переустановка openssh-server форсируя перезапись конфигов на дефолтные

sudo mv /etc/ssh /etc/ssh_backup
sudo apt install --reinstall -o Dpkg::Options::="--force-confask,confnew,confmiss" openssh-server
sudo service sshd restart

Либо смотреть чего sshd не стартует и фиксить

Худший ответ:
А так:
sudo ufw allow in 22/tcp
?
Вопрос: Что такая за сетка и с чем ее есть?

Лучший ответ:
Верстка по сетке пришла в web из полиграфического дизайна. Посмотрите на газеты - все уважающие себя издания сверстаны с использованием сетки. Логотипы, изображения, текст располагается в колонках. Главное в сетке - понятие колонки (редко используются строки), их может быть сколько захотите, самые популярные - 12 и 24 колонки. Потому что эти числа имеют наибольшее кол-во делителей. Зачем это нужно? Одна колонка - это расчетная единица. Посмотрите макет (12-ти колоночный) - логотип занимает 2 колонки, текст слайдера - 4 колонки, изображение слайдера - 6 колонок, каждый блок в секции услуг - 4 колонки. И так далее...То есть 12 легко делится на 1, 2, 3, 4, 6, 12. Разделяет колонки т.н. gutter (англ. - желоб).
Такой подход позволяет осуществлять компоновку блоков на странице, удобную для визуального восприятия, а также перекомпоновку блоков, если делается адаптивная верстка. То есть, общее число колонок сохраняется, только занимать каждый блок уже может другое кол-во колонок, или вовсе исчезнуть на каком-то экране.
Едят это в основном с использованием MediaQueries (Медиа-запросов или медиа-выражений), являющих частью спецификации Css, вида:
 `@media (min-width: 768px) { /* Ваш блок Css-кода */ }, где
 `@media - @-правило,
(min-width: 768px) - медиа-функция, которая определяет условие (условия, если их несколько), при выполнении которых применятся описанные в теле медиа-выражения правила.

Худший ответ:
Если погуглить на эту тему, то:Система сетки используется для вывода элементов на одни и те же вертикальные линии. Это дает вашему макету лучший внешний вид, потому что все текст/заголовки/изображения выравниваются по горизонтали одинаково.
При использовании сетки получается, во-первых, упорядочить элементы в "систему", что в умелых руках дает "композицию"/порядок, а, в-вторых, такой макет потом будет проще верстать с использованием фреймворков.
Начните изучение с одной из сеток-первооткрывателей по запросу "960 px".
Вот тут тоже пример пояснения на эту тему.Как я понял, принцип построения сетки, обусловлен "добавлением" части экрана в зависимости от его размера. все элементы макета находящиеся за пределами контейнера обрезаются
– это, кстати, не совсем верно. В "нормальной" сетке ничего не обрезается. Скорее меняется по заранее прогнозированным сценариям. Грубо говоря (очень грубо) у вас есть несколько макетов под маленькие, большие, средние размеры окна. И сетка позволяет вам в этом всём соблюдать ритм и порядок.
Вопрос: Разработка мобильного приложения еще может принести доход разработчику с идеей?

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

Худший ответ:
Составьте план.
Очень подробный план. 
Опишите сайт, приложение, как будете продвигать его.
Отдайте ваши тексты грамотным текст билдерам
Запустите MVP. 
Постарайтесь найти грамотного продавана.
После первых финансовых результатов ищите инвесторов. 
Вполне реально, если готовы работать 5-6 месяцев только на своих ресурсах.
Вопрос: Как зайти на закрытый телеграм канал?

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

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

Лучший ответ:
Вот это вот упс отдает опенсервер, а это значит, что на 80ом порту у тебя ничего нет, вот такой вот я пророк

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

Лучший ответ:
бле....  не проще было микротик купить?)

Худший ответ:
Мосье просто знают толк в особых извращениях, раз используют это поделие под названием WRT.
Вопрос: Существует ли OpenSource антивирус на ассембере?

Лучший ответ:
использовать на домашней машине и изучать готовый код. Не доверяю корпоративным антивирусам, везде трекеры 
А зачм вам на ассемблере, тогда?
Изучать сложный продукт на ассемблере крайне проблематично, это километры непонятного текста.
Возьмите любой опенсорс антивирус на С/C++, например www.clamav.net/downloads

Худший ответ:
использовать на домашней машине и изучать готовый код. Не доверяю корпоративным антивирусам, везде трекеры 
А зачм вам на ассемблере, тогда?
Изучать сложный продукт на ассемблере крайне проблематично, это километры непонятного текста.
Возьмите любой опенсорс антивирус на С/C++, например www.clamav.net/downloads
Вопрос: Как правильно работать с props во Vue.js?

Лучший ответ:
Вот официальная схема. Родители детям через props, назад через events.
1) Пример объявления child в template родителя<child :somedata="data1" @bestEventEver="someMethod"/>
-передаешь данные из переменной родителя data1 чилду в пропс somedata.
-вешаешь метод родителя someMethod для обработки кастомного ивента 'bestEventEver', приходящего из чилда
2) В child вызываешь this.$emit('bestEventEver', 'params pam pams')
Есть сокращения этого для простых случаев через :v-model и .sync, читай официальный гайдНо если, например, мне нужно, чтобы текст при изменении динамически менялся не только в textarea, но и в другом, изначально не связанном с textarea компоненте
Если нужно общение не уровня родитель-ребенок, а все со всеми, вот варианты

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

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

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

Худший ответ:
ток слабый от батареек.
Поэтому достаточный нагрев продолжительное время может обеспечить только большая батарея, которую на себе не утащишь. Например автомобильный аккумулятор Теслы
Вопрос: Где взять таблицу/базу с максимальным количеством вендоров ПО и железа? А реально найти еще список продукции с привязкой по вендору?

Лучший ответ:
спарсить с того драйверного сайта, который хочешь скосплеить

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

Лучший ответ:
Если у элемента нет уникального идентификатора, то надо подобрать относительный идентификатор (составной), нп. div1 > div2 > div3[0] ( образно, в xpath оно иначе записывается)

Худший ответ:
Нужно кликнуть кнопку "Далее" в форме регистрации аккаунта хухл. 
Для кнопок на парсинге обычно очень хорошо работает конструкция:
//*[contains(text(),'Далее')]
Вопрос: Как установить программу «На один раз», чтобы можно было полностью удалить?

Лучший ответ:
sandbox программу ищите

Худший ответ:
Если главное в вашем вопросе - чтобы можно было полностью удалить, то да, можно. Для этого надо до установки этих программ установить себе приличный продвинутый деинсталлятор, умеющий подчищать всё, что не сумел удалить (или не захотел удалять)  штатный виндовский.
Лично я использую Your Uninstaller 2008, но он платный (хотя нетрудно найти спираченную версию). Ежели хочется бесплатный, то рекомендую geekuninstaller, но в нём меньше всяких полезных опций, чем в Your Uninstaller.
Вопрос: Какой контроллер взять для передачи изображения с камеры по Wi-Fi?

Лучший ответ:
Ох, это примерно то, чем я занимаюсь уже почти лет 5 на своей работе (делаем проводные и беспроводные эндоскопы)
Чтоб передать картинку по WIFI её надо закодировать, ни один МК это не потянет, но есть камеры у которых есть режим, когда они кодируют в JPEG сами (не h264 и уж тем более не h265), но фпс будет проседать т.к. камера не может кодировать много и быстро, вы получите 720р на около 10фпс
Если захотелось всеж поделать что-то самому, то самое простое взять ESP32 и стандартную либу под её OV2640
Дальше по сложности идет ESP32 без ардуино IDE, разобраться как писать под голый ESP32 и написать свой драйвер для камеры, которую ты выбрал у sony/onsemi/ov, запросил у производителя даташиты и, скорей всего, подписал NDA
Ещё более сложно взять какой-нибудь STM32 с его аппаратным DCMI и прикрутить внешний WI-FI (хотя кому как, по мне этот вариант легче)
Ещё один уровень это найти проц (предлагаю ti или nxp, больше особо открытых нет), и на нем повторить все, что предугадал выше, найти проц надо уже хотя бы с h246
Ну, или взять плис, тут без комментариев
Самый простой вариант - возьмите малину

Худший ответ:
Ох, это примерно то, чем я занимаюсь уже почти лет 5 на своей работе (делаем проводные и беспроводные эндоскопы)
Чтоб передать картинку по WIFI её надо закодировать, ни один МК это не потянет, но есть камеры у которых есть режим, когда они кодируют в JPEG сами (не h264 и уж тем более не h265), но фпс будет проседать т.к. камера не может кодировать много и быстро, вы получите 720р на около 10фпс
Если захотелось всеж поделать что-то самому, то самое простое взять ESP32 и стандартную либу под её OV2640
Дальше по сложности идет ESP32 без ардуино IDE, разобраться как писать под голый ESP32 и написать свой драйвер для камеры, которую ты выбрал у sony/onsemi/ov, запросил у производителя даташиты и, скорей всего, подписал NDA
Ещё более сложно взять какой-нибудь STM32 с его аппаратным DCMI и прикрутить внешний WI-FI (хотя кому как, по мне этот вариант легче)
Ещё один уровень это найти проц (предлагаю ti или nxp, больше особо открытых нет), и на нем повторить все, что предугадал выше, найти проц надо уже хотя бы с h246
Ну, или взять плис, тут без комментариев
Самый простой вариант - возьмите малину
Вопрос: Почему компьютер не пингуется?

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

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

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

Блоки страницы обычно занимают всю ширину экрана и фон у них тянется на всю ширину. А контент ограничен по центру тем самым контейнером.

Если блок не тянется на всю ширину, то уже он находится в контейнере.

<div class='container'>
        <div class='header'>
        
      </div>
      </div>

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

Худший ответ:
Именно это явный кейс из бутстрапа. Притом плохой по своей сути: тег header существует не только для создания шапки, поэтому для определения стилей ему в обязательном порядке необходимо задавать класс. Еще лучше двинуться дальше с методологии типа БЭМ, которые расширяют указанную логику ответа.

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

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

Лучший ответ:
 Как изучить быстро php? никак

Худший ответ:
php.net/manual/ru/ и вперед