• Как передать массив Refs в другой компонент?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Попробуйте вот так:
    import { useState, useRef, forwardRef } from "react";
    import "./ScrollToNextSection.css";
    
    const ScrollToNextSection = forwardRef(({ visibleSection }, ref) => {
      const scrollToSection = () => {
        const currentIndex = ref.current.findIndex(
          (sectionRef) => sectionRef && sectionRef.id === visibleSection
        );
        const nextSection = ref.current[currentIndex + 1];
    
        if (nextSection) {
          nextSection.scrollIntoView({ behavior: "smooth" });
        } else if (ref.current[0]) {
          ref.current[0].scrollIntoView({ behavior: "smooth" });
        }
      };
    
      return (
        <button onClick={scrollToSection} className="scroll-btn">
          Вниз
        </button>
      );
    });
    
    export default ScrollToNextSection;
    Ответ написан
    Комментировать
  • Как генерировать палитру всех 24бит цветов в изображении размером 4096х4096 чтобы был плавный переход цвета?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    содержимое файла - некрасивое, как сделать плавный переход цвета?

    Файл отображает абсолютно всё то, что вы туда записали. Если хотите сделать красивый переход создайте алгоритм, а ещё лучше математическую модель, по которой ваша программа будет сама выбирать, куда вставить тот или Инной цвет

    Второе. Понятие содержимое файла - некрасивое достаточно относительное. Для каждого своя красота)) Соответственно, нет какого-то готового способа сделать то, что вы сами себе видите

    UPD:
    Для плавного перехода цвета вам нужно, что бы пиксели с цветами записывались не только в одну строку с переносами (Ну как лично я понимаю это, потому что нет никакой картинки, но кода генерации), а вам нужно ещё и по вертикали, и по диагонали записывать такие пиксели, что бы полоса градиента была во все стороны от начальной точки генерации
    Ответ написан
    Комментировать
  • Можно ли отслеживать get / post / patch запросы с моего аккаунта на определенный сайт?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    С вашего аккаунта чего? Доты или КС? Сессии в универе?

    У вас стандартная модель http запросов - отслеживайте сколько хотите

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

    UPD:
    Из комментариев узнал, что нужно что-то из этого (Если что-то нарушил, сообщите, пожалуйста, исправлюсь ^_^):
    Снифферы
    Wireshark
    Поиграться вручную
    tcpdump

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

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Причём тут это к проектированию БД? Если ваша цена зависит от чего-то там сверхъестественного, то это слой бизнес-логики, который будет высчитывать цену в зависимости от каких-то параметров. В БД вы эту информацию только храните и всё

    Проектирование больше относится к тому, как правильно хранить данные и распределять между многими таблицами. Правильно спроектированная БД имеет своё отражение на объектах в используемом вами языке программирования, когда вы будете эти таблицы маппить в типы.

    Всё что дальше, это уже бизнес-логика

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

    services:
     - id:uuid
     - name:varchar
     - description:varchar
    
    options:
     - id:uuid
     - name:varchar
     - price:float
    
    orders:
     - id:uuid
     - duration:integer
     - total_price:float
     - service_fk:uuid
    
    order_options:
     - order_fk:uuid
     - option:fk:uuid
    Ответ написан
    2 комментария
  • Remix js, что происходит с типами?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Вот сюда копайте
    Ответ написан
    Комментировать
  • Как написать скрипт, который автоматически будет нажимать на кнопку покупки на сайте?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Попробуйте SeleniumWebDriver для Python. Можете интегрировать его в свой код и вызывать при нужных условиях
    Ответ написан
    Комментировать
  • Как лучше всего хранить данные о группах в бд?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Вот такой вариант есть

    task
        id:guid unique
    
    groups
        id:guid unique
        task_fk:guid <--
    
    manager:
        id:guid unique
        group_fk:guid unique
    
    worker
        id:guid unique
        group_fk:guid <--


    Обратите внимание на строку, где указана стрелочка. Отсутствие ключевого слова unique даёт возможность нескольким записям в этой таблице быть связанным с другой таблицей (groups) либо, другими словами, связь one-to-many. Наличие unique в таблице managers явно указывает, что только один менеджер может быть привязан в конкретной группе, другими словами, это связь one-to-one, где внешний ключ (foreign key) находится в таблице managers.

    Группы нужно формировать из 1 управляющего и из 1-3 рабочих.

    Это уже часть бизнес-логики, это не имеет отношения к проектирования БД
    Ответ написан
  • По какой формуле можно высчитать делитель, с нужным остатком от деления?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Возьмём за базу вот такую систему
    N % d >= 10
    d >= 10


    Запишем формулу операции деления по модулю простой математикой. Результат деления N на d - q запишем вот так:
    m = N / d - целая часть деления
    q = N - m * d - остаток от деления N / d


    Проверка:
    17 % 15 = 17 - (17 / 15 * 15) = 17 - 15 = 2

    Теперь у нас есть равенство:
    N - m * d = q, q >= 10

    Отсюда:
    10 < q < d

    Получаем:
    N > m * q + 10

    Выводим зависимость N и d:
    N - 10 > m * q
    (N - 10) / q > m


    Проверяем:
    193 и 19
    m = 193 / 19 = 10
    (193 - 10) / 19 > 10
    9.63 > 10 false ¯\_(ツ)_/¯


    193 и 20
    m = 9
    (193 - 10) / 19 > 9
    9.63 > 9 true
    Ответ написан
    Комментировать
  • Как сгенерировать 404 из view в asp.net core?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    В asp.net core ЧТО? Blazor Server? Blazor Web Assembly? Razor Pages? Web Api?

    Какие исключения? Вы понимаете, что такое исключение на уровне приложения? Это когда программа "отвалилась", произошла ошибка, сервер накрылся, базу данных физически украли, свет отключили или что-то подобное

    Ваш HttpException это по факту ошибка работы с протоколом Http, ошибка передачи информации или подобное. И то, даже школьники уже понимают, что ошибки нужно обрабатывать, а не специально генерировать. Если у вас программа будет на сервере, а вас просто сервер накроется из-за такого кода и вам нужно будет лезть и всё заново запускать

    Ошибка 404 это просто статус ответ от сервера, который уведомляет вас о том, что запрашиваемый ресурс не найден. Если у вас всё же стоит Web Api, тогда просто в контроллере делаете return NotFound()

    Если у вас Razor Pages или MVC, просто сделайте return RedirectToAction("NotFound", "Home") предварительно создав страницу NotFound в контроллере Home
    Ответ написан
    4 комментария
  • Как организовать хранение покупок при продаже услуг с разными характеристиками?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Самый простой способ просто вынести общие параметры, такие как [конец действия] в отдельную таблицу [услуг]. А далее все таблицы, что нужно соединить с ней в формате one-to-many

    customizations
     - id:uuid unique
     - image_name:varchar
     - image_extention:varchar
     - site_url:varchar
     - service_fk:uuid unique
    
    coupons
     - id:uuid unique
     - discount:float
     - ticket_count:integer
     - restaurant_fk
     - service_fk:uuid unique
    
    accesses
     - id:uuid unique
     - file_url:varchar
     - service_fk:uuid unique
    
    services:
     - id:uuid unique
     - date_start:timestamp
     - date_end:timestamp


    При выборке делаете просто JOIN и получаете нужные таблицы в связке
    Ответ написан
    3 комментария
  • Как стать начинающим программистом в текущих реалиях?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Я писал два ответа на вопросы по подобным темам, рекомендую прочитать
    Как найти работу после курсов по фронтенду?
    В какую сторону учиться, QA, front end или back en...
    Ответ написан
    Комментировать
  • Как преобразовать из char массива в string массив в си шарп?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Что вот это вот такое?
    string[] strArr = new string[charArr.Length];
    Если вы уже пытаетесь с массива что-то собрать, то сначала изучите, как работают массивы. Операция [ ] это доступ по индексу. Вы пытаетесь достучаться к новой строке по индексу, или как?
    Вторая проблема, что нет явного преобразования char -> string, т.е. вот такой код работать не будет:
    string a = charArr[0];
    Рабочие варианты:
    string a = charArr[0].ToString();
    string a = $"{charArr[0]}";
    string a = string.Join(charArr[0]);

    Короче говоря вам нужно сначала каждый элемент char[] пересобрать в string, а потом запихнуть это всё в string[]. Тут есть два варианта, что бы долго не играться - через простые циклы или через linq. 1й вариат:
    string word = Console.ReadLine();
    char[] charArr = word.ToCharArray();
    
    string[] strArr = new string[charArr.Length];
    for (int i = 0; i < charArr.Length; i++)
    {
        strArr[i] = charArr[i].ToString(); // Или другой из методов
    }


    2й вариант:
    string word = Console.ReadLine();
    char[] charArr = word.ToCharArray();
    string[] strArr = charArr.Select(c => c.ToString()).ToArray();


    А вообще не уверен, что вы делаете именно то, что вам нужно. В плане, на начальных этапах такое бывает, что не понимаешь как задачу решить и начинаешь лепить что угодно)
    Ответ написан
    Комментировать
  • PHP Почему выполнение cURL-запроса блокирует все другие запросы cURL?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Где ты вы с асинхронностью проиграли) Скорее всего, вы выполняете запрос синхронно что приводит к блокировке основного потока выполнения программы
    Ответ написан
    Комментировать
  • Как дождаться выполнения асинхронного метода?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Task это асинхронная задача, ожидать выполнение которой можно с использованием async/await
    Дока
    Ответ написан
    Комментировать
  • Стоит ли идти на практику в компанию?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Опыт прежде всего. Компания лучше возьмёт человека, который пусть и пол года (В резюме можно указать год свободно) работал на фирме, чем который 5 лет сидел дома, пусть даже у него есть какие-то пет-проекты. В первую очередь, какие качества, вы сможете получить на фирме, что бы потом было легче найти работу написал ниже.

    Опыт в реальном проекте
    Реальные проекты очень отличаются от пет-проектов, потому что там есть сложности, которые вы не встретите дома. Рабочие проекты обычно большие и написаны опытными разработчиками. Если вы думаете, что дома вы сможете научиться на соответствующий уровень, значит ты ещё очень мало чего знаете. Рано или поздно вы придёте к такому уровню, что вам просто нужны будут советы более опытных разработчиков, т.к. ваши проекты будут постоянно становиться более сложными и объёмными. Правильную архитектуру, правильные подходы для написания большого проекта в интернете вы не найдёте, и ChatGPT вам так же не скажет, а это очень важный момент, без понимания которого вам дорога дальше закрыта. В своё время я был готов работать за чашечку кофе и пачку сигарет, лишь бы что бы увидеть и узнать, как более опытные разработчики пишут проекты.

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

    Опыт общения
    Рабочая среда крайне важна для работы, за частую компании предпочитают брать более коммуникабельных и дружелюбных кандидатов, чем тех, кто больше знает. Почему так? Как говорится: "компании проще уволить одного идиота, чем из-за этого идиота уйдёт 10 нормальных людей". Опыт общения над проектом даст вам преимущество в коммуникабельности и умении коммуникации в рабочих условиях.

    Командный опыт
    Речь идёт об опыте, который вы сможете получить от других разработчиков. Более умные люди заменят вам очень много времени личной практики, поскольку перед вами будет несколько "энциклопедий", которые дадут вам ответ на любой ваш вопрос

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

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    У меня учёбно-рабочий ноутбук Lenovo Idea Pad L3 на i3-10110u, RAM 8 Gb.

    Единственное, что могу сказать, что хочу доставить ОЗУ, т.к. не всегда хватает при запуске рабочих проектов

    Рабочий ПК стоит на i5-9400, для работы хватает с головой и больше)

    Тут больше всё зависит от требований системы. Как я (мы) можем сказать, какое железо вам лучше взять? Вот вы работаете и чувствуете, что очень долго грузится система, долго компилится проект и т.д. Значит нужно что-то мощнее. Если не чувствуете дискомфорта, значит всё нормально

    Ваш i5-4590 будет лучше за мой i3, но так как вы являетесь фулл-стеком, думаю, такие вопросы не должны у вас возникать, какая машина вам оптимальная
    Ответ написан
    1 комментарий
  • Как с помощью serialize получить данные форм с чекбоксами при изменение чекбокса?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Просто по-человечески попробуйте использовать is:checked подобно этому:

    if ($('#checkbox').is(':checked')){
    	// ...
    }
    Ответ написан
    2 комментария
  • По какой причине User равен null?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Нужен дебаг-скрин контекста при запросе. Скорее всего у вас просто неверный заголовок либо его значение
    Ответ написан
  • Куда WinRAR расходует место на жёстком диске?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Если вы делаете распаковку в нужно место просто перетащив нужные файлы из окна архиватора, все файлы сначала распаковываются во временную папку, а после полной распаковки они перемещаются в место назначения. Иными словами, в какой-то момент времени все файлы фактически дублируются и занимают вдвое больше памяти.

    Для решения этой проблемы делайте распаковку через кнопку "Извлечь" в указанную папку
    Ответ написан
    3 комментария
  • Как устранить следующую ошибку в Visual Studio. Язык C#?

    NikFaraday
    @NikFaraday
    Student full-stack Developer
    Установите пакет System.Windows.Media через менеджер пакетов NuGet
    Ответ написан