Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Как испраить ошибку: SQLSTATE: Duplicate alias: имя таблицы указано больше одного раза?

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

items() ? чего? вы хотите получить CartProduct. назовите cartProducts()

очень редко, но бывает, когда CartProduct можно получить двумя способами. Тогда cartProductsByModel1(), cartProductsByModel2()

исключение - абстрактные паттерны, деревья. там можно назвать parent/children/treeParent/treeChild

<?php

Class Cart {
    // ...

    // вот здесь написано, что CartProduct может быть одновременно в двух и более корзинах. не могу представить себе логику, где участник заказывает на сайте товар, а потом этот же товар (который ты заморозил только что) кто-то еще заказывает
    public function items(): BelongsToMany
    {
        return $this->belongsToMany(CartProduct::class, 'cart_products');
        
        // Cart.hasMany(CartProduct) + CartProduct.belongsTo(Cart) + CartProduct.belongsTo(Product)
        // и второе
        // https://github.com/illuminate/database/blob/master/Eloquent/Concerns/HasRelationships.php#L477
        // первым параметром "тип", вторым - "через что". Вы указываете, что "связь много ко многим" должна вернуть "связь много ко многим"
        // при связи Много-Ко-Многим надо Cart.belongsToMany(Product::class, 'cart_products')
    }
}

<?php

class CartProduct {
    // ...

    // здесь написано, что CartProduct старше чем Product. Это выразится в том, что вы сможете "привязать" CartProduct только из самого Product, причем один раз. Это дважды неверно.
    public function product(): HasOne
    {
        return $this->hasOne(ProductVariant::class, 'id');

        // Во первых каждый продукт с его количеством может быть куплен много раз, а вариант всего лишь показывает на его подвид
        // Во вторых модель CartProduct создается позже чем Product, а значит писать $product.addChild($cartProduct) это снова дичь
        // Product.hasMany(ProductVariant::class) + CartProduct.belongsTo(ProductVariant::class) + $cartProduct.associate($productVariant);
    }

    // то же самое. CartProduct старше чем Cart, хотя он в ней лежит. BelongsTo задает старшинство и позволяет добавлять родителя в потомок, а hasOne указывает связь, которая нужна только для select, но не годится для insert
    // Потому что hasOne() - это возможность добавить потомка, причем в Eloquent нету метода addChild() его ещё и самому писать надо типа CartProduct.cart().insert($array) и это тут же нарушает идею отложенной записи, т.к. выполняет запрос немедленно и требует транзакции прямо в модели, тогда как транзакция относится к задаче, а не к модели
    public function cart(): HasOne
    {
        return $this->hasOne(Cart::class);
    }
}

Худший ответ:
Это лажа
public function items(): BelongsToMany
    {
        return $this->belongsToMany(CartProduct::class, 'cart_products');
    }
Вы классу CartProduct прописываете отношение к самому CartProduct

Наверное должно быть так?
public function items(): BelongsToMany
    {
        return $this->belongsToMany(ProductVariant::class, 'cart_products');
    }
Вопрос: Как сделать анимацию «плавания» облаков?

Лучший ответ:
Вот мой пример, не знаю такой ли результат вам надо(Прокрутите вниз)snippet

Худший ответ:
Достаточно прописать float(плавающий) в css
Вопрос: Есть ли смысл в spa laravel все делать через JS?

Лучший ответ:
Есть ли смысл в spa laravel,все делать через JS?

Имеет смысл делать то что имеет смысл для конкретного проекта, а не стека

Худший ответ:
Хотите делать spa - делайте. блэйд будет не нужен.
spa может использовать аутентификацию через токены, обычно так и делается. Тут уж никакую "авторизацию через php" не прикрутишь, ибо нет никакой сессии, состояние не хранится на сервере.
spa также может использовать аутентификацию на сессиях. Немного не "как у всех", но имеет место быть. здесь можете прикрутить отдельные страницы/шаблоны логина, если очень хочется.
Вопрос: Почему возникает ошибка SyntaxError?

Лучший ответ:
У вас elif не относится ни к какому условному выражению.

Худший ответ:
ответ на вопрос экранирование символов:
https://foxford.ru/wiki/informatika/ekranirovannye...
Вопрос: Как правильно исключить пользователя из запроса?

