Vikhrmodels/habr_qa_sbs huggingface dataset:
Вопрос: Сайты для поиска единомышленников?

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

Худший ответ:
Для более конкретного примера: мне нужен middle+ frontend разраб, которого заинтересует моя та или иная идея
Со стороны выглядит будто ты - такой себе ловкий менеджер.  Сидишь и хочешь надурняк что-то высидеть :)

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

Если у тебя - чисто научный интерес - то иди лучше в научные кафедры. Ищи себе руководителя и грызи гранит науки. Может станешь лет через 10 кандидатом наук.

До кучи еще посмотри сериал Силиконовая Долина. Тоже про идеи.
Вопрос: Как определить по GPS координатам, находится ли точка за МКАДом?

Лучший ответ:
Банальное "проверка вхождения точки в многоугольник".

Худший ответ:
Как выбрать зону яндекс.карт исходя из адреса юзера?

Там есть пример проверки вхождения точки в многоугольник.
Вопрос: Как отключить swiper слайдер на десктопе?

Лучший ответ:
как-то так должно работать

function initSlider() {
new Swiper('.swiper', {
	loop: false,
	sped: 2400,
	navigation:{
		nextEl: '.swiper-button-next',
		prevEl: '.swiper-button-prev',
	},
	pagination: {
		el: '.swiper-pagination',
		clickable: true
	},
	breakpoints: {
    // when window width is >= 320px
    320: {
      slidesPerView: 2,
      spaceBetween: 20
    },
    // when window width is >= 480px
    480: {
      slidesPerView: 2,
      spaceBetween: 30
    },
    // when window width is >= 1920px
    1920: {
      slidesPerView: 1,
	    spaceBetween: 60,
	    autoplay:false,
    }
  }
	 
});
}


function detectDevice() {
	if(/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent)){
    // true for mobile device
    initSlider();
    
	}else{
    // false for not mobile device
    
	}
}

detectDevice();

Худший ответ:
например:
document.addEventListener('DOMContentLoaded', () => {
  const width = window.innerWidth
  if (width < 1024){
    const slider = new Swiper()
  }
})
Вопрос: Как переписать стрелочную ф-ю на обычную?

Лучший ответ:
Здесь вообще анонимная функция не нужна:
itemTest[i].addEventListener('click', choosen)

Худший ответ:
В чём проблема то? Учите JS!
for (let i=0;i < itemTest.length;i++){
    itemTest[i].addEventListener('click', function(e){
        choosen(e);
    })
}
Вопрос: Как правильно получать криптовалюту за услуги и отчитываться по ней в налоговой?

Лучший ответ:
В общем случае у тебя на каждую транзакцию 2 сделки. 
1) Ты обмениваешь свои услуги на цифровые активы.
2) Через p2p ты продаешь цифровые активы и это отдельная сделка. С нее надо заплатить 13%
Как ты понимаешь у тебя будут разные контрагенты по сделкам.
В правовом поле РФ крипта это не деньги, но имущество, поэтому по первой сделке подойдет договор обмена, бартера, дарения и тд.
Со второй простой договор купли-продажи.
Но это общая схема. Детали надо уточнить у юристов

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

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

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

Лучший ответ:
Понятия "DIR-300" и "полный фарш из возможностей" совместимы только в том случае, если хотели сказать, что с возможностями там полный пипец.
Проброс на нужную машину по нужному(ым) порту(ам).
Кинетик должен уметь.

Худший ответ:
Для того чтобы только 1 машина выходила в инет с этим внешним IP, Вам надо подключить её к провайдеру напрямую. Щас все машины, которые ЗА роутером будут выходит в инет с этим IP.
А собсвенно в чем проблема то ? почему так не подходит? Сделайте просто проброс нужных портов в роутере на "сервер" и всё...
DIR-300 и понятие "полный фарш из возможностей" конечно повеселили)) хорошая шутка
Вопрос: Защита софта на Python?

