LINUX.ORG.RU

В Rust Coreutils выявлено 113 уязвимостей. В Ubuntu 26.04 возвращены cp, mv и rm из GNU Coreutils

 , ,


1

5

Компания Canonical опубликовала предварительные итоги внешнего аудита безопасности инструментария uutils coreutils (Rust Coreutils), написанного на языке Rust и частично применяемого в Ubuntu вместо пакета GNU Coreutils. Аудит был выполнен компанией Zellic, имеющей опыт анализа уязвимостей в проектах на языке Rust. В ходе проверки было выявлено 113 проблем с безопасностью.

В настоящее время уже доступен отчёт с результатами первого этапа аудита, охватывающего наиболее важные утилиты из набора uutils. На первом этапе, который был проведён с декабря 2025 по январь 2026 года, было выявлено 73 уязвимости, из которых 7 отмечены как критические, 11 - опасные, 29 - средней опасности и 26 - неопасные.

Информация о всех выявленных проблемах уже передана разработчикам uutils и большая часть уязвимостей была устранена в выпусках uutils 0.5-0.8 без лишней огласки.

Пакет rust-coreutils был включён по умолчанию в осеннем выпуске Ubuntu 25.10, но с учётом выявленных в ходе аудита проблем в LTS-ветке Ubuntu 26.04 возвращены утилиты cp, mv и rm из набора GNU Coreutils. Отмечается, что по состоянию на 22 апреля в данных утилитах остаётся не исправлено 8 известных состояний гонки. Остальные утилиты задействованы из выпуска rust-coreutils 0.8.0. В Ubuntu 26.10 разработчики намерены полностью перейти на rust-coreutils.

Уязвимости в системных утилитах опасны тем, что они используется в скриптах, запускаемых с правами root. Например, устранённая в выпуске uutils coreutils 0.3.0 уязвимость в утилите rm могла быть эксплуатирована при ежедневном запуске из cron скрипта /etc/cron.daily/apport, который выполняется с правами root и рекурсивно удаляет содержимое каталога /var/crash, доступного на запись всем пользователям в системе.