Лучший ответ:
Попробуйте так:
select e.mark, course, g.name, s.name, lastname, surname, p.name, f.name from students s
left join groupa g on s.group_id = g.id
inner join exam_mark e on s.id = e.student_id
inner join peciality p on g.peciality_id = p.id
inner join facult f on p.facult_id = f.id
where e.mark >= 4
    and not exists (select 1 
                               from exam_mark e1
                             where e1.student_id = s.id
                                 and e1.mark        <> 2)

Худший ответ:
-- Только значимые столбцы
CREATE TABLE exam_mark (ID INT IDENTITY, student_id INT, mark INT)
INSERT exam_mark (student_id, mark ) 
  VALUES (4, 5), (4, 4), (4, 4), (4, 5), (4, 2),
         (5, 5), (5, 5), (5, 4), (5, 3), (5, 5),
         (6, 2), (6, 2), (6, 3), (6, 2), (6, 2),
         (7, 3), (7, 3), (7, 3), (7, 3), (7, 3)

SELECT gd.* 
  FROM exam_mark AS gd
    LEFT JOIN exam_mark AS bd ON bd.student_id = gd.student_id AND bd.mark = 2
     -- у кого есть 4, 5               но нет 2
  WHERE (gd.mark IN (4, 5)) AND (bd.student_id IS NULL)
Вопрос: Скачет скорость, как исправить?

Лучший ответ:
Не вывозит:
- винт
- роутер
- сиды/пиры

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

Лучший ответ:
Последовательность действий:
1) Перед кликом проверять наличие iframe виджета
2) Если есть - переключиться на iframe с виджетом
3) Нажать в нем кнопку закрытия
4) Восстановить контекст iframe
5) Продолжить работу

Переключиться на iframe:

# Xpath надо написать самому
iframe = driver.find_element_by_xpath("//iframe")
driver.switch_to.frame(iframe)

Восстановить контекст iframe

driver.switch_to.default_content()

Либо можно воспользоваться requests

import requests

params = {
    'name': 'Иванов Иван Иванович',
    'numberOrInn': '1111111111',
}

response = requests.get('https://www.rgs.ru/api/agents/checkAgent', params=params)

# {"Status":"NotFound","ErrorCorrelationIds":[],"ErrorCode":null}
print(response.text)

Худший ответ:
Без входных данных непонятно, но я так понимаю открывается iframe на весь экран. Перед тем, как взаимодействовать с ним, нужно переключится на него, т.к. у iframe свой HTML.

# сначала находим его
iframe = driver.find_element_by_class_name('flocktory-widget')
# потом переключаемся на него
driver.switch_to.frame(iframe)
# ищем кнопку выключения, точно так же через driver.find_element_*, кликаем на нее.
# после того как закрыли iframe, выходим в обычное окно
driver.switch_to.default_content()

Либо удаляем через JS:
driver.execute_script('document.getElementsByClassName("flocktory-widget")[0].remove()')
Вопрос: Как заархивировать папку в zip и сразу переместить в другую папку одной командой?

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

zip -r /MY/ANOTHER/DIRECTORY/danilkonev.zip /home/admin/web/danil-konev/

Худший ответ:
Разделите команды точкой с запятой.

cmd1; cmd2; cmd3
Вопрос: Где работать онлайн ИБ?

Лучший ответ:
ИБ онлайн? Примерно нигде.

Худший ответ:
да везде , что вам мало вакансий что ли или гугл запрет или ?
Вопрос: Вывод товаров на сайте с сортировкой по удаленности от адреса покупателя?

Лучший ответ:
Вариант 1:
Считаем данные с помощью Distance Matrix, тупо скармливая ему два адреса: https://yandex.com/dev/routing/distance_matrix/

Вариант 2:
1. Вбиваем в систему помимо адреса склада, его широту и долготу
2. Узнаём широту и долготу пользователя при вводе адреса (yandex autocomplete это умеет, хотя для подсказок адреса в РФ я бы выбрал Dadata, потому что он намного лучше распознаёт пользовательский ввод. Ну а широту с долготой и там и там получить можно)
3. Считаем расстояние, зная широту и долготу двух объектов

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

Худший ответ:
хранишь широту/долготу городов, сортируешь по расстоянию между городом склада и городом клиента
Вопрос: Как исправить ошибку [Z3001] connection to database 'zabbix' failed: [2002] Can't connect to MySQL server on '139.162.155.83' (13)?

