• Как можно указать доменное имя для контейнера в докере?

    @dronmaxman
    VoIP Administrator
    Создаешь сеть docker, подключаешь контейнера в одну сеть, при подключении указываешь alias (mysite.local) для контейнера который как раз и будет доменным именем.

    docker docker network create <имя сети>
    docker network connect --alias nginx.local <имя сети> container-nginx
    docker network connect --alias apache.local <имя сети> container-apache
    docker network connect --alias mysite.local <имя сети> container-mysql


    Пора уже использовать docker-compose.
    Ответ написан
    Комментировать
  • Почему не работает функция вызванная в addEventListener?

    yarkov
    @yarkov Куратор тега JavaScript
    Помог ответ? Отметь решением.
    Комментировать
  • Как сделать генерацию случайного числа в диапазоне без повторений?

    phaggi
    @phaggi
    лужу, паяю, ЭВМы починяю
    Описанная задача внутренне противоречива и не может быть решена в полной мере.
    Вместе с тем, если учесть, что в случайность тут будет не совсем случайна, то решение для целых чисел таково:
    Делаете shuffle на исходный список и затем по-очереди извлекаете из него элементы.
    С точки зрения результата это будет равносильно практически любому более сложному варианту.
    Ответ написан
    1 комментарий
  • Реально ли заменить gulp на vite?

    bingo347
    @bingo347
    Crazy on performance...
    Есть сборщик gulp
    То что под gulp есть сборщики не делает сам gulp сборщиком. Gulp - task runner, запускалка задач. То есть сборщик под капотом может быть любой, хоть тот же vite.
    Теперь про vite, основная его фишка - это ускорение dev сборок и за счет этого ускорение самого процесса разработки. Достигает он это за счет того, что по сути не собирает Ваши исходники, а только применяет к ним трансформации, хотя зависимости все же собирает с помощью esbuild. При этом для прода вся сборка переадресуется на rollup. И то что в dev и в prod у Вас будут по сути разные сборщики изредка приводит к багам, которые воспроизводятся только в prod сборках. Rollup надо сказать тоже не идеален и на больших проектах порой ломает код, хоть и редко.
    Тут мое ИМХО и не более
    Rollup для сборки библиотек.
    Webpack для сборки конечных приложений.
    Vite интересен скорее интегрированным в него vitest, который позволяет писать unit тесты ближе к логике (привык я к хорошему в Rust).

    А по факту, смена сборщика чревата ошибками, сильными изменениями в структуре проекта и прочими подводными камнями.
    Если вопрос "стоит ли переезжать" появился только из hype-driven-development (погоней за модой по-простому), то ответ однозначный - нет, не стоит.
    Если же текущая сборка накладывает на Вас сильные ограничения и борьба с этими ограничениями занимает очень много времени, настолько, что потенциальные проблемы от смены сборки скорее всего займут времени меньше, то да, стоит переезжать.
    Ответ написан
    1 комментарий
  • Глобальность в JavaScript?

    DollyPapper
    @DollyPapper
    Что такое глоаблаьные объекты и как они работают?

    Глобальные обьекты это обьекты обьявленные в глобальной области видимости в программе и доступны из любого места программы.
    И что-ли все переменные это прсотос свойства?

    Нет. Переменные это переменные, свойства это свойства.
    let a = {f: 10}
    a это переменная, f это свойство обьекта.
    И я почитал про создание перменной без исопльзования клчевых слов let/var/const.

    Это круто, держите нас в курсе.
    Какая вся картина ооп

    Большая и противоречивая. Конкретней задавайте вопрос.
    Ответ написан
    Комментировать
  • Как исправить баг соприкосновения двух Slice в RTK?

    @slide13
    frontend/web-developer
    Потому что кое что забыли в addMatcher. Сейчас у вас оба слайса в extraReducers матчатся на все асинхронно возвращаемые через промисы экшены, поэтому данные и записываются в оба слайса Т.е. вам необходимо матчить по название thunk + статус, а не только по статусу, как пример, для option:
    вот вы создали async thunk с типом "countries/fetchCountries"
    export const fetchCountries = createAsyncThunk(
      'countries/fetchCountries',
    ...

    и в addMatcher будет тогда:
    (action) => action.type.endsWith("countries/fetchCountries/pending"),

    Ну и везде так поменяйте.
    Ответ написан
    1 комментарий
  • Почему обработчик реагирует на событие, случившееся до его установки?

    0xD34F
    @0xD34F Куратор тега React
    Я так понимаю, вот она, причина, подъехала с версией 18.0.0:

    Consistent useEffect timing: React now always synchronously flushes effect functions if the update was triggered during a discrete user input event such as a click or a keydown event.

    Т.е., жмёте на кнопку, открывается окно, запускается эффект, устанавливается обработчик клика на document, дальше событие клика по кнопке продолжило всплывать и попало в только что установленный обработчик.

    При добавлении задержки, данная проблема уходит

    Можете ещё попробовать ловить событие в фазе погружения:

    document.addEventListener('click', handleOutsideClick, true);
    return () => document.removeEventListener('click', handleOutsideClick, true);
    Ответ написан
    Комментировать
  • Можно ли использовать две переменные в switch case?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Для начала, a,b - операция "запятая", её результат равен последнему операнду, то есть b.
    Затем вы сравниваете b с результатами операций a>b и a<b. Поскольку в b строка, а операции дают true или false, то, соответственно, сравнения не проходят и отрабатывает ветка default.
    Ответ написан
    Комментировать
  • Чем отличается наследование в ооп от протипированного наследования?

    DollyPapper
    @DollyPapper
    При классовом подходе у вас есть класс и его экземпляр. Состав полей и цепочка наследования при этом задана жестко во время написания. В прототипной модели у вас нет классов, есть обьекты прототипы которые могут динамически мутировать по ходу выполнения программы. Мутация означает, что мы можем изменять не только значения атрибутов обьекта, но и сам состав этих атрибутов.
    Ответ написан
    Комментировать
  • Крякозябры в функции spawn, как исправить?

    @5465
    Проблема с крякозябрами может быть связана с тем, что вывод команды "ping" в консоли использует кодировку, отличную от кодировки консоли, которую вы используете. В этом случае вы можете попробовать использовать параметр кодировки в функции spawn, чтобы установить правильную кодировку для вывода. Вот пример кода, который может помочь:

    const { spawn } = require('node:child_process');
    const iconv = require('iconv-lite');
    
    const command = spawn('ping', ['google.com'], {
      stdio: ['ignore', 'pipe', 'ignore'],
      encoding: 'win1251' // замените кодировку на нужную
    });
    
    command.stdout.on('data', output => {
      console.log(iconv.decode(output, 'win1251')); // замените кодировку на нужную
    });


    Здесь мы используем модуль iconv-lite для декодирования вывода команды с использованием правильной кодировки, установленной в параметре "encoding" функции spawn. В примере мы использовали кодировку "win1251", но замените ее на ту, которую использует вывод команды "ping" в вашей консоли.
    Ответ написан
  • Почему не копирует webpack-copy-files?

    @xxvxx Автор вопроса
    ....
    ответ
    devServer: {
      devMiddleware: {
        writeToDisk: true,
      },
    },
    Ответ написан
    Комментировать
  • Почему при переборе массива и суммировании значении разными циклами, ответ отличается?

    VoidVolker
    @VoidVolker Куратор тега JavaScript
    Dark side eye. А у нас печеньки! А у вас?
    numbers.forEach((name,index,array)=>{
        kubof=name**3
        sumech = sumof+kubof // <----- используется переменная из предыдущего цикла
        console.log(kubof) 
    })
    Ответ написан
    4 комментария
  • Как сделать скриншот содержимого IFrame?

    sanchezzzhak
    @sanchezzzhak
    Ля ля ля...
    у вас не получиться сделать скриншот средставми JS, если iframe это внешний источник обращение к frame доступно только через postMessage в обоих направлениях.
    Для локальных фреймов которые созданы родительским окном можно использовать все что угодно.
    так работает например vpaid реклама на yootube и на милионах других сайтах.

    Решение только использовать web-driver который запускает реальный браузер через selenium это chrome или firefox

    на nodejs можно использовать безголовый-хром в лоб, на пхп уже не вспомню как запускать шайтан машину.
    можно воспользоваться готовой библиотекой требует php8.1

    посути это обертка вокруг безголового хрома.
    https://github.com/spatie/browsershot
    Ответ написан
    1 комментарий
  • Как поменять цвет текста для select option?

    @igor042018
    https://dimox.name/jquery-form-styler/ неплохая библиотека для стилизации селектов
    ____
    спасибо, а есть простой способ поменять цвет плейсхолдера для текстового инпута?
    ____
    input::placeholder {...}
    Ответ написан
    6 комментариев
  • Как обработать post запрос на nodejs?

    black1277
    @black1277
    Вольный стрелок
    Есть простые и сложные запросы CORS. Когда запрос сложный - браузер отправляет 2 запроса сначала OPTIONS затем основной. GET - простой запрос - поэтому у вас всё работает правильно. POST - тоже простой запрос, но если изменить ему Content-Type на 'application/json' он становится сложным. Ваш сервер не отвечает на предварительный запрос OPTIONS, поэтому браузер блокирует ответ. Читайте подробнее, например здесь
    Ответ написан
    Комментировать
  • Какую альтернативу взять место MongoDB?


    а её заблокировали в России

    Только облачный Mongodb Atlas.

    А развернуть свой экземпляр можно без каких-либо проблем.
    Если хочется облако - можно взять dbaas у какого-нибудь провайдера.

    MySQL радикально отличается от mongodb как языком запросов, так и парадигмой.
    GraphQL - вообще даже не база данных, а только лишь протокол
    Ответ написан
    Комментировать
  • Как корректно передать элемент в рендер?

    @slide13
    frontend/web-developer
    Из того, что вижу я при беглом просмотре - у вас в качестве ключа в список ListItem передается undefined, т.к. у вас явно нет свойства key в текущем классе App (в консоли на это тоже ошибка должна быть). А так как ключи для всех элементов не заданы, то при добавлении в начало/середину списка нового элемента приводит к тому, что реакт неправильно высчитывает порядок элементов и из-за этого возникают такие странности при рендеринге списка.
    В качестве решения должно сработать поставить в качестве ключа тоже itemString, если он у вас дублироваться не будет, конечно, но все же лучше при создании таска присваивать ему уникальный id, т.е. в todoList будет не просто массив текстов, а массив объектов, где каждый объект будет содержать id и текст таска. Тогда можно будет и тексты одинаковые добавлять для разных задач и удалять проще будет.
    Также непонятно, для чего нужен key в стейте, если он не изменяется нигде.
    Ответ написан
    Комментировать
  • Как использовать несколько ключей SSH для разных аккаунтов Github через KeePassXC?

    saboteur_kiev
    @saboteur_kiev Куратор тега Git
    software engineer
    Можно настроить config для ссш и юзать разные хостнеймы для конкретных репозиториев
    Пример:

    ~/.ssh/config:
    Host github-user1
          HostName github.com
          User git
          IdentityFile ~/.ssh/id_rsa_user1
    
        Host github-user2
          HostName github.com
          User git
          IdentityFile ~/.ssh/id_rsa_user2


    В разных репозиториях редактируешь ремоут (.git/config)
    url = git@github-user1:user1/myrepo.git
    или
    url = git@github-user2:user2/myrepo.git

    ну или можно командой
    git remote set-url origin git@github-user1:user1/repo.git
    Ответ написан
    3 комментария
  • Почему моя анимация не работает?

    black1277
    @black1277
    Вольный стрелок
    Потому что вы ищете свойство "--main-up" в селекторе класса .favicon, а определили его в :root
    Попробуйте так
    let root =  document.documentElement;
    root.style.setProperty("--main-up", random+'px');
    Ответ написан
    Комментировать
  • Как создать несколько одинаковых элементов?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Если элемент не простой, а содержит вложенные, то можно использовать метод cloneNode(true) для создания копии со всеми под-элементами:
    Ответ написан
    Комментировать