Среди уязвимостей, помеченных в первом отчёте критическими:

  • Уязвимость в утилите chroot, вызванная обработкой опции --userspec после вызова chroot(), но до сброса привилегий. На системах с glibc резолвинг имён через функцию getpwnam() приводит к чтению файла /etc/nsswitch.conf, применяемого в NSS (Name Service Switch), и динамической загрузке указанных в нём библиотек с модулями NSS (libnss_*.so.2). Так как до обработки NSS выполяется вызов chroot() файл /etc/nsswitch.conf загружается относительно нового корня, но NSS-библиотеки загружаются до сброса привилегий. Если пользователь имеет доступ на запись к новому корню, то он может подставить свои NSS-библиотеки и добиться выполнения кода с правами root.
  • Изменение прав доступа к файлу после сбоя создания именованного канала (FIFO) утилитой mkfifo - если указать в качестве аргумента существующий файл, то mkfifo вернёт ошибку, но при этом аварийно не завершит работу, а выполнит вызов set_permissions() и изменит права доступа к существующему файлу. С учётом umask 022 уязвимость позволяет поменять права доступа к файлу на 644 (rw-r-r-) и получить доступ к файлам, для которых не было разрешено чтение.
  • Обход ограничений --preserve-root в утилите chmod, запрещающих выполнение рекурсивных операций относительно корня ФС. Уязвимость (CVE-2026-35338) вызвана тем, что в коде проверялось только точное совпадение пути с / и не выполнялась канонизация файлового пути. Для обхода проверки достаточно использовать путь вида /../ или символическую ссылку на корень. Уязвимость опасна тем, что при возможности подставить свой путь в системный скрипт вызывающий команду chmod, можно добиться рекурсивного изменения прав доступа для всех файлов в ФС.
  • В утилите rm допускалась обработка любых сокращений опции --no-preserve-root (--n, --no, --no-p, --no-pres и т.п.) для отключения защиты от выполнение рекурсивной операции с корнем (например, можно указать rm -rf --n / и удалить по ошибке все данные. В GNU Coreutils подобные сокращённые опции запрещены.
  • Обход ограничений --preserve-root в утилите rm, запрещающих выполнение рекурсивных операций относительно корня ФС, через подстановку символической ссылки на «/».
  • Отсутствие полноценной защиты от указания каталогов, начинающихся с точки. Например, при выполнении rm -rf . утилита выведет ошибку, но при указании rm -rf ./ или rm -rf ./// молча удалит текущий каталог.
  • Ошибка в коде разбора аргументов утилиты kill позволяет отправить сигнал всем процессам в системе при указании идентификатора процесса -1 (kill -1).

>>> Источник

★★

Проверено: hobbit ()
Последнее исправление: hobbit (всего исправлений: 2)
Ответ на: комментарий от Lusine
Я захожу в класс на десять тысяч строк
Вспоминая, как раньше был глуп, растерян и одинок
И пусть learning curve была слишком полога -
Но все же я создал "класс бога".
Выходит, я бог.
thesis ★★★★★
()
Ответ на: комментарий от thesis

«Ерунда все это. Компьютер персональным быть не может. Персональными могут быть дача, автомобиль, пенсия. А знаете ли вообще, что такое компьютер? Это 100-200 кв.м. помещения, 30 человек обслуживающего персонала 20 кВт потребления и конечно 30 литров спирта ежемесячно для протирки контактов!» (с)

wandrien ★★★★
()
Ответ на: комментарий от monk

Так ты документацию с кодом посчитал.

Нет, я посчитал Codemirror на JS, который составляет большую часть Lekhas.

byko3y ★★★★★
()
Ответ на: комментарий от LightDiver

Быстрого там то, что на нем можно быстро наклепать что надо. Относительно просто и будет работать.

Я давно ищу людей, которые пояснят мне, в чём это быстро и что это у них работает. Пока что я согласился с тем, что есть смысл делать это для Astro или React Router, то есть, у тебя на беке и фронте выполняются одни и те же компоненты на JS. Если этого нет? Дык можно и на баше писать сервисы, и на хаскеле — какая разница?

byko3y ★★★★★
()
Ответ на: комментарий от thesis

Прям юниксвей, второе пришествие.

С той лишь разницей, что в 2026 уже сами юниксы уходят от «всё есть файл». А раст только открывает для себя нишу «примотать сервис сбоку синей изолентой».

byko3y ★★★★★
()
Ответ на: комментарий от Zaruba

Rust – это язык, оптимизированный для программирования с использованием нейросетей в качестве помощников

Или наоборот, по случайному совпадению получилось так, что нейросети хорошо маскируют недостатки Rust. Чтобы выйти на минимальный работоспособный уровень на питоне, нужно учиться 5 дней. Чтобы выйти на минимальный работоспособный уровень на Rust, нужно учить 5 месяцев.

На многие мои претензии поводу Rust мне часто отвечают «ты просто недостаточно осилил его». Так в этом и проблема!

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

byko3y ★★★★★
()
Ответ на: комментарий от Manhunt

То есть ты в принципе не способен отличить одну уязвимость от другой? Или у тебя в целом проблемы с пониманием текста? Тогда что ты здесь забыл? Это же технический форум всё-таки.

zabbal ★★★★☆
()
Ответ на: комментарий от Manhunt

Авторы компиляторов по факту смотрят именно в стандарт, никакой больше твёрдой опоры для трактовки кода на Си не существует

Я советую тебе на досуге почитать стандарт Си, чтобы понять, что на базе этого документа компилятор написать нельзя. Ты должен творчески подходить к вопросу, чтобы получить работоспособный продукт. Творчество разрабов GCC отличается максимальной всратостью и недружелюбности к разработчику. Потому что «я так вижу стандарт».

byko3y ★★★★★
()
Ответ на: комментарий от PunkPerson

Надолго ли?

Это написано буквально в 4м абзаце. То есть даже в таком скромном тексте ты смог осилить только 3 коротеньких абзаца - на большее тебя не хватило. И потом ты удивляешься отчего же это у тебя не выходит осилить сложные линукс-проекты.

zabbal ★★★★☆
()
Ответ на: комментарий от eao197

Если мне не изменяет склероз, Rust придумал и довел до ума OCaml-ист, причем делал он это на OCaml-е.

Я хотел об этом написать, но решил, что это не так важно, потому что всё-таки ничего он не доводил до ума. Он просто набросал первый прототип в виде фронтенда к LLVM на Ocaml, а дальше уже разработку перехватили ЛГБТ+ из Мозиллы.

byko3y ★★★★★
()
Ответ на: комментарий от thesis

Чтобы сишку закопать. Лидеры рынка тупо скинулись на убийцу сишки, вот и вся история.

И это восхитительно - чуваки оплатили ровно то что я хочу, а мне не пришлось ни копейки тратить. Ещё и развлекаюсь над пригаром недоумков у которых от этого в каждой первой новости про Rust подгорает :)