Лучший ответ:
Вопрос вообще "как идентифицировать компьютер". И это нетривиально.
1. Получить MAC адрес сетевой карты и проверить его на вхождение в список. Простейший способ его получить - примерно такой:
import uuid
print(hex(uuid.getnode()))
* неясно, как поведет себя функция, если на компе несколько сетевых адаптеров. 
* смена сетевой карты сломает программу
* MAC адрес сетевой карты часто можно сменить
2. Можно попробовать использовать CPUID, например, так.
Но я без понятия, какие процессоры это поддерживают!
3. Можно разместить секретное значение в реестре целевых машин, и проверять его наличие.

Самая большая проблема - эту проверку может отломать любой, более-менее знакомый с языком.

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

Так что главный вопрос: а нафига?

Худший ответ:
Если нужна действительно зашита, в не создание ее видимости, то вот решение, но оно довольно тяжеловесное https://thales-sentinel.ru/protection/python/

Но предварительно лучше бы определиться с моделью угроз.
Вопрос: Как перенести работающую ОС Debian 11 на RAID1 с имеющейся LVM разметкой?

Лучший ответ:
Решили что следующая схема распределения объема HDD будет наиболее подходящей:
SWAP - RAID1 - 5Gb
/ - RAID1 - 24Gb
/home - RAID5 - все оставшееся место
не трогаете sda вообще на данном этапе!

Вы забыли /boot упомянуть, предположу что считаем его как гигабайтный раздел без существенных изменений.
Игнорируем разметку sda полностью, делаете таблицы разделов на sd[bcd] как
1MiB bios_grub
1GiB boot
29GiB sys
всё остальное data

mdadm -C /dev/md0 -l 1 -n 4 missing /dev/sdb2 /dev/sdc2 /dev/sdd2
mdadm -C /dev/md1 -l 1 -n 4 missing /dev/sdb3 /dev/sdc3 /dev/sdd3
mdadm -C /dev/md2 -l 5 -n 4 missing /dev/sdb4 /dev/sdc4 /dev/sdd4 # другие опции по вкусу

ждёте resync, обновляете mdadm.conf, отправляете железку в ребут для проверки что массивы корректно собираются сами.

pvinit, vgextend новых md1 и md2 в имеющийся LVM
pvmove root и swap на md1, хомяка на md2

umount /boot , dd if=/dev/sda2 of=/dev/md0, grub-install /dev/sdb , grub-install /dev/sdc , grub-install /dev/sdd, обновить fstab вместо sda2 записать md0

контрольный ребут

vgreduce sda3 из lvm, удаляете таблицу разделов sda и создаёте новую идентичную прочим дискам,
mdadm /dev/md0 -a /dev/sda2
mdadm /dev/md1 -a /dev/sda3
mdadm /dev/md2 -a /dev/sda4

после resync всё готово. Через lvresize расширить размеры томов ну и resize2fs как обычно.

Худший ответ:
Я делаю  Redundant LVM ТАК.
Вопрос: Существует ли, утилита для Linux с выводом программ для их запуска?

Лучший ответ:
Внезапно, в том самом mc есть т.н. "Меню пользователя", куда ты можешь накидать себе часто используемых программ, прописав им произвольные названия. Вызывается по F2.

Худший ответ:
смотри rofi и подобные
Вопрос: Как найти вакансии в ентерпрайзе будучи сеньером?

Лучший ответ:
Хотите кровавого энтерпрайза, идите в центральный аппарат Сбера или СберТех, в X5, РЖД и тому подобные.

P.S. Обычно сеньорам не приходится искать работу.

Худший ответ:
Да просто в крупный финтех пойдите.
Вопрос: Как сделать переход между страницами без перезагрузки?

Лучший ответ:
Почитай про SPA. Обычно подобные сервисы разрабатываются при помощи js библиотек Vue router, React router и т.п.

