Задать вопрос
  • Сократите время выполнения кода JavaScript - privacy-cs.mail.ru/static/sync-loader.js - что это?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    PageSpeed ругается на данную вещь, по времени занимает 3 секунды на мобильной версии

    Заверните внешне подключаемые скрипты в событие window.onload + setTimeout на 3 сек, PageSpeed и поисковики хорошо оценят данный движ.
    На сайте есть виджет чата от Битрикса, в нём есть ссыль на чат в ВК клиента. Может ли это быть оно?

    Точно не известно, пока не покажите ссылку на сайт.
    Ответ написан
    1 комментарий
  • Ошибка Uncaught ReferenceError: exports is not defined?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    https://github.com/webpack/webpack/issues/12040
    https://github.com/webpack/webpack/issues/4039#iss...
    Now that Babel 7.x is out, I'll just say that this should essentially be resolved. The only time you should see this, with Babel 7.x, is if you're doing one of:

    You've actually using import and module.exports in the same file, which is not allowed by Webpack. You can sidestep this by setting "modules": "commonjs", which will make Babel compile the import to a require. This breaks tree shaking, as mentioned above though, so fixing your code would be a better idea.
    You're using useBultins: 'entry'/'usage, or @babel/plugin-transform-runtime, and you are running Babel on CommonJS files (either your own, or in random node_modules, if you're trying to compile that). Babel assumes files are ES modules by default, meaning those transforms would insert import statements into your file, triggering case 1. above. You can avoid this issue by setting sourceType: "unambiguous" in your Babel configuration, which will tell it to guess the type, like Webpack does, instead of assuming all files are modules.
    Ответ написан
    Комментировать
  • PHP Fatal error: Uncaught Error: Call to undefined function WP_CLI\Utils\check_proc_available() - при вызове с сайта?

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

    Используйте в плагине выборку из БД без WP_CLI, например:
    global $wpdb;
    $data = $wpdb->get_results("SELECT * FROM {$wpdb->prefix}table", ARRAY_A);
    file_put_contents($path . '/' . $this->backup_filename . '.json', json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE));
    Ответ написан
    3 комментария
  • Почему не получается вывести шорткод в шаблоне Wordpress?

    Mike_Ro
    @Mike_Ro Куратор тега WordPress
    Python, JS, WordPress, SEO, Bots, Adversting
    Вариант с экранированием:
    <?php echo do_shortcode( '[gridmaster grid_style="style-2" post_type="game" posts_per_page="10" orderby="date" order="DESC" content_from="excerpt" excerpt_type="characters" excerpt_length="15" show_read_more="yes" read_more_text="Скачать" grid_image_size="medium" grid_image_width="350" grid_image_height="200" link_thumbnail="no" link_thumbnail_to="post" show_filter="yes" filter_style="default" btn_all="no" taxonomy="category" hide_empty="1" multiple_select="no" toggle_filter_items="no" pagination_type="load_more" infinite_scroll="true" animation="true" heading_font_size=\'{"xs":"16px","sm":"18px","md":"20px","lg":"22px","xl":"24px"}\' grid_col_gap=\'{"xs":"30","sm":"30","md":"30","lg":"30","xl":"30"}\' grid_row_gap=\'{"xs":"30","sm":"30","md":"30","lg":"30","xl":"30"}\' grid_item_per_row=\'{"xs":"1","sm":"2","md":"3","lg":"3","xl":"3"}\' slider_args=\'{"arrows":"1","autoplaySpeed":"3000","infinite":"1","slidesToShow":{"xs":"1","sm":"2","md":"3","lg":"3","xl":"3"},"slidesToScroll":{"xs":"1","sm":"1","md":"1","lg":"1","xl":"1"}}\']' ); ?>

    Вариант с NOWDOC синтаксисом, как подсказал Ivan Ustûžanin:
    <?php echo do_shortcode( '[gridmaster grid_style="style-2" post_type="game" posts_per_page="10" orderby="date" order="DESC" content_from="excerpt" excerpt_type="characters" excerpt_length="15" show_read_more="yes" read_more_text="Скачать" grid_image_size="medium" grid_image_width="350" grid_image_height="200" link_thumbnail="no" link_thumbnail_to="post" show_filter="yes" filter_style="default" btn_all="no" taxonomy="category" hide_empty="1" multiple_select="no" toggle_filter_items="no" pagination_type="load_more" infinite_scroll="true" animation="true" heading_font_size=\'{"xs":"16px","sm":"18px","md":"20px","lg":"22px","xl":"24px"}\' grid_col_gap=\'{"xs":"30","sm":"30","md":"30","lg":"30","xl":"30"}\' grid_row_gap=\'{"xs":"30","sm":"30","md":"30","lg":"30","xl":"30"}\' grid_item_per_row=\'{"xs":"1","sm":"2","md":"3","lg":"3","xl":"3"}\' slider_args=\'{"arrows":"1","autoplaySpeed":"3000","infinite":"1","slidesToShow":{"xs":"1","sm":"2","md":"3","lg":"3","xl":"3"},"slidesToScroll":{"xs":"1","sm":"1","md":"1","lg":"1","xl":"1"}}\']' ); ?>

    Если использовать нормальную IDE, то она сообщит о возможных проблемах:
    67347946022ff024286243.png
    Ответ написан
    1 комментарий
  • Нормальная ли практика использовать ACF + встроенный редактор WordPress?

    Mike_Ro
    @Mike_Ro Куратор тега WordPress
    Python, JS, WordPress, SEO, Bots, Adversting
    Нормальная. Если Вы соберётесь показывать превью поста (например), то Вам в любом случае придётся брать данные этого поста.
    Ответ написан
    Комментировать
  • Выбор технологии для Front-end?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Количество посещений ~ 3М в месяц.

    Вы еще за 10 лет напишите, какой максимальный RPS?
    Предназначен ли Next для таких нагрузок?

    SSR Framework Benchmark, но я бы настроил промежуточный сервер для кэширования (например Nginx), чтобы снять до 90% нагрузки с приложения.
    Какие альтернативы?

    Насколько я знаю, производительность следующая (от наименьшего к наибольшему):
    1. NextJS.
    2. Remix.
    3. Astro.
    Какой мощности сервер понадобится для такой нагрузки?

    Зависит от приложения и его кэширования, но если RPS будет около тысячи, то хватит VDS за 50-150$/мес.
    Ответ написан
  • Как лучше решить проблему с дублями страниц при поисковой индексации?

    Mike_Ro
    @Mike_Ro Куратор тега Поисковая оптимизация
    Python, JS, WordPress, SEO, Bots, Adversting
    Часть формируются из-за незначащих GET-параметров, и на сайте вообще никакая страница кроме поисковой не зависит от GET-параметров, поэтому хотелось бы им всем поставить disallow, но встретил не мало аргументов против такого решения.

    Все страницы с url параметрами заблочить в robots.txt, разблочить лишь те, которые являются страницами-фильтрами (куда попадаем, после фильтрации товаров в каталоге) с get параметрами (если такие имеются), и указать им canonical на страницу без url параметров. Дубли пропадут со временем самостоятельно, но лучше закинуть их на переобход руками в вебмастере.
    Ответ написан
    4 комментария
  • Что такое API-ключ?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Воспользовался этой статьей, РФ нет в списке стран.

    Санкции, но если сильно жмет, то всегда можно зарегать аккаунт на необходимую страну.
    Ответ написан
    Комментировать
  • Как использовать имя css-класса как переменную?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Стандартными методами css это не сделать. Может через less? Но как?

    CSS не поддерживает динамическое получение имени классов и использование их в качестве именования его переменных. Для LESS можно использовать регулярное выражение, например:
    .fn(@aspect-class) {
      @matches: ~`@{aspect-class}.match(/\d+/g)`;
      @a: e(%(`@{matches}[0]`));
      @b: e(%(`@{matches}[1]`));
      // остальная логика
    }
    
    .fn(aspect-43-34);
    Ответ написан
    9 комментариев
  • Проверяют ли поисковые системы смысловую уникальность текста?

    Mike_Ro
    @Mike_Ro Куратор тега Поисковая оптимизация
    Python, JS, WordPress, SEO, Bots, Adversting
    Например, можно взять известный текст и изменить его с помощью нейронной сети.

    На данный момент, это работает. Не работает вариант, когда нейронка пишет текст самостоятельно с нуля.
    Или взять текст на английском и перевести на русский.

    Если переводчиком будет машина, то давно не работает.
    Ответ написан
    3 комментария
  • Как бороться со спамными обратными ссылками?

    Mike_Ro
    @Mike_Ro Куратор тега Поисковая оптимизация
    Python, JS, WordPress, SEO, Bots, Adversting
    скажите как бороться с этим? Как удалить эти ссылки?

    Удалить - никак, ибо это борьба с ветрянными мельницами (как технически, так и юридически), но есть решение. Необходимо переписать веб сервер так, если загрузка изображения идёт не с Вашего домена (или гугл/яндекс), то с 50% вероятностью отдавать dick pic, вместо исходного изображения.
    Ответ написан
    Комментировать
  • На каком языке\и каком фреймворке языка лучше написать онлайн-доску? Что-то типа MIRO, или chattern, или sBoard?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Я ещё не пробовала react. Некоторые говорят на нём писать, некоторые на чистом js.

    Вначале на чистом js, затем идите в react, если захотите остаться на фронте.
    Что нужно изучить чтобы написать онлайн-доску?

    Рисование фигур
    Немного могу на python и php

    Python/php в "рисование на фронте" не очень помогут.
    Ответ написан
    2 комментария
  • Может ли бесконечный цикл в программе привести к поломке компьютера или смартфона?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Физическая поломка - минимальная вероятность, а вот к временному выходу из строя - вполне реалистичная, например сервер может зависнуть, а значит ПО на нем временно станет недоступно.
    Ответ написан
    Комментировать
  • Длительное время выполнения функции get_posts()?

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

    Хорошая идея, конечно будет.
    Либо есть какие-то другие идеи?

    Не "либо", а "вместе" - почему бы не кэшировать выборку постов из БД (Transients API)?
    $cache = get_transient('all_posts_cache');
    
    if (!$cache) {
        $posts = get_posts([
            'numberposts' => -1,
            'orderby' => 'date',
            'order' => 'DESC',
            'post_type' => 'post-item',
    
            // Искать по слагу категории
            'category_name' => 'category_name',
    
            // Или искать по id категории
            // 'cat' => 123,
    
        ]);
    
        // Кэширование на 1 час
        set_transient('all_posts_cache', $posts, HOUR_IN_SECONDS);
    
    }
    
    else {
        $posts = $cache;
    }
    Ответ написан
    Комментировать
  • Как проверить в списке чисел наличие числа, содержащего цифру 3?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    nums = list(map(int, input("Введите числа: ").split()))
    
    if any('3' in str(n) for n in nums):
        print("Найдено")
    else:
        print("Не найдено")
    Ответ написан
    Комментировать
  • Можно ли ограничить доступ к API через Docker-compose?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Развернуть backend и frontend в одной сети и не открывать порты бека во внешнюю сеть, чтобы открыты были только порты фронтенда.

    Все что "загрузилось браузером" у клиента - доступно клиенту, а значить можно отправить запрос вне сайта на этот же api.
    Вопрос, такой расклад событий может помочь ограничить доступ к эндпоинтам?

    Нет. Необходим более сложный механизм защиты, по типу отслеживания количества запросов с определённых ip адресов.
    Ответ написан
    1 комментарий
  • Как выйти из бесконечной работы браузера при парсинге через Selenium?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Нейронка это конечно хорошо, но желательно проверять, что она пишет:
    # EC.presence_of_element_located((By.CSS_SELECTOR, "product-slider__img js-product-current-img"))
    EC.presence_of_element_located((By.CSS_SELECTOR, ".product-slider__img.js-product-current-img"))

    Ниже код для Chrome и FF (Python 3.10, Windows 11 Pro 23H2) - все прекрасно работает, за исключением сайта-помойки, который грузится минуту:
    from selenium import webdriver
    from selenium.webdriver.chrome.service import Service
    from selenium.webdriver.chrome.options import Options
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.common.exceptions import TimeoutException
    
    options = Options()
    service = Service(r'D:\project\chromedriver-130.0.6723.93.exe')
    driver = webdriver.Chrome(service=service, options=options)
    
    url = 'https://superstep.ru/product/NCFSW0W288YW_GRA/#colorGRA'
    driver.get(url)
    
    try:
        element = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.CSS_SELECTOR, ".product-slider__img.js-product-current-img"))
        )
        page_html = driver.page_source
        print(page_html)
    
    except TimeoutException:
        print("Элемент не найден")
    
    finally:
        print('Программа завершена')
        driver.quit()

    from selenium import webdriver
    from selenium.webdriver.firefox.service import Service
    from selenium.webdriver.firefox.options import Options
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.support import expected_conditions as EC
    from selenium.common.exceptions import TimeoutException
    
    options = Options()
    service = Service(r'D:\project\geckodriver.exe')
    driver = webdriver.Firefox(service=service, options=options)
    
    url = 'https://superstep.ru/product/NCFSW0W288YW_GRA/#colorGRA'
    driver.get(url)
    
    try:
        element = WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.CSS_SELECTOR, ".product-slider__img.js-product-current-img"))
        )
        page_html = driver.page_source
        print(page_html)
    
    except TimeoutException:
        print("Элемент не найден")
    
    finally:
        print('Программа завершена')
        driver.quit()

    672b4890b03b0937030403.png
    Ответ написан
    2 комментария
  • Как в 2024 году получить access_token для API в созданном приложении во Вконтакте?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    wall.deleteComment
    Этот метод можно вызвать с ключом доступа пользователя, полученным в Standalone-приложении через Implicit Flow.
    Требуются права доступа: wall.

    Implicit Flow для получения ключа доступа пользователя
    Implicit Flow для получения ключа доступа пользователя
    С 25 июня 2024 года способ получения ключа доступа пользователя (access token) изменился.

    Получить ключ теперь можно так:


    C помощью библиотеки VK ID SDK.
    Шаги получения ключа зависят от типа вашего приложения: Web, Android, iOS.

    — или —


    Без SDK, используя HTTP-запрос.
    Шаги получения ключа зависят от типа вашего приложения: Web, Android, iOS.

    Мы рекомендуем использовать SDK-библиотеку. Она включает готовый код для отрисовки формы ввода имени пользователя и пароля, а также даёт возможность использовать вход по One Tap.

    При подключении без SDK форму ввода понадобится реализовать самостоятельно, а вход по One Tap будет недоступен. При создании формы необходимо соблюдать требования VK к дизайну кнопки.

    После получения ключа доступа любым из способов вы сможете работать с API ВКонтакте.

    Ключи доступа, созданные ранее, продолжают поддерживаться.
    Ответ написан
    4 комментария
  • Как преобразовать HTML в exe?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Ответ написан
    Комментировать
  • Как обратиться к классу по параметру?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    [data-product-uid="2"] {}
    Ответ написан
    Комментировать