Доброе утро! ну или просто утро, я хз честно говоря почему это оно вдруг доброе. Долго ничего не постил из за некоторых проблем с психикой ну и банально экзамены и ещё не особо понятно что изучать дальше и куда двигаться в том звиздеце который происходит. В последнее время углубился в тематику линукс, дважды ставил и ломал виртуальные машины Debian, сейчас плавно пришёл к arch niri, даже недавно использовал Kali linux и ко что просканировал ну в общем слегка углубился в эту тему. Сегодня решил 2 каты на codewars обе на 5 сложности из 8, так что могу считать что постепенно возвращаюсь в форму. Кстати если кому интересно - вот скрины из линукса:
Снова показываю как вести разработку «голыми руками» — без IDE, документации и даже интернета. На этот раз с помощью «пользовательской» Ubuntu Linux и OpenJDK.
Поскольку современные разработчики постоянно жалуются на завышенные требования технических интервью вообще и на мою «дурную практику» написания кода от руки в частности — показываю на личном примере как все это работает.
Жертвам «слабой памяти» посвящается.
Заодно узнаете как можно вести разработку на Java хоть в чистом поле — в самолете, в поезде или на закрытом объекте, без подключения к интернету и документации.
Видео
На этот раз для большего угара помимо статьи было записано и видео, где показан весь процесс «полевой разработки» на Java, с одним только JDK:
Для большей чистоты эксперимента был взят Live-образ Ubuntu Desktop 24.04.3 LTS, записан на флешку, флешка вставлена в один из рабочих ноутбуков, который затем с нее был загружен.
Таким образом получилась абсолютно чистая система, без средств разработки и с отключенной сетью.
Из инструментов у нас будет лишь текстовый редактор и JDK.
И все.
Что будем писать
Самое простое что можно написать в таких полевых условиях — реверс-шелл HTTP-сервер. На самом деле написать можно много чего, особенно если посмотреть в каталог demo внутри OpenJDK:
Набор демо-проектов из состава OpenJDK 24
Здесь и далее скриншоты из другой системы (Manjaro), чтобы не заморачиваться с их перебрасыванием из Live-системы и добавлением в статью. Тем не менее на видео все описываемые в статье шаги и весь код вбиваются каноничным способом — полностью вручную, на чистой системе, загруженной с Live USB.
Демо
Упомянутый выше каталог demo содержит набор довольно серьезных примеров проектов, которых вам вполне хватит для начальной стадии изучения или в качестве основы для какого-нибудь прототипа, особенно если никаких других инструментов и интернета — нет.
Так выглядит демо-проект Notepad, реализующий простейший текстовый редактор:
Окно отладки справа — часть демо‑проекта.
Так выглядит демо Metalworks, с простейшей реализацией мульти-оконной системы (MDI):
Обратите внимание на меню Theme, даже у демо-проекта есть скины!
Напоминаю, что вся эта благодать находится внутри стандартной поставки любой версии JDK, начиная с незапамятных времен 8й версии.
Все демо-проекты содержат исходный код в архивах src.zip и собираются без внешних зависимостей.
К сожалению каталог с демо иногда вырезается ментейнерами дистрибутивов линукса ради экономии места и переносится в отдельный пакет, который пользователи разумеется забывают установить.
Ручная разработка
В ролике в записи показано как автор последовательно вводит и запускает в работу примерно такой код:
// разумеется я не помню названий абсолютно всех // импортируемых классов, поэтому тут стоит '*' importjava.io.*; importjava.net.*; import java.util.concurrent.*;
publicclass MyWebServer {
staticvoid handle(Socket s) { // метод getId() устарел, поэтому его использование в // последних версиях JDK выдает предупреждение System.out.println("Thread: %d" .formatted(Thread.currentThread().getId()));
// самое сложное место, которое удалось повторить на записи // далеко не с первой попытки try(PrintWriter out = new PrintWriter(s.getOutputStream()); BufferedReader in = new BufferedReader( new InputStreamReader(s.getInputStream()));) { // поскольку используется чтение и запись строк а не байт - читаем // строку целиком, т.е. до символа \n String l = in.readLine(); // тут просто показываем в консоль System.out.println(l); // этим простым способом читаем только строку запроса, // которая идет первой, пропустив все заголовки // \r\n (пустая строка) - признак завершения запроса while (l==null || l.isEmpty() || "\r\n".equals(in.readLine()));
// тут мы 'в лоб' сравниваем строку HTTP-запроса целиком // так она выглядит до работы парсера if ("GET /test HTTP/1.1".equals(l)) { // поскольку мы реагируем только на один url '/test' // формируем ниже статичный ответ String data = "Hello from alex0x08 at "+ new Date(); // так выглядят стандартные поля ответа в 'raw' виде, без обработки out.println("HTTP/1.1 200 OK"); // 'close' дает указание браузеру разорвать соединение // с сервером сразу после получения данных out.println("Connection: close"); // поскольку мы отдаем строку - ставим MIME тип 'text/plain' out.println("Content-Type: text/plain"); // опционально отдаем размер данных out.println("Content-Length: " + data.length()); // пустая строка - признак начала блока с данными out.println(); // отдаем сами данные out.println(data); } else { // во всех остальных случаях формируем ответ 404 out.println("HTTP/1.1 404 Not Found"); out.println("Connection: close"); out.println(); } // нужно обязательно вызывать поскольку PrintWriter кеширует данные out.flush(); } catch (Exception e) { e.printStackTrace(); } finally { // в любом случае закрываем клиентский сокет try {s.close();} catch (Exception ee) {} } } // стартовый метод приложения publicstaticvoid main(String[] args) throws Exception { System.out.println("Starting.."); // тоже сложное место, которое было непросто ввести по памяти ExecutorService p = Executors.newFixedThreadPool(10); // создание 'серверного' сокета, который будет прослушивать // указанный порт // поскольку хост не указан - будут прослушиваться все (0.0.0.0) ServerSocket ss = new ServerSocket(8089); // бесконечный цикл, который нужен тк метод accept() - блокирующий // и выход из него произойдет после получения входящего подключения while (true) { // получен клиентский сокет Socket s = ss.accept(); // запуск асинхронной обработки p.execute(() -> handle(s)); } } }
Комментариев в той версии кода, который был показан на записи разумеется нет, они были добавлены уже после — для большего понимания.
Данный исходный код реализует простейший многопоточный веб-сервер на Java, который отвечает лишь на один URL /test и отдает заранее заданную строку с датой.
Как видите даже столь небольшого количества строк достаточно, чтобы можно было подключиться из современного браузера Chrome:
Компиляция выполняется как и в записи всего одной командой:
После чего появится один единственный class-файл c совпадающим именем. Поскольку пакеты не использовались, для запуска достаточно указать в качестве classpath текущий каталог:
java -cp . MyWebServer
Но это все лирика и понты.
Когда кончается человеческая память
Разумеется невозможно запомнить абсолютно все и рано или поздно вы столкнетесь с названием метода или класса, которые надо где-то подсмотреть.
Для примера, автор при записи видео столкнулся с таким в двух местах:
длинные классы-обертки над потоками (stream) сокета и сложное название статичного метода, создающего экземпляр ExecutorService.
И то и другое получилось правильно ввести далеко не с первой попытки.
Возвращаясь к ситуации когда нет доступа к интернету и полноценной среды разработки, зато на машине есть JDK — показываю что можно сделать в этом непростом случае.
Невероятно но факт:
подсмотреть названия системных классов и методов можно.. в самом JDK!
Вот это поворот!
В последних версиях JDK появилась интересная утилита jimage, которая находится в каталоге bin (там же где и главные бинарники java и javac).
С помощью этой штуки можно легко посмотреть полные названия всех системных классов:
Листинг системных классов JDK с полными именами.
Правда знание полного имени класса не всегда помогает, поскольку в JDK много вложенных системных классов, которые по идее вызывать снаружи не надо.
Команда для запуска:
jimage list $JAVA_HOME/lib/modules |less
Где переменная JAVA_HOME указывает на каталог с установленной JDK:
Так вы увидите названия всех системных классов, но что делать с методами?
Вытаскиваем сигнатуры методов
Тут тоже есть решение, поскольку эта же самая утилита позволяет распаковывать jmod-файлы в которых находятся системные классы JDK:
А еще одна утилита javap позволяет посмотреть метаданные class-файла, в том числе сигнатуры всех методов:
cd /opt/src/tmp/jre javap java.base/java/nio/Bits.class
Так выглядит результат:
Вот этого уже с запасом хватит для полевой разработки в условиях крайнего Севера.
Если у вас есть реальный, не "нарисованный" опыт разработки на Java, двух этих трюков будет достаточно для работы в поезде или самолете или на чужом компьютере — в тех местах и обстоятельствах, где нет подготовленного рабочего места.
Исходники JRE
Если вам совсем повезет, в каталоге JDK/lib будет находиться файл src.zip, внутри которого будут исходники всех системных классов JRE:
«Повезет» — потому что также как и demo, этот файл часто удаляют ментейнеры дистрибутивов Linux, с переносом в отдельный пакет. Но разумеется если он присутствует, то поможет гораздо больше чем все приседания с javap.
В распакованном виде:
Внутри находится исходный код всех классов Java, используемых в JDK:
cat java.base/java/io/Bits.java |less
Для примера, так выглядит исходный код класса java.io.Bits, который мы просматривали выше с помощью javap:
Как видите тут есть все, включая комментарии.
Эпилог
Смысл такой «полевой разработки» — в первую очередь глумеж над джунами проверка реальных практических навыков, которые находятся в голове у программиста, а не где‑то в интернете. К сожалению ныне можно констатировать, что такие навыки являются большой редкостью и мало кто из кандидатов, которых я когда-либо собеседовал могли осилить написание хотя‑бы трети подобного кода.
Кстати в нашем Телеграм-канале выложено первое техническое видео, где впервые получилось проверить всю эту идею.
Когда-то давно решил помочь своей конторе с сайтом (тем более, что мне нравится это всё). Т.к. я довольно жадный, то решил, что платить 160р в месяц хостеру это дофига. Тем более, что это просто место на диске. Тем более, что его всего ничего 2гб, а не 160 как у меня. Внешний статический ip имелся в наличии и я полез изучать тему.
В интернете писали о том, что хорошо подходит для таких дел freebsd (на тот момент 9 версии). Поставил эмулятор операционной системы в винде и приступил к процессу.
С Линуксом я немного имел опыта до этого, а вот с Юниксом нет и было очень интересно чем это закончится. По инструкции и интернета и видео уроков от Беши (так вроде звали этого картавого) мне удалось установить ось, поднять на ней php, mysql, ftp и т.п. штуки для успешного развёртывания сайта. В процессе я ощутил всю прелесть командной строки: удобство установки программ одной командой из портов, всяких обновлений и т.д. Всё это происходило не без проблем и ошибок, но в итоге я с гордостью наблюдал "хеллоу ворд" по адресу 192.168....
Но этого мне было мало. Я, как виндузятник со стажем, не желал топтать клаву, а хотел мышью окна закрывать. Что ж... есть же удобная консоль, куда можно ввести команду, оно установится и заработает. Ведь установится и заработает? *Падме.жпг*
Правдой из этого была только первая часть. Дальше начинался секис. Эта штука зависала при запуске либо сыпала ошибки из эмулированного рога изобилия на чёрном экране. Что я только не делал. Ещё и информации было очень мало об этом. Терзал я это дело очень долго. Уже и не помню сколько. Может месяц, может дольше. В итоге удалось победить этот чёртов чёрный экран и я увидел то, ради чего началась эта сексуальная драма: графический интерфейс, мышка, иконки, обои на рабочем столе. Радость была выше крыши. Тепрь-то мы всё как надо сделаем, теперь-то оно заработает как я хочу. Погнали!
И вот тут снова появляется эта *Падме.жпг*. Тогда ещё небыло этого мема, но был он очень в тему. Как говорится всё познаётся в сравнении. Я быстро понял, что намного проще и быстрее набрать make&install, чем что-то качать, пытаться запустить. Плюс все было засунуто хрен пойми куда. Чтоб найти какую-то настройку нужно долго искать где это вообще находится. И не факт, что найдёшь.
В общем я понял, что графика в данном случае зло и вернул всё как было в начале.
Ну и в процессе узнал, что сделать сайт на своём компе можно и даже открыть доступ к нему всем, но как быть с безопасностью? Пока я мучался с графикой, на сайте появились первые посетители и какие-то гомосекиенсы начали самозабвенно брутфорсить админку. Узнал я об этом из гневного письма хостера о сильном превышении нагрузки. Полез изучать логи и ахренел от количества запросов post. Заставив этого пидрика кушать ошибку 403 вместо "неверное имя или пароль", я задумался. Стоят ли эти жалкие 160р всего того, с чем я могу столкнуться? Может и стоят, но, прикинув количество киловатт, которые будут к оплате в конце месяца, моя жаба убрала одну лапу с шеи и поток свежего кислорода в мозг позволил понять, что разница будет уже не столь велика.
В общем бросил я это гиблое дело. Однако мне очень понравилась эта операционная система. Я никогда не думал, что может быть настолько удобно пользоваться консолью. Но применения этому я так и не нашёл. Сайт всё так же крутится у того же хостера уже много лет.
P.S. Хостер на сообщение о том, что меня ломают и не хотел бы он слегка прибить гада ответил, что проблемы индейцев всегда были и будут проблемами индейцев.
Еще одна поучительная история из жизни с Linux, специально чтобы вы потеряли сон и покой, узнав что такое вообще возможно.
Тот самый баг, смотрит на вас с экрана.
Вводная
Эмм с чего бы такого начать, чтобы не испугать раньше времени и не заставить устанавливать *BSD.
Есть на свете одна компания, которой мы помогаем с ИТ и есть у нее несколько виртуальных серверов на Ubuntu Linux, используемых для половых утех разработки и тестирования.
Ubuntu там использовалась нормальной (для сервера) LTS‑версии, но в какой‑то момент — в погоне за патчами безопасности ее обновили до текущей.
Не совсем «текущей-текущей», которую используют разработчики Ubuntu для обкатки новых версий дистрибутива, а просто без долгой поддержки — примерно то, что ставят себе обычные пользователи Ubuntu Linux на домашние компьютеры.
Все происходило летом 2025 года, поэтому речь про версию 25.04 Ubuntu Linux, которая использует ядро 6.14 (запомните этот важный момент):
Баг
Однажды сисадмин компании-заказчика заметил слишком частую и сильную нагрузку на CPU, создаваемую процессом snapd, который является частью пакетного менеджера Snap.
Скриншот был взят из сети, поэтому «шакальего» качества;)
Эта проблема с перегрузкой CPU для snapd мягко говоря не нова — «проклятый snapd» гадил линуксоидам с момента своего появления на свет и вообще видимо был не придуман а ниспослан свыше, в качестве кары за грехи.
Нет, это не осеннее обострение, дело происходило летом.
Разумеется первым делом были опробованы стандартные методы решения, вроде снижения частоты проверок обновлений или полного отключения проклятого сервиса:
Отдельно порадовал ответ ИИ:
Дословно «снести и использовать что-то другое» — первый разумный совет от машины за всю историю развития искусственного интеллекта.
Дальнейшие изыскания привели в багтрекер snapd к упомянутому багу, где уже третий комментарий от разработчика snapd, с приложенной трассировкой вызовов показал что проблема именно в ядре:
Тут стоит добавить, что почти сразу встал вопрос проверки бага на локальной машине, поскольку на момент изучения ситуации локально все успело неоднократно обновиться, а отлаживать ядро Linux на сервере заказчика все же не очень хорошая затея.
Чуть ниже по переписке видно, что баг особо ярко проявляется на ноутбуке, работающем от батареи:
Так что решено было пробовать отловить именно в таких условиях.
На счастье, на машине осталась сборка 6.14 версии ядра с патчами от Xanmod, которая использовалась для статьи про l9ec.
В последние годы в проекте ядра Linux выпускается сильно много промежуточных релизов, поэтому на какой именно версии внутри 6.14 ветки что-то пошло не так еще пришлось выяснять:
Обратите внимание на загрузку CPU и блокировку выхода из приложения
Как видите, в очередной раз проблема прикладного сервиса уперлась в ядро операционной системы.
Патч целиком находится тут, место исправления выглядит как-то так:
Да, как видите ситуацию радикально исправляет буквально пара символов логической конструкции, главное знать где исправлять.
Текущее состояние
Формально проблема была решена еще летом этого года, патч попал в mainline и пакет с обновлением ядра от команды Ubuntu:
На осень 2025 года даже стабильная версия ядра Linux уже имеет версию 6.16 — т. е. паровоз разработки уехал очень далеко вперед от описываемых проблем:
Так что на момент написания данной статьи вы (по идее) не должны столкнуться с данной проблемой, а если и столкнетесь — все легко решается банальным обновлением версии ядра из пакетов дистрибутива.
При подозрении на описанный баг — попробуйте собрать тестовое приложение (см. выше) и запустить в своем окружении.
Если начнется 100% загрузка CPU запущенным процессом — проблема точно есть, поскольку в ядрах с патчем поведение тестового приложения отличается:
В исправленном ядре тестовое приложение немедленно завершится.
Что касается заказчика, поскольку решение а затем и патч были опубликованы довольно оперативно — раньше чем нам сообщили о проблеме, на время разборок с согласованиями и попаданием в mainline ядра, мы банальным образом перенесли патч вручную в ту версию ядра, которая использовалась на сервере.
Позже обновили уже штатными средствами дистрибутива до текущей актуальной версии.
Эпилог
Если вы не являетесь разработчиком ядра и не пишете патчи каждый день, засыпая в обнимку с отладчиком — т. е. далеки от реалий системного программирования, то из этой статьи сможете вынести несколько интересных выводов и внезапных открытий:
1. Linux — могила, *BSD - сила
Шучу, разумеется неподготовленным пользователям в BSD-системы лучше не лезть совсем, но задуматься (или хотя-бы просто знать) о реалиях функционирования Linux все же стоит. Чтобы факт выноса мозга ядру из прикладного ПО не стал для вас неприятным сюрпризом.
2. Граница между прикладкой и системной разработкой весьма абстрактна
Проще говоря — ее нетсовсем и в любой произвольный момент времени у вас есть неиллюзорный шанс наткнуться на баг ядра, даже программируя на JavaScript в браузере.
3. Любой уважающий себя сисадмин и DevOps должны знать С
Пусть на самом примитивном уровне, но хотя-бы собрать и запустить тестовое приложение, демонстрирующее проблему надо уметь. К сожалению все глубокие изыскания по теме «где оно тормозит» или «почему оно упало» рано или поздно приводят к коду на С и отладчику ядра.
И поверьте моему печальному опыту:
изучать эти штуки лучше днем и в спокойной обстановке, а не в режиме аврала и поздно ночью на работе в выходной день.
4. Считайте деньги, хотя-бы иногда
Описанная в статье проблема случилась в локализованном окружении (на собственных физических серверах компании), но точно такая же Ubuntu используется и облачными провайдерами вроде Amazon, где есть тарификация за использование ресурсов, в первую очередь CPU.
Как нетрудно догадаться, 100% загрузка процессора с интервалом в пять минут в облаке, если ее вовремя не заметить и не исправить — больно отразится на счете, который вам потом выставят.
Так что проверяйте загруженность, пиковых 100% в современных системах быть не должно, если только вы целенаправленно не занимаетесь вычислительными задачами.
У меня есть пк который собирался ещё в 2011-2013 в ручную(точную дату не помню),gt 660,8 гб оперативки и еще какой то там AMD или AMX но тут к сожалению не помню,пк в ремонте из-за кое каких нюансов... тянет ранее популярные игры "grand theft auto" все части на данный момент,cs go(cs 2 не тянет по логичным причинам,sse 4.2 инструкций нету),TWD(the walking dead 1-4),beaming drive(в 5 фпс...),и CoD 1/2/3/advanced и прочие старые игры,думаю в этом году полностью пересобрать этого франкенштейна...
ИИ научился вскрывать чужой код быстрее любого хакера — и индустрия наконец испугалась этого по-настоящему. На этой неделе Linux Foundation вместе с двумя десятками крупнейших корпораций объявила Akrites — коалицию, которая будет латать дыры в открытом софте раньше, чем до них доберутся злоумышленники с ИИ. И это уже не первый такой «общий сбор».
Что такое Akrites. Это единый, конфиденциальный штаб по устранению уязвимостей в том самом open-source, на котором держится критическая инфраструктура всего мира. Среди отцов-основателей — AWS, Google, Microsoft, OpenAI, Anthropic, NVIDIA, IBM, Cisco, Red Hat, Rust Foundation, JPMorgan, Citi и другие. Запуск состоялся 26 июня, финансирование идёт через фонд Alpha-Omega под крылом Linux Foundation.
Как это работает. Вместо десятков разрозненных багрепортов, которые сыплются на измотанных мейнтейнеров, Akrites даёт единую команду реагирования (SIRT) и стандартный процесс координированного раскрытия — с CVE, оценкой по CVSS и протоколом конфиденциальности TLP (всё стартует на уровне TLP:RED). Отдельная фишка — роль «мейнтейнера последней надежды»: если критичный, но заброшенный пакет некому чинить, патч выпустит сам Akrites.
Почему именно сейчас. Как формулируют сами авторы, «современные ИI-модели сканируют большой проект за минуты вместо недель». Это меняет баланс: уязвимости вскрываются быстрее, чем их успевают чинить, а сложные эксплойты становятся доступны даже непрофессионалам. Значит, и оборона обязана стать ИИ-скоростной — иначе атакующие всегда будут на шаг впереди.
Akrites не одинок. Ещё в апреле Anthropic запустила Project Glasswing: её фронтир-модель Claude Mythos в превью уже нашла тысячи серьёзных уязвимостей — в том числе в каждой крупной операционной системе и браузере. Доступ к ней получили Apple, Google, Microsoft, NVIDIA, AWS, CrowdStrike, Palo Alto Networks и Linux Foundation, а охват расширили до 150 критических организаций. Google параллельно поставила охоту за багами на ИИ-конвейер и публично предупредила: хакеры уже атакуют с помощью ИИ.
Парадокс эпохи. Та же сверхспособность, что напугала регуляторов до экспортных запретов (вспомните недавний бан на иностранный доступ к Anthropic Fable 5 и Mythos 5), теперь становится главным щитом. Вечная гонка брони и снаряда окончательно переехала в исходный код — и от того, кто в ней быстрее, зависит безопасность всего, что работает на open-source. То есть практически всего.
Все началось с того, что outline у меня перестал нормально работать в последнем ubuntu. Ну и плюс у меня в локальной сети куча разных устройств со своими протоколами и хотелось использовать прокси. Hiddify меня всем устраивал, но не понимал ssconf. Перевел его на go 1.26 и flutter SDK 3.44.4. Помимо http теперь почти полностью понимает ssconf:// - можно использовать кучу VPN.
Использую как системный прокси. Для тех, у кого XFCE (lxQt и т.д.) - в них chrome, code и т.п. не умеют правильно читать системный прокси. Надо использовать командную строку типа: all_proxy=socks5://127.0.0.1:12334 google-chrome-stable
Удобно работать на чужих машинах. Только конфиги надо не забывать чистить. Поддерживать его я конечно же не буду - но если надо что-то небольшое добавить - пишите.
Почитал каменты, ощущаю острую необходимость густо надушнить.
1. Для чего нужна SteamOS, если есть Венда?
Тут ответ неоднозначный, потому что номинально Венда делает абсолютно всё то же самое что и SteamOS, только может ещё больше, например одновременно быть и рабочей станцией, и мультимедиа-комбайном для просмотра фильмов, прослушивания и записи музыки и т.д.
И именно поэтому концепция Венды как jack of all trades проигрывает концепции операционки, заточенной под игры. И проигрывает пока что только концептуально, потому что на данный момент шанс того что игры будут болие лудьше идти под Венду - гораздо выше. Поэтому на данный момент в этом вопросе ответ однозначный: на домашних игровых ПК SteamOS это пока лишь удачный эксперимент и возможность громко послать Майкрософт нахуй. Если возникает вопрос "зачем громко посылать Майкрософт нахуй?" то это значит что ты недостаточно опытный пользователь Венды.
2. "Линукс для игр все равно дно, сколько бы протон не пилили."
Буквально лет пять назад я бы ответил точно так же, но сейчас соотношение сил уже начинает меняться. Почему? Проблемы с любыми дистрибутивами линуксов всегда возникали исключительно из-за того что занимаются этими дистрибутивами три с половиной красноглазых линуксоида, а у этих людей очень специфическое понимание того как должна работать операционка. И что важнее - специфическое понимание приоритетов разработки. Если коротко, то можно сказать что у красноглазых недостаточно ресурсов для развития, потому что всё сообщество (и так небольшое) разбито на кучки противоборствующих лагерей, каждый из которых пилит свою систему чуть ли не в одиночку.
В этом смысле поддержка серьёзной компании это огромный плюс, а заточенность SteamOS именно под игры это сам по себе ускоряющий пинок под жопу невероятной силы (в смысле развития платформы). Напомню, что Венда в своё время выехала в том числе на отличной поддержке первого Doom.
3. "Пффф, видеокарта от AMD."
С одной стороны я как геймер солидарен, с другой стороны... тут всё очень сложно. Попробую кратко насколько возможно.
Nvidia сейчас в приоритете, потому что сколько бы ни рассказывали о невероятной мощи видеокарт AMD, по факту алгоритм сглаживания (апскейлер FSR) у них - полное говно. Можно говорить что AMD выдаёт больше фпс на рубль, но по факту все современные игры рассчитаны на использование вместе с апскейлерами. Раньше казалось что вот-вот сейчас заживём и повысим все фопесы во всех играх с навороченной графикой, но потом разработчики вероломно включили апскейлеры в парадигму разработки, и какая-нибудь Gothic 1 Remake нещадно тормозит без DLSS, при этом имея уровень графики десятилетней примерно давности (утрирую, но в целом так).
Здесь ещё был запрятан ответ на вопрос о том, как человечество заживёт после открытия бесконечного источника бесплатной энергии, но этот ответ где-то потерялся.
Далее, в наше время недостаточно иметь объективно лучшие технические характеристики, важно ещё участвовать в большой политике. И тут возникает вопрос на стороне какого лагеря вы выступите? Номинально AMD это свободный софт и поддержка всяких энтузиастов вроде нашей SteamOS - эдакий "свободный Телеграм" где царит неразбериха и беспорядок, глюки и тормоза, но все чувствуют себя "свободными". Nvidia - это "МАХ", т.е. анально огороженные корпораты с закрытым софтом и бездушными проприетарными технологиями, которыми они не хотят делиться. С часто ненужными свистоперделками для прогрева гоев, кои выбрасываются на свалку истории сразу после того как из них были выдоены все деньги (PhysX, Hairworks, Flow, Turbulence, про технологию RTX даже начинать не хочу, тут нужен сайт по-болбше).
Осложняет это всё то что CEO AMD Лиза Су это двоюродная племянница CEO Nvidia Дженсена Хуанга, если вдруг не знали. Подозреваю что у них там всё очень плотно схвачено и AMD нужны как второй игрок в этой монопольной игре в одни ворота. Да, я в курсе что уже есть китайцы и Intel, это новые игроки на рынке GPU, но на данный момент они незначительны.
4. 60 фпс достаточно, 120 для задротов.
Последнее время приколистов, рассказывающих про то что человеческий глаз не видит больше 24 кадров в секунду, стало меньше, ведь появились нейросети, которые могут скомпоновать всю важную информацию так, что читать удобно даже дегенератам.
Уже много писал об этом, но повторюсь: такие разговоры возникают только у тех, кто не пробовал играть на высокой герцовке с большим фпс, на большом экране. Если вы видите человека, который утверждает что 60 фпс достаточно и больше не нужно - он просто никогда не пробовал по-другому. И варианты "да я включал, разницы не заметил" это примерно то же самое, что "да я ездил на вашем Бентли/Феррари/Ламборгини, разницы с ВАЗом не заметил".
К хорошему быстро привыкаешь. Вы готовы вот прямо сейчас играть в 15-20 фпс? Неверное, нет. Точно так же ощущается переход с каких-нибудь 180-240 фпс обратно на 60 - как лютые тормоза. Я спокойно могу ощутить разницу между 60 и 100 фпс, между 100 и 180 фпс.
И если вы вдруг подумали "да ну нафиг, вот ещё привыкну к высокой герцовке и не смогу вернуться обратно и придётся покупать сверхдорогое железо" то я вас поздравляю, вы не зря беспокоитесь, потому что именно так и происходит.
Тут есть парочка нюансов, о которых обычно никто не вспоминает: инпут лаг (отзывчивость управления) и фреймген (генерация кадров).
Не буду разводить сейчас математику, но при тридцати кадрах в секунду об отзывчивости управления не идёт речи вообще никакой. Даже 60 фпс по сравнению с 30 - уже гигантский прирост, и я напомню что до выхода PS5 у консольщиков считалось нормой иметь в ААА-игре 30 кадров. Я думаю, можно легко откопать треды, где они кричат о том что только пека-задротам нужно больше 30 кадров =) Так вот, я помню замечательный момент когда эмулировал The Legend of Zelda: Breath of the Wild на ПК, и в процессе перешёл с 30 кадров на 90-120. Божечки, какой это был славный глоток свежего воздуха! С пальцев как будто сняли кандалы и парировать всяких левров, делать бекфлипы и просто бегать по игровому миру стало в разы приятнее. Это был замечательный пример того, чего можно добиться, просто увеличив герцовку в игре с приличной экшен-составляющей.
Далее, фреймген. Фактически это ещё одна "инновация" от Nvidia, которую подхватили другие, хотя в целом технология не нова. Проблема тут в том, что раскукожив свою игру с нативных 30 кадров в 120+ ты всё равно не получишь такое же приятное и гладкое как попка младенца управление, как при нативных 120+ кадрах. Но разработчики взяли фреймген и прямо сейчас, на наших глазах, встраивают его в парадигму разработки. Поэтому условная Gothic 1 Remake прямо-таки ТРЕБУЕТ, чтобы ты включил DLSS, включил фреймген, взял флаг в руки, повесил барабан на шею... кхем, короче, начинает тебя прогревать. А изначально фреймген должен был генерировать тебе 240 кадров из твоих нативных 120, а не вот это вот всё.
Итого, как выглядит игровой процесс здорового человека: имея мощную видеокарту от Nvidia, он запускает графически тяжёлую игру, играется с настройками так, чтобы не использовать слишком жирные настройки которые почти никак не улучшают картинку, и добивается ХОТЯ БЫ 60 нативных кадров. После чего DLSS скукоживает картинку до более низких разрешений без потери качества картинки и фпс вырастает ещё. И вот теперь уже поверх этого можно намазать фреймген, который даст тебе минимум 120 кадров, которые хотя бы будут радовать твои глаза, даже если желейное управление при нативных 60 фпс не.
Важно помнить что существуют игры, где количество фопесов действительно не так важно. Например, пошаговые стратегии, медленные хорроры без стрельбы, спокойные сюжетно-ориентированные игры и множество инди-проектов. Если это не экшен с быстрым геймплеем, то 60 фпс обычно вполне достаточно и нет смысла как-то уж сильно стараться чтобы выжать больше.
Суммируя всё вышесказанное:
1. SteamOS это рабочий, многообещающий задел на будущее, но на данный момент нужен только энтузиастам.
2. Линкус вполне подходит для игр, и в данный момент боеспособен как никогда раньше, пусть и работает неидеально. Но если ты счастлив, играя на Венде, переходить на SteamOS пока нет смысла.
3. AMD или Nvidia? Решать только тебе. Лично я выбираю Nvidia, чтобы видеть лучшую картинку и иметь доступ к cutting-edge технологиям, которыми я иногда пользуюсь. Это не означает что AMD это нерабочий кусок железа.
4. Чем больше фпс - тем лучше. Но гонясь за кадрами, не забывай что фопесы это результат слаженной работы кучи разных софтово-железных механизмов под капотом твоего ПК и не единственное мерило приятного геймплея.