zabbal ★★★★☆
()
Ответ на: комментарий от ponchik-2

не довести до уровнях хотя бы bsd никогда и ни с каким языком

Вот тут неожиданно прав - довести линукс до такого днища как бздя не получится иначе как выкидыванием всего кода, написанного за последние 20 лет.

zabbal ★★★★☆
()
Ответ на: комментарий от firkax

так что если хоть что-то кроме -O0 стоит - надо писать -fno-strict-overflow. А ещё -fno-strict-aliasing - это ещё одна оптимизаторная чушь которую надо сразу выключать.

"-fwrapv" сильнее, чем "-fno-strict-overflow". Эти две оптимизации просто конченные мрази добавили по умолчанию в GCC. То есть, в любой новый и старый проект прописывать "-fno-strict-aliasing -fwrapv" по умолчанию — это признак хорошего тона. Да и не по умолчанию тоже хорошо прописывать.

Есть ещё "-fno-common", но это уже ситуативно.

Я в курсе, что кроме указанных двух проблемных оптимизаций имеются и другие, но разговор был про signed-баги, я про них и писал. Если надо точно отключить всю гадость - ставь -O0

Да чего-то особо неадекватного в компиляторах больше нету. Всё-таки программы с "-O0" очень медленно выполняются.

byko3y ★★★★★
()
Ответ на: комментарий от X512

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

Если бы в Си были удобные инструменты для работы со строками известной длины, то примерно половина всех UB сразу бы отваливалась. Потому что добрая половина повреждений памяти в Си связана с нуль-терминированными строками — это абсолютный чемпион в плане «самая всратая фича языка».

Причём, абсурд заключается в том, что эти строки даже не быстрее в обработке — они медленее, например, при конкатенации.

Нужно ли для исправления этой проблемы создавать ЯП, в котором 2/3 строк — это вспомогательные объявления типов/сигнатур?

byko3y ★★★★★
()
Ответ на: комментарий от Ygor

Так что программистами равной квалификации программа на Rust будет написана с меньшим количеством критических ошибок, чем на на Си.

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

Ну я согласен с ним в том плане, что ЯП хуже Си нужно ещё поискать. То есть, Rust хоть и сложен, но он наконец-то избавился от вековых проклятий Си. И это причина, почему люди пытаются переходить на всякие там Zig — потому что многим людям не нужен Rust-маразм, им нужно просто избавиться от проблем Си.

То есть, вопрос многофакторны и не однозначный, хотя в среднем по больнице он прав и программы на Rust надёжнее. Но Rust всё равно говнище.

byko3y ★★★★★
()
Ответ на: комментарий от wandrien

Экосистемно Раст это новый JS. При чём в варианте экосистемы node js.

Очень размытое описание, здесь стоило бы пояснить для людей, которые плохо знакомы с деталями, потому что могут быть недоразумения.