Худший ответ:
Ниже пример функции для загрузки контента страниц по AJAX и без перезагрузки страницы:
async function pageUpdate(event) {
	
	// Если функция вызвана без аргументов:
	
	if (typeof event == 'undefined') {
		
		// Устанавливаем обработчики
		// на все ссылки на странице:
		
		$('body a[href]').click(pageUpdate);
		
	}
	
	// Если функция вызвана
	// в результате клика
	// по ссылке:
	
	else {
		
		// Берём адрес с нажатой ссылки
		// и записываем в переменную link:
		
		var link = event.target.href;
		
		// Если ссылка ведет на наш сайт:
		
		if (new URL(link)['host'] == location.host) {
			
			// Предотвращаем переход:
			
			event.preventDefault();
			
			// Блокируем страницу, чтобы
			// больше нельзя было кликать:
			$('body').css('pointer-events', 'none');
			
			// Активируем анимацию исчезновения (полупрозрачности):
			
			var hide = $('body').animate({ opacity: 0.2 }, 500).promise();
			
			var ajax = $.ajax(link); // Запускаем загрузку новой страницы
			
			await hide; // Ждем окончания анимации исчезновения
			
			// Вставляем данные на страницу беря их с ново-скачанной страницы:
			
			var doc = new DOMParser().parseFromString((await ajax), 'text/html');
			var html = $('body', doc).html();
			$('body').html(html);
			
			// Скролим в самый вверх:
			$('body, html').animate({scrollTop: 0}, 0);
			
			// Меняем адрес в адресной строке:
			history.pushState(null, null, link);
			
			// Заново ставим
			// обработчики:
			
			pageUpdate();
			
			// Активируем анимацию
			// постепенного появления:
			
			await $('body').animate({ opacity: 1 }, 500).promise();
			
			// Снимаем блокировку с документа:
			
			$('body').css('pointer-events', '');
			
		}
		
	}
	
}

pageUpdate();
Функция перехватывает клики по ссылкам, добавляет анимацию и обновляет контент страницы без перезагрузки.

Важно! Если на сайте есть какой-то сложный функционал, данный скрипт скорее-всего их сломает!
Вопрос: Ноутбук не видит жесткий диск после замены, что делать?

Лучший ответ:
Нужно установить на новый диск операционную систему - тогда он станет «bootable» (загрузочным).

Худший ответ:
А ты купил SSD-NVME или SSD-sata ?? если матерника поддерживает только SSD, то NVME и не увидится )
Вопрос: На чем лучше писать аналог Aliexpress?

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

Худший ответ:
Все зависит от предполагаемой нагрузки. Если планируешь что это будет следующий алик, то РНР тут вообще не пойдет. Нужно АПИ писать на GO например. Но тут важней вопрос не на чем, а как. Клиентскую часть, естественно, HTML на чем еще кроме него можно? Есть альтернативы HTML/CSS/JS?
Вопрос: Насколько теряется производительность Windows на внешнем диске NVME?

Лучший ответ:
USB 3.0 имеет предельную скорость 500мб/с
NVMe диск при этом может 7000/5000 мб/с
Тоесть уже как минимум в 10 раз проигрыш.
А ведь ещё будет проигрыш по iops.
А ещё есть оверхед на конвертацию USB <-> nvme
А ещё переходник может быть кривой, тогда ещё хуже будет.

А замедлятся все операции, которые связаны с диском, не только загрузка файлов.

Так что лучше по возможности подключаться напрямую, ну или хотябы использовать USB 3.2 / USB 4 / Thunderbolt

Худший ответ:
Скорость NVME упадет до скорости sata SSD. Так что в целом норм

Это отражается на общей производительности всей системы.
Вопрос: Кто должен адаптировать сайт под разные разрешения мониторов?

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

Худший ответ:
Странный дизайн и странный верстальщик. У того же Bootstrap максимальная ширина контейнера для XXL размера - 1320 пикселей. То есть на типичном сегодня FullHD (1920х1080) он занимает центральную часть экрана, оставляя поля слева-справа. Аналогично здесь, на тостере - содержимое ограничено шириной 1440 пикселей.

Тут в общем-то главный вопрос: а как договаривались с верстальщиком? Была ли в требованиях к нему адаптивная верстка? Обсуждался ли этот вопрос вообще? Потому что если ему дали макет и сказали: "вот, делай как на макете" - верстальщик и сделал исходя из того что заказчик знает чего хочет.

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

Лучший ответ:
от тебя требуется ввести пароль для юзера someuser

специальная фишка sudo для того чтобы не светить всяким пользователям пароль root.