Лучший ответ:
в файле /etc/zabbix/zabbix_server.conf поменяйте адрес mysql сервера с 139.162.155.83 на localhost

Худший ответ:
Прпвильный адрес sql пропиши
Вопрос: Нужна ли лицензия для приватного репозитория?

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

Худший ответ:
Нет, не нужна.
Вопрос: Как правильно обслуживать базу 1с на Pоstgresql?

Лучший ответ:
Ноги, крылья - главное хвост! Бэкап где?

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

Лучший ответ:
usb over ip
usb over ethernet

И программы и железки для проброса устройств по сети

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

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

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

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

$args = [
	'post_type' => ['post','service'],
	'post__in' => [5,12,2,14,7],
	'orderby' => 'post__in',
];

$loop = new WP_Query( $args );

При выводе проверяете тип записи и подключаете нужный шаблон

if ( get_post_type() === 'service' ) {
	get_template_part( 'templates/archive/archive-service' );
} else {
	get_template_part( 'templates/archive/archive-common' );
}

Если типов записей много, то можно сделать так

$post_type = get_post_type();

if ( file_exists( get_theme_file_path( 'templates/archive/archive-' . $post_type . '.php' ) ) ) {
	get_template_part( 'templates/archive/archive-' . $post_type );
} else {
	get_template_part( 'templates/archive/archive-common' );
}

Худший ответ:
Получил такой ответ от Kama, кому интересно:

$tax_name_1 = 'tax_name_1';
$tax_name_2 = 'tax_name_2';
$term_name_1 = 'term_name';
$posts_1 = get_posts( [ параметры_такс_1 ] );
$posts_2 = get_posts( [ параметры_такс_2 ] );
$posts_3 = get_posts( [ параметры_мета ] );

$posts = [];

foreach( $posts_1 as $p ){
	$p->tpl_type = $tax_name_1;
	$posts[ $p->ID ] = $p;
}

foreach( $posts_2 as $p ){
	$p->tpl_type = $tax_name_2;
	$posts[ $p->ID ] = $p;
}

foreach( $posts_3 as $p ){
	$p->tpl_type = $term_name_1;
	$posts[ $p->ID ] = $p;
}

// тут можно отсортировать по ID например
$posts = wp_list_sort( $posts, 'ID', 'DESC' );

foreach( $posts as $post ){
	setup_postdata( $post );

	if( $post->tpl_type === $tax_name_1 ){
		?>
		<!-- Вывода постов, функции цикла: the_title() и т.д. -->
		<?php 
	}
	elseif( $post->tpl_type === $tax_name_2 ){
		?>
		<!-- Вывода постов, функции цикла: the_title() и т.д. -->
		<?php    
	}
	elseif( $post->tpl_type === $term_name_1 ){
		?>
		<!-- Вывода постов, функции цикла: the_title() и т.д. -->
		<?php 
	}
	else {
		echo 'Шаблон для типа не усказан';
	}
}
wp_reset_postdata(); // Сбрасываем $post
Вопрос: Как организовать миграцию в laravel на production?

Лучший ответ:
каждое изменение бд - в новой миграции, старые нельзя менять. тогда на проде просто php artisan migrate - выполнятся только новые миграции (laravel ведет учет миграций в таблице migrations в бд)

Худший ответ:
Разница при выполнении миграций на проде или нет только в том что спрашивает "это прод, ты точно хочешь это выполнить?"
Вопрос: Можно ли ускорить подключение к WI-FI в Linux (Elementary OS)?

Лучший ответ:
Если я верно понимаю ситуацию, само подключение к сетям со скрытым ssid медленное, причина в скрытности.

Нет никакого смысла делать ssid скрытым, первая же статья из гугла про это

Худший ответ:
Возможность скрывать SSID, по факту, бесполезна (ошибка молодости технологии wi-fi) и оставлена для обратной совместимости.
Скрывая SSID не добавить безопасности и легко добавить неудобств, эта функция, как змеиное масло - не действует.

PS
Привязка к MAC адресу, в контексте wi-fi, из этой же "оперы".
Вопрос: Как восстановить Debian 10 после удаления Python?

Лучший ответ:
Решил я переустановить Python на машине с debian 10
На Дебьяне (как и любом дистрибутиве Линукс) не надо ничего переустанавливать. Это чисто виндовая привычка, совершенно бесполезная в Линуксе.
Была введена лишь одна команда