Да, Cargo повторил модель NPM. Со всеми проблемами NPM, как то: простота добавления зависимостей приводит к безответственности, в проект беспорядочно тащатся зависимости, десять версий serde, всякие там двухстрочные ящики аля leftpad, неаудированный код с unsafe уязвимостями, и прочий треш. То есть, всё то, что происходит в NPM уже 10+ лет, где hello world на Vue требует скачать 200 зависимостей на 300 Мб. С каждым годом ситуация хуже, и в NPM, и в Cargo.

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

byko3y ★★★★★
()
Ответ на: комментарий от LightDiver

Слушай, ты же профессиональный программист? На зарплате? А можно узнать что ты пилил? В каких объемах в какой срок? Как часто возвращался к коду своему?

Да может кодер он и норм, но собеседник неадекватный.

byko3y ★★★★★
()
Ответ на: комментарий от enep

Rust - Ты же должен был бородся с уязвивомастими

Ты вроде тоже должен был за школу правописание освоить. Хотя в отличии от тебя у Rust как раз получилось: ни одной уязвимости, показывающей нарушение гарантий безопасности Rust, в этом отчёте нет. Отличный результат.

zabbal ★★★★☆
()
Ответ на: комментарий от Ygor

ошибки одного класса заменяются на другой класс ошибок

Это полная чушь - все перечисленные ошибки встречаются в коде на С. А вот ошибок в работе с памятью от которых страхует Rust - ожидаемо не выявлено ни одной.

zabbal ★★★★☆
()
Ответ на: комментарий от BceM_IIpuBeT

Да, да, прохладные истории... У меня есть Стим Дек, я лучше знаю. А еще скоро зарелизят Стим Машину(GabeBox), 5% за пару лет может превратится и в 25%. Что тогда будешь чирикать?

Вот я ставлю в Steam недавно вышедшую Pragmata ­- а она не работает. На Steam Deck якобы работает, но больше это ничего не гарантирует. Проблема в том, что Linux — это конструктор, а не готовый продукт. Вот мак — это готовый продукт. Steam Deck — готовый продукт.

Так-то чисто теоретически Android — это тоже «Linux».

byko3y ★★★★★
()
Ответ на: комментарий от LightDiver

У меня проекты некоторые уже по 85+ тысяч строк, разрабатываемые последние три года на разрых этапах понимания программирования...
Если ты можешь вспомнить все свои проекты, все сущности среди десятков и сотен тысяч строк кода, то я тебе просто завидую.

LOL, у меня первая коммерческая разрботка была на лям строк только нашего собственного кода, даже без сторонних библиотек. Я никогда в принципе не знал, как оно целиком работает.

byko3y ★★★★★
()
Ответ на: комментарий от DrRulez

Раст - претендует на звание системного языка программирования!

Они им и является: на нём уже модули ядра пишут.

Раст - не альтернатива Си.

Сколько не говори халва - слаще не станет. Rust это идеальная альтернатива С: его изначально именно под эту задачу и проектировали.

Ну давайте тогда - ассемблер запретим

Считай что уже - попробуй притащить в любой проект на С\С++ код на ассемблере, делающий что-то большее чем оптимизация конкретной функции под конкретную архитектуру и удивись как быстро и далеко ты пойдёшь.

zabbal ★★★★☆
()
Ответ на: комментарий от byko3y

Почему недостатки С исправляет раст, зиг, а не с++? Вполне адекватный язык для программирования со стандартом, а не маргинальщина всякая.

Lusine
()
Ответ на: комментарий от Set440

Нам будет лучше, если таких «Пользователей» будет как можно меньше.

Ну продвижению systemd я и так уже способствую, в том числе и коммитами в FOSS проекты. Но если можно сделать что-то чтобы таким как ты стало хуже - непременно дай знать.

zabbal ★★★★☆
()
Ответ на: комментарий от LightDiver

Я до такой степене просветления не добрался. У меня проекты некоторые уже по 85+ тысяч строк, разрабатываемые последние три года на разрых этапах понимания программирования. И чтобы многое вспомнить и понять, надо долго вчитываться в код ходить по файлам, восстанавливать цепочки событий.

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

Другое дело, если ты сказал нейронке - сделай красиво и не смотрел, так не удивительно что ты не помнишь

