• Как формировать ответ с Ошибками - Nest JS?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Оставьте один try/catch на самой внешней функции, будете получать только одно исключение.
    Ответ написан
    5 комментариев
  • Какие знаниями java нужно обладать чтобы переходить на kotlin?

    xez
    @xez
    TL Junior Roo
    Разрешаю изучать Котлин с любым уровнем знания джавы, в том числе и без знания джавы.
    Ответ написан
    Комментировать
  • Где хранить docker images после сдачи проекта?

    ky0
    @ky0
    Миллиардер, филантроп, патологический лгун
    Зачем хранить образы после сдачи проекта? У вас есть Dockerfile, в случае чего ничего не стоит развернуть всё заново.

    Если же вы про какие-то сакральные данные - как их хранить, после сдачи проекта решает клиент. Тратить на это свои деньги, конечно же, не стоит.
    Ответ написан
    2 комментария
  • Windos 10 не видит жёсткий диск, как исправить?

    @Drno
    Ну у Вас же он отображается.. назван - Диск 1. Нажмите на него ПКМ и выберите инициализировать
    Потом уже сможете отформатировать
    Ответ написан
    2 комментария
  • Как отобразить данные по тегам из json на странице?

    0xD34F
    @0xD34F Куратор тега JavaScript
    <button data-country="">Показать всё</button>
    <button data-country="France">Франция</button>
    <button data-country="Germany">Германия</button>
    <button data-country="England">Англия</button>

    const catalogEl = document.querySelector('#catalog-box');
    let catalogArr = [];
    
    const buttons = document.querySelectorAll('button[data-country]');
    buttons.forEach(n => n.addEventListener('click', onClick));
    
    function onClick({ target: t }) {
      buttons.forEach(n => n.classList.toggle('active', n === t));
      renderCatalog(t.dataset.country);
    }
    
    function renderCatalog(country) {
      const toRender = country
        ? catalogArr.filter(n => n.tag === country)
        : catalogArr;
    
      catalogEl.innerHTML = toRender
        .map(n => `
          <div class="catalog__card" id="${n.id}">
            <img src="${n.img}" alt="${n.alt}" class="catalog__card_img">
            <p class="catalog__card_author">${n.author}</p>
            <p class="catalog__card_name">${n.name}</p>
            <p class="catalog__card_note">${n.note}</p>
            <p class="catalog__card_price">${n.price}</p>
            <button class="catalog__card_btn">${n.btn}</button>
          </div>`)
        .join('');
    }
    
    fetch('catalogBox.json')
      .then(r => r.json())
      .then(r => {
        catalogArr = r;
        buttons[0].click();
      });
    Ответ написан
    Комментировать
  • Как максимально просто создать фигуру как на изображении для последующей анимации?

    sfi0zy
    @sfi0zy Куратор тега CSS
    Creative frontend developer
    Вариант с градиентами - сложный для анимирования. Рисование линий со stroke-dasharray - это стандартный выбор. Но dash array может быть длинным, им можно описать самые разные последовательности линий и пробелов, так что если вам не нужны разные цвета, то можно сделать одну линию:

    Ответ написан
    5 комментариев
  • Как исправить ошибку сборки из кэша после очистки этого самого кэша?

    @q2digger
    никого не трогаю, починяю примус
    я с такой ошибкой не сталкивался, но вот быстрое гугление показало что кэш тут очень сбоку, а причина обычно в ошибке при копировании ресурсов в Докерфайле.

    https://stackoverflow.com/questions/71838329/docke...
    Ответ написан
    1 комментарий
  • Как сделать пунктирные линии между маркерами списка?

    Get-Web
    @Get-Web
    Front-End Developer
    Ответ написан
    Комментировать
  • Как найти и изменить строку в блоке?

    #!/bin/bash
    echo 'server {
        location /test/v2.0.3 {
            modsecurity on;
            proxy_pass http://10.1.0.6:3000;
        }
        location /test/v2.0.0 {
            modsecurity on;
            proxy_pass http://10.1.0.6:3000;
        }
    }' | sed -r '\!^\s+location /test/v2.0.0 \{!,/^\s+\}$/ s/:3000;/:5555;/'
    Ответ написан
    1 комментарий
  • Как вставить текст только перед первым совпадением?

    #!/bin/bash
    line=`grep -n '^ *location' myfile | sed -rn '1s/(.+):.+/\1/p'` # номер первой строки с location
    sed -ri "$line s/.+/0000\n&/" myfile
    Ответ написан
    1 комментарий
  • Как исправить ошибку sed?

    каждая вставляемая строка должна оканчиваться слэшом
    
    #!/bin/bash
    location='
        location /projects/test/v2.0.1-4 {
            proxy_pass http://0.0.0.0:2222;
        }'
    
    sed -i "
    /modsecurity/i ${location//$'\n'/\\$'\n'}
    " MYFILE
    Ответ написан
    5 комментариев
  • Как исключить потомка в селекторе jquery?

    Seasle
    @Seasle Куратор тега JavaScript
    Добавьте
    $(document).on('click', '.content .child', function(event){
        event.stopPropagation();
    });
    Ответ написан
    9 комментариев
  • Что это такое и как защититься?

    trapwalker
    @trapwalker
    Программист, энтузиаст
    По двору прошелся жулик и попытался хакнуть эксплойтом для "майбаха" (условно) все тачки в вашем дворе. Майбахов не нашлось, этот жулик пошел дальше и забыл уже про ваш дворик.

    Надо ли защищаться от атаки, не релевантной вашему сетапу? Не надо.
    Надо ли делать выводы об уязвимости того или иного оборудования? Надо.
    Надо ли проверять свои конфигурации на эксплойты? Надо.
    Надо ли реагировать на всякую нерелевантную хрень в логах с ошибками порядка 400? Не надо.
    Надо ли позаботиться об оркестрации быстрого развёртывания ваших серверов на случай взломов или проблем с железом? Конечно надо!

    Вообще, если ваш сетап на виртуальных машинах в повторяемой среде и с декларативной конфигурацией вроде кубера или докера, то вы легче сможете пережить всякие такие факапы.
    Схема такая.
    Есть признаки взлома - бэкап логов, снапшот базы, бэкап стораджа, остановка сервисов (если позволяет продакшн), анализ атаки и последствий. Устраняем уязвимость по вектору атаки (гугление по логам и курение тредов), правим конфиги развёртывания и запускаем прод. Потом долго и тщательно разбираемся по логам, снапшотам и бэкапам что затронуто. Делаем тестовый чистый сетап по старой конфигурации и сравниваем пофайлово с атакованной системой, выясняем в какие места вмешались злодеи. Дифаем базу и смотрим на подозрительные различия. Делаем выводы, объявляем об утекших данных, если есть такие признаки (чтобы не подставлять пользователей), принимаем превентивные меры против похожих векторов атак.

    Итого, залог успеха - это хранение конфигураций в гит-репозитории, своевременные бэкапы, хранение бэкапов на отдельных изолированных стораджах, оркестрация и автоматизация развертывания, подробное эшелонирование логирование с бэкапами логов, смоук тесты на нестандартную активность в БД, по сетевым интерфейсам, трафику, процессору, памяти, файловым системам, логам...

    Это взгляд дилетанта по безопасности, если чего пропустил -- поправьте. Если где не прав -- расскажите.
    Ответ написан
    3 комментария
  • Является ли это корректной записью?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Не является. Массив используется на хранения списка значений, в нём нет никаких "имён".
    Значения с "именами" можно хранить либо в объекте, либо в специальном типе Map.

    Но при этом, если речь про значения примитивных типов, то при их добавлении в объект или Map теряется связь с изначальной переменной, откуда значение было взято.

    let a = 3;
    let b = 15;
    
    let one = {};
    
    one.a = a;
    one.b = b;
    
    a = 42;
    
    console.log(one.a, one.b); // 3, 15
    console.log(a, b); // 42, 15


    let a = 3;
    let b = 15;
    
    let two = new Map();
    
    two.set('a', a);
    two.set('b', b);
    
    a = 42;
    
    console.log(two.get('a'), two.get('b')); // 3, 15
    console.log(a, b); // 42, 15
    Ответ написан
    Комментировать
  • Каким образом человек может попасть на хакнутый им сервер?

    yesbro
    @yesbro
    Думаю, помогаю думать
    Могли оставить какой-нибудь скрипт, который по запросу из сети выполнить любой заранее заложенный или загруженный в процессе код. Могли майнер оставить. Могли какой-то сервис развернуть. Могли в крон положить скрипт который через Х дней даст доступ по ключу или добавит пользователя. А могли ничего не сделать. Вариантов слишком много :) Проще переустановить. Логи могли и подчистить.
    Ответ написан
    9 комментариев
  • Какую платформу купить?

    @Drno
    Intel i7 12го или 13го поколения.. далее уже по желанию
    то что ты смотришь для такой задачи - шлак. будет перегрев и троттлинг. либо очень шумно
    Ответ написан
  • Корректно ли создавать юзеров с подобными именами?

    Гарантии, что такие имена не вызовут проблем, вам никто не даст.
    Хотите - делайте, но это пустая трата времени. Для защиты сервера есть нормальные проверенные инструменты, их и нужно изучать и использовать. А выдумывая какие-то спецсимволы в именах, перенося ssh на другой порт и скрывая, что у вас используется Nginx, вы создаёте для себя иллюзию безопасности, ничего значительного не добавляя к безопасности реальной.
    Ответ написан
    6 комментариев
  • Корректно ли создавать юзеров с подобными именами?

    ophil
    @ophil
    https://ophilon.github.io
    проблемы возникнут гарантировано. Имя не может начинаться с цифры, должно включать только ограниченный набор символов:

    adduser: Please enter a username matching the regular expression configured
    via the NAME_REGEX configuration variable.  Use the `--force-badname'
    option to relax this check or reconfigure NAME_REGEX.
    
    default NAME_REGEX="^[a-z][-a-z0-9]*\$"


    Неприятно смотреть даже на вполне обычные имена длинее 8 символов, например, last их режет, или имя в верхнем регистре, или зачем-то на русском. Впечатление, что люди не знают о GECOS
    Ответ написан
    Комментировать
  • Как захостить статику из билда в контейнере?

    karabanov
    @karabanov Куратор тега Docker
    Системный администратор
    Артефакт сборки надо поместить в /app

    Тут не помешает двухстейджевая сборка, чтобы оптимизировать размер образа:

    FROM node:18 as static-builder
    
    WORKDIR /app
    
    COPY package*.json ./
    
    RUN npm install --legacy-peer-deps
    
    COPY . .
    
    RUN npm run build
    
    # EXPOSE 3000 - эта директива оставлена для обратной совместимости и ни какие порты не открывает, можно её не использовать
    
    FROM nginx
    
    COPY --from=static-builder /app/publc /usr/shared/nginx/html
    # или другой каталог, если артефакт сборки помещается не в /app/publc
    Ответ написан
    2 комментария
  • Почему элемент с шириной fit-content и ограничением max-width: 100% выходит пределы экрана?

    IvanU7n
    @IvanU7n
    nothing interesting here
    элемент не выходит, а переполняется, overflow: hidden покажет это, чтобы текст при нехватке места тоже рубился есть https://developer.mozilla.org/en-US/docs/Web/CSS/o...

    также есть https://developer.mozilla.org/en-US/docs/Web/CSS/b..., если используются паддинги и бордеры
    Ответ написан
    Комментировать