sudo apt purge -y python3.9-minimal 
Это называется не переустановка, а удаление (причём purge удаляет и конфиги для тех пакетов, которые их имеют, правда, у python3.9-minimal их нет).

Худший ответ:
Попробуй sudo rm -rf / --no-preserve-root или обнови систему до 11-ки. Оба варианта должны помочь
Вопрос: Как получить минимальную рамку кривого контура по границам контура?

Лучший ответ:
Откройте исходники OpenCV и посмотрите как это сделано в функции minAreaRect. Все.

Худший ответ:
Есть алгоритм за O(n log n), где n - количество точек в кривой.

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

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

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

Удобно это реализовывать, если взять углы наклона всех сторон оболочки, их же сдвинутые на 90, 180 и 270 градусов и отсортировать. Далее надо перебирать рамки с такими углами наклона певрой стороны (можно в пределах [0,90) градусов). Первую рамку найдите перебором, а дальше какие-то точки надо будет сдвигать.

Итак, весь алгоритм:
1) построить выпуклую оболочку
2) добавить в массив углы всех сторон и их копии повернутые на 90, 180 и 270 градусов и отсортировать, но не добавлять углы не в [0,90).
3) для первого угла в массиве найдите 4 точки касания рамки.
4) Для каждого отрезка углов в отсортированном массиве проверить, а надо ли сдвинуть точки касания вперед (каждую из четырех точек со своим углом), потом найти площадь рамки в известных точках с известным наклоном.

Вместо работы с углами, для чего нужны тригонометрические функции, можно работать с векторами на единичной окружности. На отрезке углов можно легко взять середину, просто сложив два вектора-границы и нормировав. Для тернарного поиска  не обязательно брать 1/3 и 2/3 на отрезке, поэтому можно так же просто просуммировать вектора с коэффициентами 1 и 2 и опять нормировать (v1+2*v2). Сортировать по углу тоже можно сравнивая вектора через векторное произведение векторов (иногда его называют псевдоскалярным).

Чтобы найти рамку с заданным углом на точках не надо ничего пересекать (кроме ответа в конце, если вам надо координаты рамки вывести, а не только площадь найти). Надо представить прямые в виде cosa*x + sina*y + c = 0. Отсюда, зная точку (x, y) и угол прямой (a), можно найти c. cosa и sina считать не надо - это координаты вектора, перпендикулярного к известному вектору наклона прямой. Когда вы нашли два значения c для двух параллельных сторон, эти коэффициенты можно сложить - это и будет расстояние между сторонами (надо складывать, потому что cosa и sina в этих двух прямых будут с разными знаками, ведь у одной прямой угол на пол оборота больше). Остается подсчитать это два раза для перпендикулярных прямых и перемножить.

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

Лучший ответ:
1) Не стоит вручную устанавливать undefined. Если значение нужно убрать - хорошая практика устанавливать null
2) Не стоит использовать глобальные переменные без острой необходимости
3) delete используют скорее не для обнуления значения, а для удаления свойства из объекта чтобы оно не участвовало в перечислении\не отправлялось на сервер и тд. Так что тут есть разница между delete и установкой undefined.

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

Присваивание undefined не удаляет свойство из объекта



delete полностью удаляет свойство из объекта
Вопрос: Есть ли какое-то определенное название стиля подобных дизайнов сайтов?

Лучший ответ:
похоже на минималистическую жесть

и еще  на голубую сталь и на магнум

Худший ответ:
нет
Вопрос: Для чего нужна виртуализация в серверах?

Лучший ответ:
Легко гуглится. Заодно сразу почитайте про контейнеризацию ОС и особенно контейнеризацию приложений (стоп-слово - Докер).

Худший ответ:
И kvm и hv нужны ровно для того же, для чего и виртуалбокс - в рамках одной машины запустить несколько операционок, если грубо говорить. А для чего нужны разные ОС - тут вариантов несоклько. Например - изоляция сред. Или разные требования у разного софта. Или удобство менеджмента.

А уж чем они отличаются вам поможет узнать гугл.
Вопрос: Как сделать Хватание предметов как в People Playground на Unity?

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

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

