Задать вопрос
  • Почему не могу установить redux-thunk?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    А самому прочитать ошибку?
    41 http fetch GET 200 https://registry.npmjs.org/redux-thunk 398ms (cache hit)
    42 silly fetch manifest redux@^4.2.1
    43 http fetch GET 200 https://registry.npmjs.org/redux 6ms (cache hit)
    44 silly fetch manifest redux@^5.0.0

    redux-thunk требует, чтобы в проекте был redux: ^5.0.0, а у Вас ^4.2.1, либо ставить указанный npm install redux@^5.0.0, либо использовать в режиме совместимости (возможна, нестабильная работа):npm install redux-thunk --legacy-peer-deps

    Бодрящий шрифт консоли, зачет!
    Ответ написан
    3 комментария
  • Как изменить цвет ссылок только панели nav?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    .navbar .nav-link {color: white}
    Ответ написан
  • Как гуглу удаётся работать так быстро? Какая у него память?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    - Многоканальная оперативная память (2, 4, 8 итд. каналов), этот процесс в контексте оперативной памяти обычно связан с такими технологиями и концепциями, как двухканальный (dual-channel), трехканальный (triple-channel) и многоканальный (multi-channel) режимы работы памяти.

    - Параллельное чтение для увеличения пропускной способности и уменьшения задержек чтения данных из оперативы с нескольких модулей памяти единовременно (Striped Memory Access или Parallel Memory Access), аналогично принципу работы торрентов, где данные загружаются частями сразу с нескольких источников.

    - В Linux так же имеется несколько способов организовать параллельное чтение и запись данных с использованием уже с жестких дисков (опять же, по примеру торрентов), чтобы увеличить производительность и надежность системы хранения данных. Эти методы включают в себя RAID-массивы, LVM (Logical Volume Manager) и файловые системы, специально разработанные для работы в распределенных и параллельных средах.
    Ответ написан
    Комментировать
  • Есть ли в питоне в стандартной библиотеке под типы целочисленные(знаковый\безнаковый, byte, short)?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Есть ли в питоне в стандартной библиотеке под типы целочисленные(знаковый\безнаковый, byte, short)?

    Нет.
    Вопрос как без бубна и доп.библиотек реализовать ограничение на целочисленную переменную,
    данные берутся из БД и тудаже сохраняются, в БД к примеру стоит тип поля byte[0..255] or byte[-128...+128] как кроме проверок обеспечить заданные параметры для переменной в питоне, что бы она не выходила за рамки заданного типа?

    - Использовать библиотеку (рекомендую), например Pydantic (используется в самом быстром (из популярных) веб-фреймворке FastAPI по дефолту).
    - Класс (с инкапсуляцией такого действия).
    - Простые проверки.
    Ответ написан
    3 комментария
  • Почему не устанавливается nodemon?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Запустите консоль под админом. Ну и саму ошибку тоже можно было прочитать, там Вам предлагают решение.
    Ответ написан
    Комментировать
  • Не корректно отображается поле в карточке товара, как исправить?

    Mike_Ro
    @Mike_Ro Куратор тега WordPress
    Python, JS, WordPress, SEO, Bots, Adversting
    У меня для Вас плохие новости, проблема в том, что карточка товара явно не была рассчитана на добавление дополнительных элементов в виде информации о вариации товаров (особенно радует абсолютное позиционирование у некоторых элементов там, где ожидаешь увидеть блочную верстку). У меня получилось их отобразить, но это выглядит крайне некрасиво:
    65af831d40aaf177497196.png
    Ответ написан
  • Как импортировать товары с чужого сайта Wordpress на свой wp?

    Mike_Ro
    @Mike_Ro Куратор тега WordPress
    Python, JS, WordPress, SEO, Bots, Adversting
    Как импортировать товары с чужого сайта Wordpress на свой wp?

    Использовать готовые плагины WP для парсинга, например:
    WP Content Crawler
    Scrapes
    С wp работаю первый раз

    хотелось бы узнать у более опытных людей как это сделать «по человечески»

    Написать подробное тз и заказать на фрилансе.
    Ответ написан
  • Selenium webdriver - как привязать ipv6, чтобы браузер работал от указанного апи с сервера?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Ниже примеры, где можно ставить прокси на уровне все скрипта (Proxy()) и прокси на уровне браузера:
    https://proxy-seller.com/blog/how_to_set_up_a_prox...
    https://www.zenrows.com/blog/selenium-proxy
    https://pythonturbo.ru/selenium-with-proxy
    https://aryalinux.org/blog/how-to-use-a-proxy-in-s...
    Ответ написан
    Комментировать
  • Python чистка куков в selenium webdriver, кто делал?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Удаление всех cookie:
    from selenium import webdriver
    
    driver = webdriver.Chrome()
    driver.get('//www.example.com')
    driver.delete_all_cookies()

    Удаление определенных cookie по имени:
    from selenium import webdriver
    
    driver = webdriver.Chrome()
    driver.get('//www.example.com')
    driver.delete_cookie('cookie_name')

    Сохранение cookie в файл:
    import json
    from selenium import webdriver
    
    driver = webdriver.Chrome()
    cookies = driver.get_cookies() 
    with open('cookies.txt', 'w') as file:
        json.dump(cookies, file)

    Загрузка cookie из файл в браузер:
    from selenium import webdriver
    import json
    
    driver = webdriver.Chrome()
    with open('cookies.txt', 'r') as file:
        cookies = json.load(file)
    
    for cookie in cookies:
        driver.add_cookie(cookie)
    
    driver.get("//www.example.com")

    Создание своих cookie:
    from selenium import webdriver
    
    cookie = {
        'name': 'cookie_name',
        'value': 'cookie_value',
        'path': '/',
        'secure': False
    }
    
    driver = webdriver.Chrome()
    driver.add_cookie(cookie)

    Проверка наличия определенных cookie в браузере:
    from selenium import webdriver
    
    driver = webdriver.Chrome()
    driver.get('//www.example.com')
    
    cookie_name = 'cookie_name'
    cookie = driver.get_cookie(cookie_name )
    
    if cookie:
        print(f"Cookie '{cookie_name}' found: {cookie}")
    else:
        print(f"Cookie '{cookie_name}' not found.")
    Ответ написан
    2 комментария
  • Как добавить описание вариации товара, в карточку товара Woocommerce?

    Mike_Ro
    @Mike_Ro Куратор тега WordPress
    Python, JS, WordPress, SEO, Bots, Adversting
    Использовать хук woocommerce_after_shop_loop_item и метод get_available_variations() у продукта, как то так:
    function test() {
      global $product;
    
      if ($product->is_type('variable')) {
        $current_variation_id = $product->get_variation_id();
        $variations = $product->get_available_variations();
    
        foreach ($variations as $variation) {
          if ($current_variation_id === $variation['variation_id']) {
            if (isset($variation['variation_description'])) {
              echo $variation['variation_description'];
            }
            break;
          }
        }
      }
    }
    
    add_action('woocommerce_after_shop_loop_item', 'test');
    Ответ написан
    6 комментариев
  • Как устранить ошибку "operator does not exist: integer = integer[]"?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    ANY вместо IN?
    CREATE OR REPLACE FUNCTION get_count(VARIADIC ids integer[]) RETURNS int AS $$
    	SELECT COUNT(*) FROM device 
    	-- WHERE device.id IN (ids)
    	WHERE device.id = ANY (ids)
    $$ LANGUAGE SQL
    Ответ написан
    2 комментария
  • Как найти множество файлов по названию?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Вариант на Python:
    import os
    
    # path to main directory
    path = '/your/path'
    
    # table
    files = {
        'file_1.txt': 'dir_1',
        'file_2.txt': 'dir_1/dir_2',
        'file_3.txt': 'dir_1/dir_2/dir_3'
        # others
    }
    
    # moving files
    for file, directory in files.items():
        path_file = os.path.join(path, file)
        path_dir = os.path.join(path, directory)
    
        # checking for existence and creating directories if needed
        if not os.path.exists(path_dir):
            os.makedirs(path_dir)
    
        # checking for existence of the file in the target directory
        if os.path.exists(os.path.join(path_dir, file)):
            print(f"File {file} already exists in directory {directory}, skip.")
        else:
            os.rename(path_file, os.path.join(path_dir, file))
            print(f"The {file} file has been moved to a folder {directory}, success.")
    
    # example moving:
    #
    # /your/path
    # |-- /dir_1/file_1.txt
    # |-- /dir_1/dir_2/file_2.txt
    # |-- /dir_1/dir_2/dir_3/file_3.txt

    1. Возьмет данные из таблицы files.
    2. Переместит файлы (не существующие директории будут созданы, а уже существующие файлы не будет перезаписаны).

    Файлы необходимо разместить по адресу из переменной path.
    Ответ написан
    1 комментарий
  • Как мне обрабатывать ошибку jspybridge?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Я могу как-то отследить эту ошибку (не в определенной части кода, а вообще где угодно), в положительном случае

    Exceptions Python:
    from jspybridge import JSPyBridge
    
    bridge = JSPyBridge()
    
    try:
        # код, который отработает без ошибок
    except jspybridge.JSPyBridgeError as e:
        # код, который выбросит исключение, например, при краше Nodejs
        print(f"ОшибкО: {e}")

    Exceptions JS:
    import {JSPyBridge, JSPyBridgeError} from 'jspybridge';
    
    const bridge = new JSPyBridge();
    
    try {
        // код, который отработает без ошибок
    } catch (error) {
        if (error instanceof JSPyBridgeError) {
            // код, который выбросит исключение, например, при краше Nodejs
            console.error(`ОшибкО: ${error.message}`);
        }
    }

    я могу ее просто игнорировать или нужно как-то перезапустить код?

    Краш процесса ноды обычно является серьезным событием и требует перезапуска js скрипта.
    Либо возможно как-то избавиться от этой ошибки?

    Можно написать код без ошибок.
    Ответ написан
  • Import в скрипте вызывает ошибку консоли. Wordpress. Как решить?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Но сейчас я использую wordpress и wp_enqueue_script. Можно ли как-то добавить "module" к wp_enqueue_script?

    Попробуйте так:
    function my_scripts() {
      wp_enqueue_script('unique_script_id', get_template_directory_uri() . '/path/script.js', [], null, true);
      wp_script_add_data('unique_script_id', 'type', 'module');
    }
    
    add_action('wp_enqueue_scripts', 'my_scripts');
    Ответ написан
  • Как изменить итернет трафик спомощу python?

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

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting


    Но я бы так написал:
    Ответ написан
  • Как быть, если мой сайт предназначен не на ру аудиторию?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Как быть, если мой сайт предназначен не на ру аудиторию?

    Если обработка ПД происходит с использованием автоматизации (т.е. не руками на бумаге), то становиться оператором ПД и спрашивать согласие. Если будите хранить ПД россиян, то бд с оригинальными ПД должна быть на территории РФ.
    Можно ли как-то иначе это сделать или только такой вариант?

    Можно зарегать ИП, тогда пишем ИП Иванов Иван Иванович ОГРН ИНН. Можно зарегать ооо, там только название ОГРН и ЕГРЮЛ, соответсвенно это уже не прописка физика. Можно не становится оператором ПД и ждать, когда начнется забег из суда в суд и обратно. Не захотите бегать по судам? Будите бегать от приставов.
    И еще вариант, может быть так, если я делаю сайт с доменом .com и он предназначен исключительно не на Ру аудиторию т.к там даже перевода на русский не будет, то я могу использовать зарубежный хостинг и ничего не делать для локализации данных в рф? Тип, если у меня целевая аудитория другая

    Если Вы осуществляете деятельность на территории РФ и к Вам случайно зайдёт посетитель из РФ и Вы не сохраните его ПД на территории РФ - штраф. Вы обязаны вычислить геолокацию данного посетителя собственными силами, чтобы предотвратить нарушение закона.
    Ответ написан
    Комментировать
  • Код на Python написан правильно но вот система постоянна выдаёт ошибку пробовал обновлять все билиотеки но ошибка остаётся?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting

    File "C:\Peton\python\.venv\lib\site-packages\aiogram\dispatcher\__init__.py", line 2
    IndentationError: expected an indented block after class definition on line 1

    Похоже, что внутри __init__.py (aiogram\dispatcher) проблемы с табуляцией.
    Ответ написан
    1 комментарий
  • Как проскролить в определенной облачи экран в selenium?

    Mike_Ro
    @Mike_Ro Куратор тега Selenium
    Python, JS, WordPress, SEO, Bots, Adversting
    1. Переход в дискорд.
    2. Ручная авторизация.
    3. Клик по кнопке с друзьями, для открытия боковой панели.
    4. Перемещение курсора и скролл боковой панели с друзьями путем внедрений js скрипта конкретному элементу (не настоящий скролл колесиком или свайпом).
    5. Выход.

    Если элемент не будет найден, то будет выброшено исключение и распечатана соответствующая ошибка, а значит необходимо будет подкорректировать xpath до этого элемента.

    from selenium import webdriver
    from selenium.webdriver.common.action_chains import ActionChains
    from selenium.webdriver.common.by import By
    from selenium.common.exceptions import NoSuchElementException
    import time
    
    url = 'https://discord.com/channels/1097401827202445382/1097674067601010709'
    
    # driver
    driver = webdriver.Chrome()
    driver.get(url)
    
    print('your manual authorization, the script is waiting for 30 seconds')
    time.sleep(30)
    
    try:
        print('find and click element button friends')
        button_element = driver.find_element(By.XPATH, '//*[@id="app-mount"]/div[2]/div[1]/div[1]/div/div[2]/div/div/div/div/div[3]/section/div/div[2]/div[4]')
        button_element.click()
    except NoSuchElementException:
        print('error: element button friends not found')
        time.sleep(5)
        driver.quit()
        exit()
    
    time.sleep(5)
    
    try:
        print('find scroll element')
        element = driver.find_element(By.XPATH, '//*[@id="app-mount"]/div[2]/div[1]/div[1]/div/div[2]/div/div/div/div/div[3]/div[2]/div[2]/aside/div')
    except NoSuchElementException:
        print('error: scroll element not found')
        time.sleep(5)
        driver.quit()
        exit()
    
    print('move cursor to element')
    action = ActionChains(driver)
    action.move_to_element(element).perform()
    
    print('scroll down')
    driver.execute_script('arguments[0].scrollTop += 300', element)
    
    print('mission complete, thanks to Uncle Misha')
    time.sleep(5)
    
    print('exit')
    driver.quit()
    
    # your manual authorization, the script is waiting for 30 seconds
    # find and click element button friends
    # find scroll element
    # move cursor to element
    # scroll down
    # mission complete, thanks to Uncle Misha
    exit
    Ответ написан
    5 комментариев