pihter ★★★★★
()
Ответ на: комментарий от LightDiver

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

Это не так работает: код строится не абы как, он разбивается на логичные подзадачи с логичным поведением и названиями. Это не линейное дело, это - дерево, где каждый отросток логичное продолжение своей ветки. Открой код ssh или rsync. Мне как-то приходилось править их, так там за час понятно что к чему, потому что все просто и логично

pihter ★★★★★
()
Ответ на: комментарий от Lusine

Почему недостатки С исправляет раст, зиг, а не с++? Вполне адекватный язык для программирования со стандартом, а не маргинальщина всякая.

Потому что C++ by design включает в себя весь Си со всеми его недостатками. И нет, другим он быть не мог, потому что это любимое занятие менеджеров «поменять всё не меняя ничего и не отвечая ни за что».

byko3y ★★★★★
()
Ответ на: комментарий от pihter

Если ты эти 85 тыщ реально писал, то ето годы работы.

Я не помнимаю, вы когда-нибудь работали в проектах, которые пишут более одного человека? 85 тыщ строк — это годик работы команды.

byko3y ★★★★★
()
Ответ на: комментарий от Lusine

Почему недостатки С исправляет раст, зиг, а не с++?

Ему даже название сделали максимально отвечающее на твой вопрос. Неужели ты настолько тугой что даже это не помогло?

zabbal ★★★★☆
()
Ответ на: комментарий от LightDiver

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

Класс на 10 тысяч строк это что? Чем он занимается? Ты его прямо писал? Как-то не верится что ты в муках родил 10 тысяч строк и не помнишь потом про что там. Я даже школьные спои проекты сморю, так я по названию «папок» помню про что там, а 30 лет прошло

А прикинь как Торвальдсу? Скока строк в Линуксе?

pihter ★★★★★
()
Ответ на: комментарий от byko3y

но собеседник неадекватный

Нечего на зеркало пенять, коли рожа крива.

liksys ★★★★
()
Ответ на: комментарий от byko3y

Тебя не заставляют использовать С. Используй абстракции из std. Чего там тебе не хвататает, что нужно использовать С?

Lusine
()
Ответ на: комментарий от pihter

Никто не пишет код набирая, пальчиком буковки в редакторе. Берешь готовое с гитхаба или с мавен-централа и конфигурируешь. Месяц работы - 100 тыс. строк.

Lusine
()
Ответ на: комментарий от BceM_IIpuBeT

Давай так, если у меня с первого раза на NixOS заработает, то ты выкладываешь пароль?

LOL, с чего бы это? Я в какой-то фразе пытался сказать «всего не работает на линуксе»? Я понятия не имею, где игра работае ти где не работает, я тебе пишу факт — у меня не работает. Совсем, ни с какими параметрами запуска.

byko3y ★★★★★
()
Ответ на: комментарий от pihter

А каково ему? Он сам код давно не пишет явно. Просто координатор. Я не знаю в чем его работа сейчас заключается. Скорее всего он просто говорящая голова от корпорации.

https://github.com/Vladgobelen/

Все что я в муках родил, тут. 37 репозитариев. Последние 3 года я пишу плюс минус 24/7 что то. Как год назад появились ИИшки, стало кое в чем гораздо проще - хотя бы с поиском документации, автоматизацией поиска по коду и в целом с автоматизацией.

И да, я не программист. Может у вас склад ума какой то другой и вы все весегда помните - я нихрена не помню.

Особенно пока не понимал что такое ООП - не мог оформить чисто структурно код это был ад. Оформлял так, как было проще в моем понимании, а это каждая функциональность распределена на несколько файлов, каждый файл от 30 до 15 тысяч строк. И вот надо тебе сдалать ачивку или квест, и пошагово начинаешь прослеживать логический путь между файлами, между клиентом и сервером. Шажок за шажком. И таких квестов десятки, проекты идут параллельно один за другим.

С ООП все упростилось на несколько порядков. Это магия просто.

LightDiver ★★★★★
()
Ответ на: комментарий от liksys