Худший ответ:
Поменять root пользователем.
passwd someuser
Вопрос: Что я должен знать, для создания качественного, одностраничного сайта?

Лучший ответ:
то, что для этого нужно. 
как минимум - html и css. 
дополнительно - js.

Худший ответ:
Дизайн, верстка, копирайт. Всё остальное не важно. Если мы говорим про лендинг.
Если SPA, то добавляем JS в обязательном порядке.
Вопрос: Как пофиксить ошибку 502 Bad Gateway в nginx?

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

Худший ответ:
Ошибка была такая: забыл добавить в кластере базы данных ip моего сервера в список разрешенных адресов.

решал проблему в такой последовательности:
1) поставил обработчик ошибки в коде контейнера back: ошибка 502 ушла, ошибка в nginx также ушла, осталась ошибка подключения в back.
2) зашел в работающий контейнер back, установил базу данных(apt update и apt install postgresql postgresql-contrib), попытался подключиться через него к бд не через код а строкой psql -h host -p port -U user -W , не подключилось, вышла ошибка "Connection refused. Is the server running on host "10.0.0.101" and accepting
    TCP/IP connections on port 5432?"
3) тут прочитал что это проблема или с файрфолом или со списком разрешенных адресов у бд
4) зашел в список разрешенных адресов, исправил опечатку в ip, подключение заработало.
Вопрос: Стоит ли учить курс где Django 3.0.2 если сейчас версия 4.0.3?

Лучший ответ:
В документации Джанги для каждой версии описаны изменения (щёлкай стрелочки внизу, чтобы перемещаться по версиям). Помни, что версия 3.2 LTS, а 4.0 нет. Функции в 4 могут появляться, могут удаляться, всё устаканится только в версии 4.2 LTS в декабре 2023 года. Так что учи 3 и пока не волнуйся об этом.



Худший ответ:
Two Scoops of Django 3, с получением бесплатной версии - думаю сам разберешься. Любой эквиванент тоже подойдет, но Дронова не рекомендую - это тупо перепечатка документации, на учебник тянет с трудом.
Вопрос: Две ОС (7 и 10 Windows) на одном компьютере. Какие возможны проблемы?

Лучший ответ:
Если живут на разных разделах - ничего они не затирают, что за бред.

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

Лучший ответ:
Нормальная практика.

Худший ответ:
Ни в коем случае. Вас попользуют, и выкинут.
Вопрос: Чистый php, если нет Бд, то можно ли её создать?

Лучший ответ:
Можно, но код, который создает БД при ошибке - это глупость. 
Так не делают. 

Можно создать отдельный скрипт для настройки окружения, который создаст БД и таблицы например. 
В этом скрипте просто не указывать 4-й параметр в mysqli_connect.
И дальше просто написать mysqli_query() c запросом создания таблицы.

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

spoilerИ отучайтесь уже писать этот говнокод, or die("Ошибка соединения с БД." . mysqli_error($link)); 
он и так-то всегда был признаком профнепригодности, а в современном РНР уже и вовсе не имеет смысла 

Худший ответ:
Обычно эволюция кода идет синхронно с обновлением схем в БД. Для этого есть инструменты типа liquibase/flyway. Они приводят в БД в состояние полного синхронизма с вашим репозитарием кода.  И то что у вас происходит (нет таблицы) - это ужас-ужас и надо срочно что-то менять в жизни. 

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

Лучший ответ:
Процессор у денди - это восьмибитка MOS 6502 (она же стояла в Apple 1, 2, Терминаторе и роботе Бендере). В ней восьмибитные регистры, веселые танцы с бубеном для доступа к памяти за пределами форточки в 64кб (да и в пределах тоже), а также жесткая привязка к числу тактов на инструкцию (потому что каждая новая инструкция читается из памяти во время исполнения текущей). 

Стандартных высокоуровневых компиляторов C/C++ на этот антикварит практически нет, Васик, который тогда существовал - был супер-мега-тормозной. Зато есть энтузиасты, которые протравили кристалл процессора кислотой и создали вентильно-идентичный эмулятор процессора, что приятно.

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

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

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

