Задать вопрос
  • Как "правильно" моделировать мелкие детали на объектах?

    Kentavr16
    @Kentavr16
    long cold winter
    По логике следует избегать ненужных полигонов - меньше нагрузка на ПК игрока. Во взятом тобой примере нет большой разницы, но если таких объектов на сцене сотни, то можно получить ощутимую разницу в нагрузке. Вот если твоя бочка должна распадаться при взрыве к примеру, то ее деление оправдано. Но просто так добавлять грани - зачем?
    Ответ написан
    Комментировать
  • Почему не навешиваются стили на root?

    Kentavr16
    @Kentavr16
    long cold winter
    Можешь стилизовать index.html - инлайново или в теге скрипт должно сработать. Но стоит понимать что корневой компонент приложения - это не про стили и отображение. Это про точку рендеринга, скорее логику. Потому советую его вообще не трогать. Точно так же ширину в сто процентов можно задать основному компоненту, в который ты собираешь приложение (App)
    Ответ написан
  • Как сделать раскрытие подменю js?

    Kentavr16
    @Kentavr16
    long cold winter
    menuLink.addEventListener("click", function (e) {
                    e.stopPropagation(); // замени preventDefault на это
                    menuLink.classList.toggle("_active");
                });

    Код жесть конечно.
    Помогло - отметь решением.
    Ответ написан
  • Как делать такие сложные анимации?

    Kentavr16
    @Kentavr16
    long cold winter
    Два основных варианта - animation-timeline или скрипты. Из минусов анимейшн-таймлайн - относительно слабая поддержка браузерами. Когда я смотрел последний раз было около 65 процентов. Мозила не поддерживает принципиально. Скрипты - это множество библиотек, вот пара примеров. Можно еще руками написать, если знания позволяют.
    Ответ написан
    Комментировать
  • Как связаны между собой сервер node.js и фронтенд react?

    Kentavr16
    @Kentavr16
    long cold winter
    правильно ли я понимаю, что на этапе продакшена мы должны подключаться только к одному порту, на котором находится сервер, а он отправит html, css, js файлы при первом запросе на главную страницу а в дальнейшем будет отправлять JSON?
    В зависимости от настроек сервера и архитектуры твоего проекта. Экспресс может как отдавать хтмл/css,так и служить для обмена данными бека с фронтом(апи). Во втором случае за раздачу хтмл может отвечать какой-либо популярный веб-сервер, nginx/apache.
    при использовании npm run build я получаю папку build, где много css и js файлов. Как эту папку надо связать с node.js

    Никак. На стадии билда участие ноды в проекте заканчивается (в случае с фронтом, естественно. Если у тебя сам сервер, бекенд на ноде, то там нужно запускать это дело на хосте). Ты размещаешь свой код на веб-сервере, который его раздает в дальнейшем клиентам.
    Допустим мы при первом запросе на сервер отправляем HTML файл. Но как клиент получит нужный ему css и js файл из кучи в папке build.
    все как в обычном html. Есть точка входа в виде хтмл-файла, к которой твой билдер уже привязал все стили/скрипты. Все это отдается клиенту.
    Это базовый сценарий. Есть другие способы, такие как SSR например. Но это уже другая история.
    Ответ написан
    Комментировать
  • Локальная дата и время?

    Kentavr16
    @Kentavr16
    long cold winter
    Я состряпал для этого функцию. Можно настроить формат как тебе удобно.

    А метод о котором ты говоришь к твоему примеру уже не применим. Так как после toISOString() в dt лежит не объект Date, а строка, которую ты далее изменяешь методами для строк
    . Есть ряд методов которые приводят к локальному времени, но если тебе нужен именно определенный формат с определенными знаками, то ее результат также нужно "допиливать". Мне проще было для этого выделить функцию.
    Ответ написан
  • Как сохранить результат функции в отдельную переменную?

    Kentavr16
    @Kentavr16
    long cold winter
    ответ здесь. Даже с примером по твоему вопросу.
    Проблема в том что ты пытаешься получить асинхронное значение в синхронном коде. Это не будет работать. Почитай про промисы и колбеки в контексте асинхронности джаваскрипт. Будет куда полезнее за строчку кода в ответе на твой вопрос.
    Ответ написан
    Комментировать
  • Задать первому input checked?

    Kentavr16
    @Kentavr16
    long cold winter
    Написать checked в конце хтмл каждого инпута
    Ответ написан
  • Какая причина неправильного отображения разрешения на втором мониторе?

    Kentavr16
    @Kentavr16 Автор вопроса
    long cold winter
    Сам спросил - сам ответил. Продолжая эксперименты, обнаружил что при плохо работающем дисплее в меню "частота обновления" появляется пункт 60,020 Гц(по умолчанию 60 Гц). При выборе этой опции изображение приходит в норму, а из менюшки выбора частоты обновления экрана опция 60Гц просто исчезает. Вместо нее становится 60,020 Гц. И все работает - ровно до тех пор пока не покрутить изображение. Снова устанавливается 60Гц, снова полосы по бокам. Выглядит как баг то ли видеокарты, то ли операционки, то ли их сочетания.
    Ответ написан
    1 комментарий
  • Как подождать, пока будет подключена База данных?

    Kentavr16
    @Kentavr16
    long cold winter
    можно использовать что-то вроде
    import express from "express";
    
    const app = express();
    const ip = "localhost";
    const port = 4000;
    
    app.get("/", (req, res) => {
      res.send("some response");
    });
    
    function startServer() {
      app.listen(port, ip, () => {
        console.log(`Сервер запущен на адресе ${ip} и порту ${port}`);
      });
    }
    
    async function connectToDatabase() {
      return new Promise((resolve, reject) => {
        setTimeout(() => resolve("ok"), 2000);
      });
    }
    
    connectToDatabase()
      .then(() => {
        startServer();
        console.log("Успешное подключение к базе данных.");
      })
      .catch((err) => {
        console.error("Не удалось подключиться к базе данных:", err);
      });

    где для коннекта к бд использовать промис
    export function connectToDatabase() {
        return new Promise((resolve, reject) => {
            pool.connect((err, client, release) => {
                if (err) {
                    console.error('Ошибка в запросе к БД (1)', err.stack);
                    release();
                    reject(err);
                    return;
                }
    
                client.query('SELECT NOW()', (err, result) => {
                    release();
                    if (err) {
                        console.error('Ошибка в запросе к БД (2)', err.stack);
                        reject(err);
                        return;
                    }
    
                    console.log('\x1b[34m%s\x1b[0m', `PostgreSQL is running (${result.rows[0].now})`);
                    resolve(pool);
                });
            });
        });
    }

    Ну и пул объявить не забыть. Хз, с обычным промисом который в первом примере, работает окей, почему с подключением к бд будет иначе? Для эксперимента ставить pg неохота. Вполне возможно что я что-то проглядел, поправьте, с серверами на ноде давно не имел дела.
    Ответ написан
    Комментировать
  • Как хранить файлы в связке react -express mongo?

    Kentavr16
    @Kentavr16 Автор вопроса
    long cold winter
    Собственно в бд и хранить. На момент написания вопроса не понимал основ БД.
    Ответ написан
    Комментировать
  • Как заставить реакт правильно обновить компоненты?

    Kentavr16
    @Kentavr16 Автор вопроса
    long cold winter
    вытяжка из комментария -
    Best practice - спрятать токен в httpOnly куке, чтоб js не мог его прочесть и авторизовываться просто через куку в хеадере запроса.
    Можно вот тут почитать, к примеру https://habr.com/ru/company/ruvds/blog/512866/ (обратите внимание на комментарии)
    В любом случае Вам необходимо завести через реакт контекст (к примеру) стор, доступный в любом месте приложения. Оборачиваете всё приложение в контекст провайдер, на первой странице (или при загрузке приложения) запрашиваете какие-либо данные с бэка (данные пользователя например, если авторизация через куку, либо получаете jwt-токен в ответ на ввод логина) сохраняете в переменную в контексте (isAuth например), а в целевом компоненте навигации используете эту переменную как условие выводить одно или другое. Можно вызывать useEffect(() => {какой-то код},[имя переменной]), который будет дергаться только когда "имя переменной" обновится...
    Ответ написан
    Комментировать
  • Как перерендерить компонент при добавлении токена в localStorage?

    Kentavr16
    @Kentavr16 Автор вопроса
    long cold winter
    Отвечу сам себе - используя параметры УРЛ, контекст или редакс.
    Ответ написан
    Комментировать
  • Возможно ли вращать див вокруг уже вращающегося дива при помощи чистого css?

    Kentavr16
    @Kentavr16 Автор вопроса
    long cold winter
    Можно. Ответ с примером в комментариях.
    Ответ написан
    Комментировать
  • Применимы ли в реальном мире фронтенда порождающие паттерны программирования?

    Kentavr16
    @Kentavr16 Автор вопроса
    long cold winter
    Выбирая самое на мой взгляд существенное из комментариев -
    Применимы, но очень ограниченно, и смотря какой фреймворк используется у vue 3 и react кажется с 18 версии более удобно использовать хуки, превращать их в фабрики на мой взгляд бессмысленно лучше упороться в архитектуру разделенную на слои. Последний раз когда писал код подобными паттернами, была обертка над axios


    Ознакомление на начальном этапе своего пути как разработчика нужно для расширения кругозора. Прямой-прямой взаимосвязи между общими описанными паттернами и веб-разработкой(в данном случае фронтом) скорее нет чем есть, если не брать во внимание частности.
    Ответ написан
    Комментировать
  • Как реализовать плавную смену фонового рисунка в firefox?

    Kentavr16
    @Kentavr16 Автор вопроса
    long cold winter
    На момент написания вопроса ответ - никак. Нужно искать свое костыльное решение.
    Ответ написан
    Комментировать
  • В чем проблема подключения политики безопасности?

    Kentavr16
    @Kentavr16 Автор вопроса
    long cold winter
    Неправильное применение политик. Немного более развернутое объяснение в комментариях к вопросу.
    Ответ написан
    Комментировать
  • Почему в примере дублируются строки инициализации полей класса?

    Kentavr16
    @Kentavr16 Автор вопроса
    long cold winter
    Практического применения/причины такого синтаксиса не нашел. Скорее всего это просто "я так вижу" автора книги.
    Ответ написан
    Комментировать
  • Есть ли более изящные способы типизировать диапазон number?

    Kentavr16
    @Kentavr16 Автор вопроса
    long cold winter
    В общем, резюмируя переписку в комментариях - сколько-нибудь легко применимого способа такой типизации тайпскрипт на момент создания вопроса не предоставляет. Интересный (и мало того - работающий) вариант такой функциональности можно посмотреть в комментариях, спасибо Alexandroppolus за остроумную реализацию.
    Ответ написан
    Комментировать
  • Почему компонент не видит диспатч в redux/toolkit?

    Kentavr16
    @Kentavr16 Автор вопроса
    long cold winter
    Глупая ошибка - я просто не импортировал функцию которую нужно передавать в диспатч.
    Ответ написан
    Комментировать