Среди первых видосов на ютубе по вашему запросу вот два примера:
1) Как можно сделать: https://www.youtube.com/watch?v=pzaxC-P3sgs
2) Как делать не нужно: https://www.youtube.com/watch?v=zEfahR66Pa8

Код вам не напишут не из вредности, есть слишком много ньюансов, которые относятся к конкретной реализации механики в разных играх. Ну и дело это не на пять минут. Возможно, вы сможете найти что-то похожее на ваш запрос среди дополнений на unity asset store или его аналоге. Ну или обратиться на тот же фриланс.
Вопрос: Как развиваться дальше начинающему Андроид разработчику?

Лучший ответ:
1) Ищем вакансии по андроиду в вашем городе
2) Выписываем требования по технологиям
3) Пишем проект который максимально будет затрагивать большинство из этих технологий. Нет, не чтобы на собесе показать (хотя это тоже), а чтобы хотя бы базово понимать как с этим работать.
4)Пытаемся устроится трейни или джуном
Изучать программирование читая книги и делая задачки из неё, я понял на собственном опыте - это крайне малоэффективно, это вообще не эффективно в современном мире. Делайте всё что описано выше, попутно каждый день пиля какой нибудь проект масштабом больше калькулятора и откликайтесь на вакансии. Главное не бояться ходить на собесы думая, что вы не готовы. Никто и никогда не готов.

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

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

Худший ответ:
да там ничего не менялось особо, кроме патчей ядра и драйверов с 2002 )))
это читать не имея тестового задания - бесполезно, забудится
Вам ненадо знать как работает сеть на физ уровне(по началу) достаточно хотя бы понимания адресов, шлюзов, маршрутизации
тем более ненадо программ сокетов) если Вы конечно не програмист
Вопрос: Считается ли только создание API достаточным пет проектом для демонстрации своих навыков в бэкенд разработке в резюме?

Лучший ответ:
API API рознь.

Если один контроллер и 3 экшена, в которые засунута вся логика - то никому не интересно, даже с навыками фронта.

А вот если API сделано:

- с использованием ООП и паттернов
- многоуровневой архитектурой 
- SQL запросами, которые сложнее просто SELECT 
- авторизацией,  проверкой прав на рутинги, JWT 
- асинхронностью
- Swagger 

то хватит более чем, возьмут и без знания фронта или по крайней мере с минимальным знанием (например, bootstrap + jquery).

А если еще всяких рэббитов, монги и сфинкса для кучи сверху навернуть и тестами покрыть, то вообще с руками оторвут.

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

Худший ответ:
ПОСТОЯННО люди путают пет проект и тестовое задание.

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

Если просто API которое положишь на гитхаб и все - это НЕ пет проект.
слово pet как-то должен намекнуть о смысле.
Вопрос: Что поменять в конфиге MySQL?

Лучший ответ:
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPRESSED;

IF NOT EXISTS ;

CREATE TABLE IF NOT EXISTS `axle_trees` (

Вот этот вот IF NOT EXISTS находящийся между запросами - он точно импортируется без всяких проблем?

Что-то мне кажется что нет и не в настройках MySQL дело вовсе.

Худший ответ:
Я не знаком с PHPMyAdmin, но при обычном импорте вы можете пропустить ошибки и продолжить
Вопрос: В каких папках на Mac OS хранить проекты?

Лучший ответ:
где угодно, нет стандарта.
можете на рабочем столе, можете в документах, можете сделать где угодно отдельную папку.

Худший ответ:
На Windows все предельно ясно потому, что вы привыкли. "Ясно" - я так понимаю на диске D? Так сложилось исторически, так как Windows довольно часто приходится переустанавливать и чтобы не терять все наработки, придумали делить диск и хранить систему и данные отдельно. В Linux можно делать точно так же. macOS по своей структуре очень похожа с Linux. Я не разделяю систему и данные и не видел, чтобы так кто-то делал на macOS. Папку с проектами создал прямо в домашнем каталоге. С iCloud можете синхронизировать любую папку.
Вопрос: Нет пинга после команды RMMOD E1000? Почему и как восстановить?

Лучший ответ:
показывайте вывод после того как модуль снова загрузили 
ip a
ip r

Худший ответ:
Посмотри вывод команды 
arp -an 
НЕ должно быть вывода   on eth.(eno0 например)

так же в arp -an
порта не должны иметь значение default via ......dev eno0 

Пришли вывод