p.s. если у тебя программа не требует какой либо графики, скорости и код и ее данные умещаются в десяток килобайт, то можешь хоть на бейсике написать
Вопрос: Маркетинговые ходы вокруг языка Ассемблер?

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

Как и программы на Си, программы на Ассемблере нужно пересобирать под каждую следующую платформу. Разве нет? Что вы вкладываете в слова "новая платформа"?
Другая ОС? - да, надо пересобирать, и часто менять, ведь API разных ОС отличается. При этом C часто позволяет исходный код программы не трогать, т.к. функции стандартной библиотеки, POSIX API предоставляют платформонезависимый интерфейс. А вот в программе на asm соответствующий код придется переписать.

Новая версия ОС? - здесь есть свои нюансы, но собранная статически программа обычно прекрасно работает на протяжении многих поколений ОС (вы же не загружаете новую версию, допустим, игры под каждую версию Windows? Взять вон diablo 2 - как работала она под Win 98, так же отлично тот же бинарник заведется в Win 10).

Новый процессор? - эти вообще паталогически обратно совместимы. Код, написанный или скомпилированный чисто под 30-летний 386 будет работать на i9 (при условии совместимости по пунктам выше).

Возвращаясь к первоначальному вопросу: вы, видимо, не понимаете или не придаете значения тому, что существуют не только x86 процессоры. Изначально ЯП высокого уровня разрабатывались именно с целью абстагировать код программы от конкретного железа. В 60-80-е годы не было единой и даже какой-то одной распространенной железной платформы, что же прикажете, допустим, стандартные утилиты Unix переписывать каждый раз с начала и до конца на новом (подчеркну, НОВОМ, другом) ассемблере?
Даже сейчас, когда вроде бы кругом x86, есть Itanium (ну ок, был в недавнем прошлом), ARM (в виде нескольких версий архитектуры и огромном количестве железных воплощений), где-то теплятся SPARC и PowerISA. Наконец, микроконтроллеры (привет ардуинщикам).

Коротко: ЯП высокого уровня (не только C) позволяются абстагироваться (до определенных пределов) от железа и от ОС и не менять исходный код программ при переносе на другую платформу, ограничиваясь механической процедурой перекомпиляции.

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

Лучший ответ:
openGL тут вообще ни при делах никаким боком. 

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

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

Худший ответ:
openGL тут вообще ни при делах никаким боком. 

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

Другой способ - это вытаскивать из картинки табуляцию неизвестой функции, после чего пытаться угадать, что это, всякими математичекими методами.
Вопрос: Возможен ли C# на QT или GTK а если да то где документация?

Лучший ответ:
Qt - библиотека классов, поэтому всегда можно написать обёртку над ней для того, чтобы дёргать из C#. Но этот процесс долгий и утомительный. Готовый вариант обёртки над Qt под C#.

Для написания UI под линукс можно использовать:

AvaloniaUI
UnoPlatform
GTK#
WxWidgets (Wx.Net)

Рекомендую AvaloniaUI, так как максимально похоже на WPF или UWP, установка простая, а документация внятная. Что же до UnoPlatform - не знаю, не имел практики применения, как и со всеми остальными.

Релизнулась MAUI - официальный кроссплатформенный фреймворк прямо от микрософтов, но самое занятное, что, когда я смотрел в последний раз, документация была абсолютно пуста, не было даже «Hello, World». Что же сейчас - не знаю. Всё равно ещё рано переходить на него, так как достаточно сырой продукт с малым количеством материалов. То есть если возникнет вопрос, то ответа можно не найти.
UDP.: Похоже, «Hello, World» всё-таки подъехал.
UDP2: Как сообщили в комментариях к моему ответу, у MAUI пока (?) нету поддержки Linux, поэтому забейте на него.

Худший ответ:
Привет всем! Учу C# и хочу писать программы для Linux но я без понятия какие графические.... инструменты поддерживают его...

Avalonia: https://avaloniaui.net/
На русском по ней инфы достаточно, есть чат в телеге: https://t.me/AvaloniaRU
Слышал что вроде GTK умеет работать с C# но я не могу найти документации на русском...
Да, есть GtkSharp, но документации на русском нет.