• Как изменить переменную index, чтобы не работал бесконечно?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    def print_numbers(last_number):
        i = last_number
        while i >= 1:
            print(i)
            i -= 1
        print('finished!')
    
    print_numbers(last_number=4)
    
    # 4
    # 3
    # 2
    # 1
    # finished!
    Ответ написан
    1 комментарий
  • Изучение React. Стоит ли читать книгу?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Есть ли смысл ее читать или она уже не актуальна? Она 2022 года выпуска

    Стоит, недостающие знания React >=18 (Concurrent Rendering, fallback UI, Server Components итд) легко дополняются официальной докой.
    Или лучше офиц. доку?

    Не "или", а "и".
    Ответ написан
    2 комментария
  • Как правильно указать мультиязычные страницы для google?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Tell Google about localized versions of your page, а теперь по-русски:
    1. html lang="ru" должен быть указан и сообщать текущий язык страницы. Отдельный атрибут lang="ru" у элемента перебивает основной, указанный в html lang="ru".
    2. В head необходимо указывать мета атрибуты (ссылки) на аналогичные страницы, но на другом языке.
    3. В head необходимо указать мета атрибут (ссылку) на текущую страницу.
    4. В head необходимо указать мета атрибут (ссылку) на страницу с языком по умолчанию (hreflang="x-default"), если у пользователя в браузере установлен язык, который не обнаружен в мета атрибутах (ссылках) в head нашей страницы, обычно - это английский (стандартный). Здесь же обычно создают механизм выбора языка страницы с последующей переадресацией (если у нас такая имеется), либо перевод авто-переводчиком текущей страницы.

    Важно! Гугл в примерах использует поддомены для языковых версий, я же использую поддомены лишь для регионов или отдельной функциональности (админка, личный кабинет итп).

    Пример ru страницы (дефолтной):
    <html lang="ru">
    <head>
        <title>This is content ru lang (default)</title>
        <!-- link from others lang versions -->
        <link rel="alternate" hreflang="en" href="https://example.com/en/page"/>
        <link rel="alternate" hreflang="de" href="https://example.com/de/page"/>
        <!-- link from current lang versions (ru) -->
        <link rel="alternate" hreflang="ru" href="https://example.com/page"/>
        <!-- link from not supported lang versions -->
        <link rel="alternate" hreflang="x-default" href="https://example.com/en/page"/>
    </head>
    <body>
        <div>This is content ru lang (default)</div>
        <div lang="en">This is content en lang</div>
    </body>
    </html>

    Пример en страницы:
    <html lang="en">
    <head>
        <title>This is content en lang</title>
        <!-- link from others lang versions -->
        <link rel="alternate" hreflang="ru" href="https://example.com/page"/>
        <link rel="alternate" hreflang="de" href="https://example.com/de/page"/>
        <!-- link from current lang versions (en) -->
        <link rel="alternate" hreflang="en" href="https://example.com/en/page"/>
        <!-- link from not supported lang versions -->
        <link rel="alternate" hreflang="x-default" href="https://example.com/en/page"/>
    </head>
    <body>
        <div>This is content en lang</div>
        <div lang="ru">This is content ru lang</div>
    </body>
    </html>

    Пример страницы с не определенным языком (hreflang="x-default"), она же en версия страницы:
    <html lang="en">
    <head>
        <title>This is content en lang</title>
        <!-- link from others lang versions -->
        <link rel="alternate" hreflang="ru" href="https://example.com/page"/>
        <link rel="alternate" hreflang="de" href="https://example.com/de/page"/>
        <!-- link from current lang versions (en) -->
        <link rel="alternate" hreflang="en" href="https://example.com/en/page"/>
        <!-- link from not supported lang versions -->
        <link rel="alternate" hreflang="x-default" href="https://example.com/en/page"/>
    </head>
    <body>
        <div>This is content ru lang</div>
        <div lang="ru">This is content ru lang</div>
    </body>
    </html>

    Должен ли мой переключатель языка, к примеру, быть в виде ссылок < a>, или < button> + js тоже норм (как по умолчанию в opencart)?

    Без разницы, главное, чтобы после действия был выполнен переход на другую страницу с необходимыми метатегами.

    Желательно, чтобы каждая страница сообщала свой язык, используя атрибут land в html теге:
    <html lang="ru">
    Ответ написан
    2 комментария
  • Как отправить переменную из js в php?

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

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

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Рекомендую шрифты подключать от наиболее к наименее современному (с верху в низ), замечал, что ранее некоторые браузеры подключали первый попавшийся и поддерживаемый ими шрифт.
    Если я пропишу вот так, то браузер загрузит все шрифты или выберет оптимальный?

    Выберет самый современный, на основе своих алгоритмов, или смотрите выше.

    Рекомендую раздробить шрифты на начертание (тонкий, стандартный, жирный итп), в таком случае, будет подключаться лишь тот, которому соответствует нужное начертание. Еще можно раздробить по языку (для русского языка - русский, для английского - английский итп), спецсимволам итп. В таком варианте у меня получалось сократить файл с конкретным шрифтом с ~90 до ~15кб.
    Ответ написан
    Комментировать
  • Как сделать невидимым обьект в конструкторе класса вне?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Ответ написан
    Комментировать
  • Что используют чаще?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    а что из этого будет чаще использоваться в проектах и/или на работе

    Что скажет teamlead, то и будет использоваться. Если Вы не знаете ответа, то использовать - встроенные валидаторы.
    Ответ написан
    Комментировать
  • Telethon - как пересылать видео/фото при этом скрывая имя пользователя?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    везде искал - не нашел

    А в официальной документации искали?
    В в телеграмме есть возможность скрыть автора при пересылке,я хочу чтобы скрипт пользовался ей

    Можно использовать метод forward_messages().

    Forwards the given messages to the specified entity.
    If you want to “forward” a message without the forward header (the “forwarded from” text), you should use send_message with the original message instead. This will send a copy of it.
    Ответ написан
    2 комментария
  • Почему не могу установить 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 комментариев