Красивое. Ну, видимо этим и отличается программист от непрограммиста. У тебя гитхабу только 16 лет, а я программировать начал 3 года назад почти с нуля. И каждую концепцию познаю сам методом тыка.

LightDiver ★★★★★
()
Ответ на: комментарий от LightDiver

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

liksys ★★★★
()
Ответ на: комментарий от byko3y

Если ты эти 85 тыщ реально писал, то ето годы работы.

Я не помнимаю, вы когда-нибудь работали в проектах, которые пишут более одного человека? 85 тыщ строк — это годик работы команды

Во-первых, юзернейм говорил про свой код. Во-вторых, за год ты и общих усилий 85 тыщ прочухаешь, если ними работать, инфа 146%

pihter ★★★★★
()
Ответ на: комментарий от pihter

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

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

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

До прихода ИИшек приходлось иногда месяцами копаться в устаревшей документации, которая описывает больше 10 различных версий игры, искать - а какое АПИ вообще актуально, какое нет. Какие возможности существуют для твоей задачи. Чаще всего это все было костыльно и неоптимально и работало через жопу. С ИИшкой просто просишь показать какие существуют возможности для такой то задачи. Какие сущестуют функции апи для такой то задачи. Смотришь, выбираешь нужное. И там где ты просто месяц искал необходимое, ты за полчаса знаешь все, что тебе надо. Можешь потестить все что тебе надо и выбрать.

LightDiver ★★★★★
()
Ответ на: комментарий от liksys

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

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

byko3y ★★★★★
()
Ответ на: комментарий от Lusine

Никто не пишет код набирая, пальчиком буковки в редакторе

Это откуда такая информация? :)

pihter ★★★★★
()
Ответ на: комментарий от pihter

Во-первых, юзернейм говорил про свой код. Во-вторых, за год ты и общих усилий 85 тыщ прочухаешь, если ними работать, инфа 146%

Если интенсивно работать — да. Если сделать паузу — можно с удивлением обнаруживать для себя что-то новое спустя полгода-год.

byko3y ★★★★★
()
Ответ на: комментарий от LightDiver

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

ИИ распознаёт типовые паттерны. Структурированность-неструктурированность ему безразлично, у него другие проблемы и другие ограничения. Как раз логические цепочки ИИ очень плохо отслеживает, с каждым шагом вероятность ошибки/галлюцинации возрастает на порядок.

byko3y ★★★★★
()
Ответ на: комментарий от pihter

Да! Это 3 года кодинга 24/7. Вот за последние сутки, пока я с вами тут болтаю, я сделал форум внутреигровой для вовки:

https://ns.fiber-gate.ru/uploads/images/img_1777135153686_f1d25666.png

Клиент-серверная архитектура. Система прав, анимации, которых в этой версии игры еще нету. Реакции. Последние 10 часов пытаюсь как раз справиться с анимациями и синхронизировать все это.

Представь - ты можешь передать с сервера и на сервер только 255 байт. Кириллица 2 байта. При передаче 30 сообщений разом тебя выбьет с проекта, поэтому если ты пошлешь вон ту тему выше на скрине сразу 2-3 игрокам, все сломается.

И вот пока я этот форум пилю - да, я понимаю что где. Но таких «форумов» у меня десятки только в рамках одного гильдейского проекта. Это квсты, форумы, упрощения игры. Классы на 300-10000 тысяч строк только в рамках одного проекта. А их я пилю параллельно несколько.

Я не понимаю как вы физически способы все это запоминать. Я так не могу.

Параллельно провожу рефакторинг войс чата с переносом его с js на ts. 1 мегабайт сырого кода. Где то 6 тысяч строк кода сервера и тысяч 10 строк кода клиента. Плюс электрон клиент, плюс модули на раст для управления и удобства.

Параллельно пилю запросы от гильдии мелкие проектики на 30-1000 строк кода мимоходом. Как с этим проклятым форумом. Хотел сделать простейшее для хранения и обмена информации для гильдии. Делов на 15 минут - вошел и вышел. А в итоге одно за другое и вожусь уже больше суток.

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

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

LightDiver ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.