Задать вопрос
  • Что лучше: socket.io p2p или webRTC?

    VoidVolker
    @VoidVolker
    Dark side eye. А у нас печеньки! А у вас?
    Для начала определиться с ответом на вопросы: Для чего? В чем именно? А уже в зависимости от ответа и выбирать более подходящее решение.
    Ответ написан
    1 комментарий
  • Что это за файл, и как его удалить?

    pindschik
    @pindschik
    ФЫВА ОЛДЖ
    1) То, что tcpsvcs.exe - системный процесс, еще не означает, что он не был подменен, в него не инжектирован вредоносный код (в том числе только в оперативке, а не на диске).

    2) Вы установили себе вредоносное ПО. То, подо что оно мимикрирует - не имеет значения. То ли это псевдо-торент, то ли "скачивальщик", то ли показыватель баннеров. Надо понимать - злоумышленникам нужен доступ к вашему ПК и он был получен, при чем с админскими правами. Название компании - это просто для вашего самоуспокоения, дескать это такое своеобразное ПО.

    3) Схема троянского ПО обычно такая: сайт-приманка; "дроп" - компонент который забрасывает на ваш комп
    полезную нагрузку; "троян" - сам компонент зловреда с полезной нагрузкой и удаленным управлением; дальше идет сервис в даркнете по продаже услуг, связанных с зараженными ПК, согласно покупок сервиса - вам будет по необходимости инсталлироваться то вредоносное ПО, на которое есть спрос: кража банковских данных, аккаунтов в соцсетях и мессенджерах, майнинг крипты и т.д.

    4) Ваши действия сейчас не соответствуют угрозе. У вас есть немного форы, пока злоумышленники продают базу в даркнете. Потом ее кто-то купит и начнется веселье. Срочно необходимо:
    а) с чистого устройства немедленно сменить все пароли доступа которые когда либо как угодно были на вашем ПК, в том числе в хранилище гугла. Включить двухфакторку везде, где это возможно.
    б) предупредить всех ваших контактов в соцсетях, мессенджерах и т.д. - что вы взломаны, и денег никому не давать.
    с) обойти все банки, которыми вы пользуетесь - заблокировать все онлайн операции и приложение.
    ... и только уже потом снести систему полностью, включая загрузочные разделы на жестком диске, перепрошить заново BIOS, и ставить винду по новой, с образа MSDN.

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

    CORS-это не сайт, а браузер твой ругается. Выставляй корректные CORS-заголовки
    Ответ написан
    Комментировать
  • Почему dispatch нельзя использовать в потоке кода при отрисовке компонента?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Почему dispatch нельзя использовать в потоке кода при отрисовке компонента?

    - Проблемы с производительностью: Если бы dispatch вызывался прямо в теле компонента (то есть во время его рендеринга), каждый раз, когда компонент рендерится (например, из-за изменения других данных на странице), он бы снова и снова добавлял товар в корзину (в контексте интернет-магазина). Это приведет к бесконечному циклу и сильно замедлит работу приложения.
    - Непредсказуемость поведения: Поскольку рендеринг компонентов может происходить по разным причинам и в разное время, использование dispatch в процессе может привести к непредсказуемым и нежелательным изменениям в состоянии приложения. В контексте интернет-магазина, товары могли бы добавляться в корзину без Вашего ведома.
    - Сложности в управлении состоянием: Использование dispatch во время рендеринга усложняет понимание того, когда и почему происходят изменения в состоянии приложения, что затрудняет отладку и поддержку кода.

    Именно поэтому лучше использовать dispatch внутри обработчиков событий (например, при клике на кнопку) или внутри useEffect, где Вы имеете полный контроль над тем, когда и по какой причине должны происходить изменения состояния.
    Ответ написан
    1 комментарий
  • Где взять старую версию Node.js?

    yarkov
    @yarkov
    Помог ответ? Отметь решением.
    Попробуй nvm
    Ответ написан
    Комментировать
  • Понимает ли js, что функция вернет promise?

    @paroletatel
    Отвечу так, как сам понимаю, без претензий на экспертство.

    Сама функция в вашем примере — синхронная. Внутри данной функции вызывается fetch — он асинхронный.

    Вызов функции и её выполнение — это блокирующий код, он выполняется синхронно, и останавливает поток, пока не отработает функция.

    Но суть в том, что идея отрабатывания данной синхронной функции в том, чтобы поместить в event loop асинхронный запрос (который возвращает promise), обработчик которого запускается и не блокирует основной поток, — и только. Сама функция же, как синхронная, возвращает то, что вы ей даете вернуть, — в данном случае undefined.

    Если бы вы записали функцию, как асинхронную, и перед fetch использовали await, то данная функция как раз и возвращала promise, который предполагал бы полное исполнение fetch до выполнения самой функции, то есть resolve'а promise функции.

    const getData = async () => {
      await fetch('адресДаты').then((resp) => {
        resp.json()
      })
      .then((data) => {
        return data.data
      })
    }
    Ответ написан
    5 комментариев
  • Как правильно использовать тип unknown?

    Варианта четыре:
    1. Кастануть в any
    2. Кастануть в конкретный тип
    3. Использовать narrowing: Сделать проверки, что typeof item === "object" и что у него есть нужные свойства.
    4. Если заранее знаешь, что у тебя item - это какой-то тип из нескольких, то вместо unknown можно сделать union

    Вот ещё пример:
    https://www.typescriptlang.org/play?target=9#code/...
    Ответ написан
    Комментировать
  • Как не обновлять локальный файл docker-compose при git pull?

    @Kostik_1993
    Web Developer
    Я так понимаю вам нужна правка для локальной разработки которая не нужна на проде. Для этого вам нужно создать еще один docker-compose.dev.yml файл только с теми конфигами которые хотите поправить. Сам же файл не нужно индексировать, а поместить его в .gitignore

    https://docs.docker.com/compose/multiple-compose-f...
    https://docs.docker.com/compose/multiple-compose-f...

    UPD. Так же если вам нужно делать отличными какие-то опции вроде порт, имя или пароль бд можно вынести это в переменные окружения или .env файл. Его также стоит поместить под .gitignore
    Ответ написан
    Комментировать
  • Как в WebStorm 2023.2.4 убрать полосу в редакторе?

    xez
    @xez
    TL Junior Roo
    Эта полоса подсказывает вам, что слишком длинные строки кода делать не стоит...
    Включается она так:
    Settings -> Editor -> Appearance -> Show hard wrap and visual guides...
    Ответ написан
    1 комментарий
  • Как перемещать элемент по клику на кнопки?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Вместо выдёргивания координат из стилей лучше будет сделать массив с координатами, обновлять этот массив, и уже на его основе задавать translate элементу. А чтобы не делать отдельные обработчики клика всем кнопкам, можно записать им в data-атрибут информацию о том, на сколько какие координаты должна изменить данная кнопка.

    <button data-steps="1,0">right</button>
    <button data-steps="-1,0">left</button>
    <button data-steps="0,1">down</button>
    <button data-steps="0,-1">up</button>
    <button data-steps="1,1">right down</button>
    <button data-steps="0,-2">double up</button>

    const coord = [ 0, 0 ];
    const stepSize = 30;
    
    const box = document.querySelector('#box');
    const buttons = document.querySelectorAll('[data-steps]');
    
    buttons.forEach(n => n.addEventListener('click', onClick));
    
    function onClick() {
      this.dataset.steps.split(',').forEach((n, i) => coord[i] += n * stepSize);
      box.style.transform = `translate(${coord.map(n => `${n}px`).join(',')})`;
    }
    Ответ написан
    Комментировать
  • Почему скорость интернета в 20 раз ниже, чем та, которая должна быть?

    @itshnick88 Автор вопроса
    Помогло заклинание "netsh int tcp set global autotuninglevel=normal"

    Спасибо за наводку ---> Артём Артём
    Ответ написан
    1 комментарий
  • Почему не получается передать ключ для json?

    bingo347
    @bingo347 Куратор тега JavaScript
    Crazy on performance...
    myArrayJson.push({[arkey]: arval});
    Ответ написан
    Комментировать
  • Как сделать автозапуск python программы с виртуальным окружением в фоновом режиме на линукс?

    drygdryg
    @drygdryg
    Python-разработчик
    Можно использовать систему инициализации Systemd. Напишите unit-файл такого вида:
    [Unit]
    Description=My Script Service
    After=multi-user.target
    
    [Service]
    User=user  # Имя пользователя, от имени которого будет запускаться команда, указанная в ExecStart
    WorkingDirectory=/home/user/program  # Директория, в которую будет осуществлён переход перед запуском
    ExecStart=/home/user/program/venv/bin/python /home/user/program/webui.py
    Restart=always  # Всегда перезапускать скрипт при его падениях
    
    [Install]
    WantedBy=multi-user.target

    и сохраните его в директории /etc/systemd/system с расширением .service, например, /etc/systemd/system/my_program.service.

    Здесь не используется скрипт activate для активации виртуального окружения, но вместо этого указывается полный путь к интерпретатору Python внутри этого виртуального окружения.
    Также важно указывать абсолютные пути к файлам и директориям, даже несмотря на то, что задана рабочая директория WorkingDirectory.
    Если ваш скрипт опирается на сетевые соединение, в секции Unit в качестве After задайте network-online.target вместо multi-user.target:
    After=network-online.target

    После этого перезагрузите конфигурацию Systemd:
    sudo systemctl daemon-reload
    И запустите сервис с добавлением в автозагрузку:
    sudo systemctl enable --now my_program.service
    Ответ написан
    2 комментария
  • Как залить проект на гитхаб с сохранением папок?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега GitHub
    Автоматизатор
    Эти папки у вас существуют только в рабочем каталоге и их нет в репозитории, потому что гит отслеживает только файлы. Невозможно закоммитить пустой каталог. Каталоги фигурируют лишь как часть полного пути к файлам.

    Если вам нужно непременно сохранить структуру каталогов, то поместите в них любой файл. Стандартная практика — создавать пустой файл с именем .gitkeep
    Ответ написан
    Комментировать
  • Как использовать один компонент с разными типами данных?

    Aetae
    @Aetae Куратор тега TypeScript
    Тлен
    Наверное ты хочешь этого:
    type Props = { data?: ITemplate } | {}
    const CreateTemplateForm: FC<Props> = (props) => {
      if ('data' in props && props.data) {
        
        return ...;
      }
    
      return ...;
    }
    Ответ написан
    5 комментариев
  • Как сделать деплой Vite-проекта на gh-pages?

    Seasle
    @Seasle Куратор тега JavaScript
    Комментировать
  • Как типизировать обмен данными между микросервисами?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Можно спецификацию в формате OpenAPI хранить для всей системы централизовано или в каждом микросервисе хранить спецификацию его API отдельно, а при сборке вытаскивать спецификации зависимостей и из них собирать DTO'шки.
    Ответ написан
    2 комментария
  • Почему не записываются данные в файл?

    ipatiev
    @ipatiev
    Потомок старинного рода Ипатьевых-Колотитьевых
    Как все новички, вы оперируете понятием "может быть".
    "может быть сервер не принимает". "по крайне мере должно отправлять". "насчет РНР не уверен"
    Так делать никогда не надо.
    У вас есть все возможности узнать то, что происходит на самом деле. Факты.
    Вот фактами-то и надо всегда оперировать.
    Какая вам разница, "может ли быть такое, что backend не принимает"? Может. И чем вам это знание поможет?
    Вам не нужно знать абстрактно, вам нужно знать, принял ли ваш конкретный сервер ваши конкретные данные.
    А узнать это очень просто. Если "backend не принимает", то но выдаст ошибку. Все что вам нужно - это посмотреть, что он возвращает. Глазами.
    Плюс на всякий случай проверить, настроен ли backend на вывод ошибок.

    При работе с аякс запросами надо всегда держать открытой вкладку Сеть в инструментах разработчика в браузере.
    И смотреть, во-первых, что ваш фронт отправляет, а во-вторых - что сервер отвечает. Там вообще может быть 404. Поскольку никакого конкретного адреса вы на сервере не указали.
    Плюс если ответ сервера есть, то надо смотреть его содержимое на предмет ошибок.
    Ответ написан
    Комментировать
  • Что означает выражение. {x:1} в f.строках python?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Это "f-строки"/"форматированные строковые литералы", простой пример:
    x = 5
    y = 555
    print(f"{x:1}")  # "5", минимальная ширина поля вывода переменной x = 1 (вывести значение x, удостоверившись, что оно занимает по меньшей мере один символ)
    print(f"{x:3}")  # "  5"
    print(f"{y:3}")  # "555"
    
    # Округление Pi до десятичного значения
    pi = 3.141592653589793
    print(f"Pi: {pi:.1f}")  # Pi: 3.1
    Ответ написан
    Комментировать