Задать вопрос
  • Как сделать border-radius для тэга figure?

    neuotq
    @neuotq
    Прокрастинация
    Для figure - position: relative, для figcaption position: absolute;
    А дальше уже под себя настраиваете. Как отправная точно пойдёт.
    Ответ написан
    4 комментария
  • Почему при нажатии на таймер он не останавливается?

    neuotq
    @neuotq
    Прокрастинация
    Вы перезаписываете this.interval каждый раз при создании нового, а значит при остановке очищается последний созданный интервал.
    При вашей архитектуре выходит нужно хранить айди интервала в самом объекте-стейте пункта, так же как и время.
    Типа такого(сама идея, если нужно под себя доработайте):
    if(!oldItem.time){
            const IntervalId = setInterval(() => {
          
              if (oldItem.sec < 59) {
                oldItem.sec++;
              } else {
                oldItem.sec = 0;
                oldItem.min++;
              }
        
              this.setState(({ todo }) =>{
                const newItem = {...oldItem,
                  min: oldItem.min,
                  sec: oldItem.sec,
                  time: true,
                  intervalId: intervalId
                  }
                  const newstate = [
                    ...todo.slice(0,xid),
                    newItem,
                    ...todo.slice(xid + 1)
                  ]
                  return {
                    todo: newstate
                  }
              });
            }, 1000);
          }

    Ну и потом сбрасывать тоже из айдишника интервала который внутри объекта хранится.
    Ответ написан
    1 комментарий
  • Как обновлять дочерние элементы которые принимают значение функции?

    neuotq
    @neuotq
    Прокрастинация
    У вас бак в хуке следующий:
    в useEffect вы реагируете на смену языка, и задаёте новый texts. НО в useCallback у вас в зависимостях тоже language, в результате после смены texts он уже не отрабатывает. Замените в useCallback зависимость на texts.
    PS если это не в рамках обучения, то не советую писать свой инструмент для локализации сайта, лучше возьмите готовый, например i18n
    PPS для подсказки в таких багах пусть и ненадёжно, но полезно использовать нейронные сети, к примеру chatgpt в целом хорошо расписывает если дать ему код вашего Хука и попросить найти баг, только что проверил даёт неплохие подсказки для начала. НО помните, что без опыта с нейронками легко выстрелить себе в ногу, тк не заметите где она там напридумывала всякую дичь.
    Ответ написан
    3 комментария
  • Как стать Middle и т.д в Gamedev Unity?

    neuotq
    @neuotq
    Прокрастинация
    Изучил библиотеки научился программировать - джун
    Научился работать в команде, ответственность, исполнительность, поработал за деньги программистом - миддл
    Берешь на себя ответсвенность, самостоятельно решаешь и закрываешь задачи, и тп и тд - сеньёр помидор.
    Так что, чтобы стать миддлом вам нужен коммерческий опыт разработки, желательно закрыть пару проектов/сложных вех/фич в команде.
    Ответ написан
  • Почему при подключении k4 телевизора LG OLED42C4RLA к Mini-PC Intel i7-1165G7 с iGPU Intel Iris Xe Graphics (96EU) по HDMI2.0 частота только 30Hz?

    neuotq
    @neuotq
    Прокрастинация
    По HDMI 2 - не выйдет 60 Гц на 4к телевизоре, формально пропускной способности хватает, но эффективная не дотягивает.
    Вот таблица с примерами расчётов: https://www.intel.com/content/www/us/en/support/ar...
    Вам нужно попробовать найти хороший адаптер/кабель DP -> HDMI 2.1, с поддержкой высокоскоростного соединения. Конкретную модель не подскажу, отмечу только что в продаже очень много дешевых который как раз так и тянут только 4k@30Hz. Поэтому при покупке адаптера отдельно именно на этот момент обратите внимание.
    Ответ написан
    3 комментария
  • Как предотвратить работу onBlur?

    neuotq
    @neuotq
    Прокрастинация
    Функция конечно перегружена, я бы её немного декомпозировал(но ладно, отдельная проблема).
    Как минимум я вижу что не убираются слушатели событий, то точно нужны(перед добавлением)
    те, возможно баг как раз в этом:
    inputElement.removeEventListener("keydown", ...);
     inputElement.removeEventListener("blur", ...);

    И там лучше передать созданные функции типа handleKeydown/handleBlur

    И еще нормально выделить гарды на проверку данных, те что
    if (query.length < 3) {
        return;
      }
    и другие
    например с инпутом сразу:
    if (!inputElement) return;
    Короче пройтись, чтобы легче читалось и понимать что происходит.
    Точнее сказать сразу сложно, без живой отладки. Если выгрузите где-то, будет понятнее.
    Ответ написан
  • Cypress "syntax error, unrecognized expression". Что за ошибка и как решить?

    neuotq
    @neuotq
    Прокрастинация
    cy.get - уже обертка над функцией с селектором к DOM дереву, поэтому параметром туда нужно ваш селектор.
    cy.get('.content .container-fluid .d-flex .cursor-pointer')
    Ответ написан
    Комментировать
  • Как обойти DOM дерево с поиском нужно класса на JS?

    neuotq
    @neuotq
    Прокрастинация
    Алгоритм:
    0. В любом случае есть родительский контейнер, поэтому работаешь от него. Лучше чтобы у него был id, тогда при работе функции отслеживания ты сможешь её запускать с нужным айди, она будет универсально и поддерживать множество независимых подобных контейнеров с этим меню.
    1. По клику ищешь текущий isActive (с учетом специфичности родительского контейнера) и снимаешь все активные.
    2. Делаешь кликнутый активным.

    Условный пример. Не продашн рэди) Но смысл ясен.

    Ответ написан
    Комментировать
  • Причины проблем Hydration Nuxt3?

    neuotq
    @neuotq
    Прокрастинация
    Простой и скорее всего верный вариант отключить SSR для защищенных роутов в настройках
    https://nuxt.com/docs/guide/concepts/rendering#hyb...
    Ответ написан
  • Habr.com где посмотреть авторов?

    neuotq
    @neuotq
    Прокрастинация
    Попробуйте в гугл запрос вроде habr.com/ru/ "users/" site:habr.com или поиграйтесь с api.
    Там и там есть свои и общие минусы конечно. Но при желании достичь цели можно.
    Ответ написан
  • Возможно ли получить тип пропсов у child?

    neuotq
    @neuotq
    Прокрастинация
    Немного не ясно что вы хотите, вот это получать?
    type ReturnElementProps<T> = T extends React.ReactElement<infer P> ? P : never;
    
    type FormItemProps<
      C extends React.ReactElement,
      P extends ReturnElementProps<C>
    > = {
      getValueFromEvent: (...args: Parameters<P["onChange"]>) => void;
      children: C;
    };
    
    const FormItem = <
      C extends React.ReactElement,
      P extends ReturnElementProps<C>
    >(
      props: FormItemProps<C, P>
    ) => {
      // из пропсов вашего компонента берём дочерний элемент
      const { children } = props;
      // из пропсов дочернего берем onChange
      const { onChange } = children.props;
      //тест
      console.log("Child onChange cb", onChange.toString());
      return children;
    };
    
    export default function App() {
      return (
        <div className="App">      
          <FormItem getValueFromEvent={(event) => event}>
            <input onChange={(e) => console.log("Children e", e.target.value)} />
          </FormItem>
        </div>
      );
    }
    Ответ написан
    4 комментария
  • Laravel + Inertia. Как настроить формат JSON?

    neuotq
    @neuotq
    Прокрастинация
    Inertia конечно же не избавляет от процесса рендера на клиенте, эта библиотека убирает не нужную(там где она не нужна) возню и прослойку в виде api, позволяя строить номодный фронтенд в прямой связи с классическим бекендом. Если вам нужен серверный рендер, то такая опция есть, но нужно будет ставить и настраивать SSR и node на сервере. После этого частично рендер будет происходить на сервере(по аналогии как это в фреймвораках типа Nuxt/Next).
    Либо же взглянуть на совсем иной подход в виде Livewire, где мы получаем ту же "реактивность" и прочее, но обмен данными уже идет в виде блоков html. Что кстати более логично если мы строим приложение вокруг веба, без разделения на API/бэкенд - фронтенд. Как бы апгрейд классического подхода, зачастую имееющий МНОГО плюсов, если не собираетесь строить сильный API, кучу разных приложений для него и тп. А всё будет вокруг веба.
    Ответ написан
    Комментировать
  • Как убрать лишний "мусор" при всталвке из word в CKeditor 5?

    neuotq
    @neuotq
    Прокрастинация
    Для этого используйте фичу по вставке из офиса.
    https://ckeditor.com/docs/ckeditor5/latest/feature...

    Добавить в плагины:
    //****
     // CKEditor
        ClassicEditor.create($('#data')[0], {
            htmlSupport: { allow: htmlSupport },
            removePlugins: [ 'Link', 'SourceEditing' ],
            plugins: [ PasteFromOffice],
            fontSize: { options: [ 8, 10, 12, 14, 18, 20, 24, 28, 36 ] },
        })
        .then(editor => {
            CKEditor = { field: 'data', data : editor };
        })
        .catch(error => {
            console.error(error);
        });
    Ответ написан
    Комментировать
  • Как исправить Ошибки при ajax запросов в vk api?

    neuotq
    @neuotq
    Прокрастинация
    dataType: 'JSONP' - почему JSONP? Удалить или заменить на json. Так же там может вылетать ответ с лимитом обращений к api.
    Ответ написан
  • Как определить грань межу использованием nuxt и использованием привычных решений вроде express для backend-части?

    neuotq
    @neuotq
    Прокрастинация
    Изначально nuxtjs(и его вдохновитель nextjs) - фреймворки, которые представляют собой готовый рецепт и набор правил для построения приложений на библиотеке Vue.js или React. Хотя можно обойтись без них и строить приложения как душе угодно, но удобнее иметь набор правил в сообществе и в команде. В процессе разработки фронтенд-приложений постепенно появляется необходимость в различных оптимизациях, в том числе в скорости и SEO, поэтому активно развивается бэкэнд для фронтенда. Он используется в основном для дополнительного кеширования и рендеринга на стороне сервера.

    Конечно, вы можете подключаться к базе данных для получения информации. Для этого есть специализированные плагины и практики(можно прям гуглить nuxt 3 mysql). В целом, у вас есть доступ ко всем возможностям Node.js, так что всё в ваших руках. Чаще всего используются какие-либо ORM (Object-Relational Mapping), которые облегчают доступ к БД, убирая рутину на себя и предоставляя удобный доступ к данным. Например, Prisma.

    В целом, обычно в Nuxt.js и подобных фреймворках напрямую с БД не работают, так как это ломает классическую архитектуру подобных приложений с разделением логики, масштабирования и т.п. Так что даже если на бэкенде Node.js, то это отдельные независимые сервисы, которые предоставляют каким-либо образом доступ к подготовленным данным из БД (например через REST API), а уже приложение на Next.js обращается к нему и в своей бэкенд-части и через браузер.

    Резюмируя: Nuxt - для отображения интерфейса/фронтенда, даже при использовании рендринга на стороне сервера, получение обновление данных через API(REST/GraphQL/... ).
    Express/Nest(что угодно другое бэкэндерское) - ядро бизнес логики, обработка данных, работа с БД, постороение API и тп.
    Это если кратко, а так гуглите про архитектуру приложений, информации море, тема обширная.
    Ответ написан
    1 комментарий
  • Я тут таймер сделал, но почему то когда я переключаю окно на что-то другое, таймер останавливается. В чем проблема?

    neuotq
    @neuotq
    Прокрастинация
    Так задумано. Неактивные вкладки имеют низкий приоритет, поэтому там не гарантируется исполнение в риалтайме js.
    Выход переписать например на webworker.
    В целом тема обширная, можешь гуглить JavaScript inactive tabs
    Ответ написан
    1 комментарий
  • Как после исполнения команды `Fetch origin` в `GitHub Desktop` вернуть локальные изменения в GitHub?

    neuotq
    @neuotq
    Прокрастинация
    Команда git fetch просто скачивает изменения, не применяя их. А вот git pull делает fetch, а затем уже rebase/merge.
    Поэтому если вы сделали просто fetch, то не должны были потерять ваши локальные незакомиченные изменения.
    Короче говоря, всё должно было сохраниться. Если только выполнилась команда fetch.
    Ответ написан
  • Как запретить сжатие блока по ширине при фиксированном позиционировании?

    neuotq
    @neuotq
    Прокрастинация
    Ну так у вас ширина bonus_window не задана его, те фактически блок на всю доступную ему ширину. Ширину уменьшается, блок соответственно тоже будет сжиматься.
    Делайте ему жесткие размеры ширины bonus_window, можно даже добавить и ключи по media queries для разных размеров экрана.
    Ну и лучше позиционировать по правому краю, чтобы не заходил блок за пределы экрана, либо тогда учитывать это в тех же media queries, зная под какую ширину экрана, какой размер блока(и конечно же внутренних элементов) вас устроит.
    Ответ написан
    Комментировать
  • Как отключить скролл страници при фокусе определенного элемента?

    neuotq
    @neuotq
    Прокрастинация
    Вам нужно следить за событиями keydown, далее снимаем действие по умолчанию с помощью preventDefault.
    Таким образом в самом общем случае отключения реакции на все кнопки будет:

    document.addEventListener('keydown', e => {
      e.preventDefault();
      return false;
    });


    Далее ищите нужные коды для своих кнопок, отключаете поведение по умлочанию, добавляете своё поведение.
    Например:

    document.addEventListener('keydown', e => {
       if (e.key === 'ArrowDown') {
        e.preventDefault();
        //Ваша логика
        return false;
      }
    });
    Ответ написан
    Комментировать
  • Что значат цифры 5200 в спецификации процессора AMD 7600X?

    neuotq
    @neuotq
    Прокрастинация
    5200 - официально, те то что гарантирует производитель.
    Но энтузиасты, геймеры разгоняют память до 6000, работает без проблем.
    У AMD это технология EXPO, есть даже список официальный поддерживаемых модулей с частотами разгона. Я думаю есть и не официальные, на форумах/группах энтузиастов оверклокеров.
    Ответ написан