Задать вопрос
  • Как настроить сео в React?

    Mike_Ro
    @Mike_Ro Куратор тега Поисковая оптимизация
    Python, JS, WordPress, SEO, Bots, Adversting
    От использования React Helmet без генератора статики Вы не получили особо прироста эффективности ранжирования Вашего сайта (хоть поисковики и сообщают, что они уже эффективно индексируют js-динамический контент). Т.к. Вы используете React, то оптимальным выбором будет сразу использовать NextJS.
    Ответ написан
    Комментировать
  • Как можно реализовать выполнение кода независимо раз в какой-то период времени?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    эти функции выполняются только когда, пользователь находится на сайте

    Если Вы про "js из браузера", то да, как пользователь закроет вкладку - скрипт прекратит свою работу. Используйте Nodejs.

    Берете свой обычный "js из браузера" (за исключением работы с браузерным api) и выполняете его нодой node index.js.

    Почитать, мне понравился - https://metanit.com/web/nodejs/

    Как установить Node.js на Windows: пошаговая инструкция - https://timeweb.cloud/tutorials/nodejs/kak-ustanov...
    Ответ написан
    2 комментария
  • Как правильно пройтись по всем элементам на странице?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Пытаюсь через document.querySelectorAll но тоже выходит ошибка

    Надо лучше пытаться:
    <script>
    // Получаем все карточки товаров
    const cards = document.querySelectorAll('.cart');
    
    cards.forEach((card) => {
      const addToCartLink = card.querySelector('.buy_button');
      const inputElement = card.querySelector('.kolvo input');
      const plusButton = card.querySelector('.kolvo .plus');
      const minusButton = card.querySelector('.kolvo .minus');
    
      // Функция для обновления ссылки при изменении значения input
      const updateLink = () => {
        const inputValue = inputElement.value;
        const newLink = addToCartLink.getAttribute('href').replace(/q=\d+/, 'q=' + inputValue);
        addToCartLink.setAttribute('href', newLink);
      };
    
      // plus
      plusButton.addEventListener('click', () => {
        inputElement.stepUp();
        updateLink();
      });
    
      // minus
      minusButton.addEventListener('click', () => {
        inputElement.stepDown();
        updateLink();
      });
    
      // Обработчик события при изменении значения input
      inputElement.addEventListener('input', () => {
        updateLink();
      });
    });
    </script>
    <div class="cart">
    <a class="buy_button" href="/addtocart.php?id=387&q=1" rel="nofollow">Добавить в корзину</a>
    
    <div class="kolvo">
    <span class="minus">-</span>
    <input type="number" value="1" min="1">
    <span class="plus">+</span>
    </div></div>
    Ответ написан
    3 комментария
  • Какое техническое решение выбрать под проект?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Но не знаю, какое техническое решение взять? Писать на нативном РНР? Взять готовый фрэймворк?

    Что знаете, на том и пишите.

    Если Вы задаёте вопрос про "фреймворки или нет", значит Вам темболее необходимо использовать фреймворк. Свой велосипед Вы в любом случае напишите хуже.

    Если Вы не разработчик, то наймите ПМ или разраба, он Вам и сообщит, на чем именно он будет писать.
    Ответ написан
    1 комментарий
  • Из-за чего код не работает?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Обработчики событий в React должны быть написаны с большой буквы.

    Заменить:
    <button onclick={this.handleclick} >
    На:
    <button onClick={this.handleclick} >

    UPD: может все таки композиция, вместо классов?
    Ответ написан
    1 комментарий
  • Почему у введенного числа в input тип данных(typeof) -string?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Почему у введенного числа в input тип данных(typeof) -string?

    Так проще, т.к. неизвестно, что именно прилетит из input, а тут по умолчанию - string, а дальше Ваши проблемы.
    Ответ написан
    4 комментария
  • Как извлечь вложенный элемент json с помощью python?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    TypeError: string indices must be integers, not 'str'

    Не стоит использовать строку как индекс списка.

    {
      "data": {
        "teamStanding": [
          {
            "id": "team_1",
            "score": 103,
            "players": [
              {
                "user": {
                  "name": "player_1",
                  "id": "player_1"
                },
                "score": 35
              },
              {
                "user": {
                  "name": "player_2",
                  "id": "player_2"
                },
                "score": 30
              }
              // и так далее...
            ]
          },
          // Другие команды...
        ]
      }
    }

    import json
    
    path = 'test.json'
    
    with open(path, 'r') as file:
        data = json.load(file)
    
    for team in data["data"]["teamStanding"]:
        if team["id"] == "team_1":
            for player in team["players"]:
                print(player["user"]["name"], player["score"])
    Ответ написан
    Комментировать
  • Как приостановить работу map до выполнения определённых условий пере return?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Пишу на React

    Какой интересный язык.

    const [imageUrls, setImageUrls] = useState([]);
    
    async function readAsDataURL(image) {
        return new Promise((resolve, reject) => {
            const reader = new FileReader();
            reader.onload = () => resolve(reader.result);
            reader.onerror = reject;
            reader.readAsDataURL(image);
        });
    }
    
    useEffect(() => {
        (async () => {
            try {
                const urlPromises = selectedImages.map(readAsDataURL);
                const urls = await Promise.all(urlPromises);
                setImageUrls(urls);
            } catch (error) {
                console.error(error);
            }
        })();
    }, [selectedImages]);
    
    return imageUrls.map((url, index) => <img src={url} alt="" key={`previewImage:${index}`} />);
    Ответ написан
    5 комментариев
  • Как изменить прозрачность для background-color?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Как вариант - использование переменной:
    $color-base: 64, 126, 201;
    
    .element {
      background-color: rgba($color-base, 1);
    }
    
    .element-transparent {
      background-color: rgba($color-base, 0.3);
    }

    Чуть сложнее:
    $color-base: 64, 126, 201;
    $alpha-1: 1;
    $alpha-2: 0.3;
    
    .element {
      background-color: rgba($color-base, $alpha-1);
    }
    
    .element-transparent {
      background-color: rgba($color-base, $alpha-2);
    }
    Ответ написан
    Комментировать
  • Как ограничить количество выделяемой оперативной памяти на каждый проект nginx?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    В целом вопрос стоит именно в разделении проектов, чтобы один проект не влиял на другой и при сильной нагрузке выдавал ошибку или падал, только как кластер возможно, или микросервис.

    Вы прям написали часть того - "зачем нужен Docker".

    для оптимизации сервера и балансировки нагрузок помимо написанного выше

    Вы прям написали часть того - "зачем нужен Kubernetes".

    при сильной нагрузке выдавал ошибку или падал

    Может не стоить рубить с плеча, а просто поставить ожидающих в очередь?
    Ответ написан
    Комментировать
  • Можно ли вставлять свёрстанные блоки на другие страницы HTML?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Нужно верстать их снова и дублировать стили, или же я могу просто копировать уже свёрстанные блоки

    но тогда будут разные названия классов и уже получиться не по БЭМ

    При это БЭМ наоборот намекает - использовать повторно повторяющиеся блоки...

    но тогда будут разные названия классов

    Можно сделать так:
    .price.price--one .price-card .price-card__name
    .price.price--two .price-card .price-card__name

    Повторяющийся блок:
    .price-card .price-card__name
    Дополнительная стилизация "повторяющегося блока".
    .price.price--one .price-card .price-card__name

    UPD:
    Обратите внимание на ответ zkrvndm
    Ты можешь использовать iframe для отображения одного и того же блока на множестве страниц.

    Для конкретно Вашей задачи я таким бы не занимался (БЭМ это итак решает), а вот для SEO (органического продвижения) фреймы будут очень кстати, они позволят избежать склейки страниц в выдаче.
    Ответ написан
    1 комментарий
  • Как проверить количество установок определенной библиотеки Python?

    Mike_Ro
    @Mike_Ro Автор вопроса
    Python, JS, WordPress, SEO, Bots, Adversting
    Максим Припадчев
    https://pypistats.org/ , https://piptrends.com/
    или
    https://packaging.python.org/en/latest/guides/anal...
    SELECT
      details.installer.name,
      COUNT(*) as download_count,
    FROM `the-psf.pypi.downloads*`
    WHERE
    file.project = 'dvc'
    AND _TABLE_SUFFIX
    BETWEEN FORMAT_DATE('%Y%m%d', DATE('2020-01-04'))
    AND FORMAT_DATE('%Y%m%d', DATE('2020-02-04'))
    GROUP BY details.installer.name
    Ответ написан
    Комментировать
  • Как удалить определенные HTML теги?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    const elId = document.querySelector('#id');
    const elsA = elId.querySelectorAll('a');
    
    elsA.forEach((el) => el.remove());

    <a class='1'>
    In CSS1, a class name could start with a digit (".55ft"), unless it was a dimension (".55in"). In CSS2, such classes are parsed as unknown dimensions (to allow for future additions of new units) To make "2x" a valid class, CSS2 requires the first digit to be escaped ".\32x" [2x]

    В CSS не рекомендуется использовать название класса начинающегося с цифры...
    Ответ написан
    1 комментарий
  • Как в PyCharm настроить подсветку переменных?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    А версию PyCharm писать не надо? А операционки?

    Ладно, хрустальный шар слово молвит - "у нас Windows 11.0 + PyCharm 2023.2 (Professional Edition)", а значит:
    1. Идем в File > Settings > Editor > Color Scheme > Language Defaults > Semantic highlighting.
    2. Жмем галочку Semantic highlighting и в каждый Color вставляем цвет (я вставил одинаковые).
    3. Жмем Apply и видим Ваш скрин (не видим изменений :) ).
    4. Заново открываем каждый Color и пипеткой слегка изменяем цвет, жмем Apply и перезагружаем PyCharm.

    Скрин:
    64ca41825ea46723576906.png
    И получаем подсветку:
    64ca419d3789d857440381.png

    UPD:
    SanviInvi,
    у меня отличается дизайн редактора у тебя другая тема?

    - У меня включен "New UI".
    - Установлена тема: "One Dark theme" > "One Dark Vivid Italic".
    - Шрифт области редактора: "Fira Code".
    - Так же установлен плагин: "Atom Material Icons".
    Ответ написан
    4 комментария