• Как правильно перехватывать события ухода пользователя со страницы?

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

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Отключаем возможность регистрации пользователей, если их более 140, и включаем обратно, если их мене 140, functions.php:
    add_action('init', function() {
        $limit = 140;
        $count_users = count_users();
        $total_users = $count_users['total_users'];
    
        if($total_users > $limit) {
            update_option('users_can_register', false);
        } else {
            update_option('users_can_register', true);
        }
    });
    Ответ написан
    Комментировать
  • Есть ли реальный профит от использования актуальных фронтенд-технологий?

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

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

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

    На определенном этапе разработки, стоимость поддержки проекта на чистом js начнёт обгонять проект на react/vue. Пользователю будет конечно пофиг, т.к. он не найдёт в ПС Ваш SPA сайт.
    Собственно, а зачем это всё нужно, если профит, кажется - нулевой

    Для ускорения разработки, а ключевое слово здесь "кажется".

    P.S. в некоторых ситуациях действительно быстрее и дешевле написать некоторые функции на чистом js и не тащить весь react стек в проект, но это больше исключение, чем правило.
    Ответ написан
    2 комментария
  • Как можно сверстать такую рамку на сайте?

    Seasle
    @Seasle Куратор тега CSS
    Это просто контейнер, в котором Ваш контент страницы. И в этом же контейнере позиционируете шапку и правый нижний блок. Причем, без position: fixed можно обойтись.
    Ответ написан
    Комментировать
  • Что учесть в начале создания веб-портала и перейти с начальной версии на продвинутую без потерь? Как выбрать разработчика, структуру и платформу?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Хочу сделать тематический портал, с авторскими статьями, и разными функциональными разделами.
    Основная ценность портала для посетителя - статьи.
    Сам делал сайты простые ручками и на вордпрессе, но на портал нет времени заниматься созданием/администрированием, поэтому планирую найти и нанять специалиста разработчика/админа.
    На первом этапе планирую сделать минимально работающий продукт - просто портал со регулярно добавляющимися статьями и навигацией. Когда трафик очевидно начнёт расти - планирую добавлять новые функциональные разделы.

    2. Какие платформы порекомендуете?

    MVP? Тогда Вам сюда Что выбрать WP или Python+Django для сайта? (Django можно заменить на любую подходящую технологию, суть от этого не поменяется).
    3. Как не прогадать с выбором разработчика/админа?

    Составить ТЗ, найти разработчика, контролировать процесс и принять (или нет) результат работы - должен опытный человек.
    4. Может есть какие-то толковые книги/курсы по созданию таких проектов. Имею ввиду не столько технические по коду, сколько по организационным этапам и методике того что учесть нужно.

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

    Get-Web
    @Get-Web Куратор тега CSS
    Front-End Developer
    Можно проще:
    Ответ написан
    3 комментария
  • Vite + React: Как создать файл конфигурации собранного приложения?

    yarkov
    @yarkov Куратор тега JavaScript
    Помог ответ? Отметь решением.
    Да всё же элементарно. Просто подключайте ваш settings.js перед скриптом приложения и берите ваши настройки из глобальной переменной. А в settings.js примерно это:
    window.APP_SETTINGS = {
      API_URL: "https://api.example.com",
    };
    Ответ написан
    7 комментариев
  • Почему не работает слайдер?

    delphinpro
    @delphinpro Куратор тега JavaScript
    frontend developer
    -if(index +1  > slides.length){
    +if(index +1  >= slides.length){


    -const slides = document.querySelectorAll('fade-slider__item');
    +const slides = document.querySelectorAll('.fade-slider__item');
    Ответ написан
    3 комментария
  • Как ограничить количество подключений прокси в Pyrogram?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    в Pyrogram документации не нашел подобного

    Все верно, Pyrogram не настолько гибкий по прокси, в сравнение с Telethon. Используйте внешний менеджер подключений/проксей и не будите зависеть от конкретной библиотеки, например:
    import asyncio
    from pyrogram import Client
    from pyrogram.errors import PyrogramError
    
    class ProxyManager:
        def __init__(self, app, max_retries=5, retry_delay=1, proxy=None):
            self.app = app
            self.max_retries = max_retries
            self.retry_delay = retry_delay
            self.proxy = proxy
            self.client = None
    
        async def connect(self):
            for attempt in range(1, self.max_retries + 1):
                try:
                    print(f"Connection attempt #{attempt}")
                    self.client = Client(**self.app, proxy=self.proxy)
                    await self.client.start()
                    print("The connection was established successfully.")
    
                except PyrogramError as e:
                    print(f"Connection error: {e}")
                    if attempt == self.max_retries:
                        print("The maximum number of connection attempts has been reached, stop!")
                        break
    
                    await asyncio.sleep(self.retry_delay)
    
        async def disconnect(self):
            if self.client:
                await self.client.stop()
                print("Connection is closed.")
    
    app = {
        'api_id': 'YOUR_API_ID',
        'api_hash': 'YOUR_API_HASH',
        'session_name': 'your_session_name'
    }
    
    proxy = {
        'scheme': 'http',  # or 'socks5'
        'hostname': 'your.proxy.hostname',
        'port': 1080,
        'username': 'user',
        'password': 'password'
    }
    
    # test run
    async def main():
        manager = ProxyManager(app, max_retries=3, retry_delay=2, proxy=proxy)
        await manager.connect()
        await manager.disconnect()
    
    asyncio.run(main())
    Ответ написан
    1 комментарий
  • 404 ошибка при переходе на страницу рубрик?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Проблема 404 была при указание rewrite в cpt:
    'rewrite' => array('slug' => '/', 'with_front' => false),

    Проблема 404 была решена так:
    'rewrite' => array('slug' => 'services', 'with_front' => false),
    Ответ написан
    Комментировать
  • Почему время наполнения массива отличается?

    ZhenyaMak
    @ZhenyaMak
    Писать качественный софт? Пфф, это не для меня.
    Метод push медленнее, чем обращение к индексу на прямую. Ну и выделение памяти через new Array даёт свои бонусы. Так как ты выделил фиксированное количество
    Ответ написан
    4 комментария
  • Как настроить редирект со всех страниц сайта на эти же страницы его копии на другом домене?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    301 редирект всех запросов со старого домена (http/https), на новый (https).

    .htaccess:
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^old\.ru$ [OR]
    RewriteCond %{HTTP_HOST} ^www\.old\.ru$
    RewriteRule ^(.*)$ https://new.ru/$1 [R=301,L]
    Ответ написан
    Комментировать
  • Как сделать клик после загрузки страницы?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Тоже в Гуугле забанили?
    JS click(), JS onload()
    Ответ написан
    2 комментария
  • Не работает скрипт JavaScript в Tilda чем ошибка?

    batowski
    @batowski
    Такая ошибка не может возникать на этапе объявления переменой. Она возникает на этапе ее использования так как не может ее найти. В вашем коде я никаких проблем не вижу за исключением того как это написано)

    Возможно что слово block написано с буквой «с» в русской раскладке.
    Ответ написан
    4 комментария
  • Contact Form 7 как запретить ввод пробелов?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Подключить скрипт на сайт, и при необходимости, подкорректировать селектор полей формы:
    document.addEventListener('DOMContentLoaded', () => {
        const elements = document.querySelectorAll('.wpcf7-form input[type="text"], .wpcf7-form textarea');
    
        elements.forEach((el) => {
            el.addEventListener('input', (e) => {
                e.target.value = e.target.value.replace(/\s+/g, '');
            });
        });
    });

    UPD из комментов, ограничение на ввод в input только цифр (необходимо указать css класс такому input only-numbers):
    document.addEventListener('DOMContentLoaded', () => {
        const elements = document.querySelectorAll('.only-numbers');
    
        elements.forEach((el) => {
            el.addEventListener('input', (e) => {
                e.target.value = e.target.value.replace(/\D/g, '');
            });
        });
    });
    Ответ написан
    3 комментария
  • Сайт не доступен с территории РФ. Как найти где блокировка?

    @pfg21
    ex-турист
    если отвечает по адресу, но не отвечает по имени, значит косяки в связке имя-адрес.

    добавить
    188.138.x.x site-name.com
    в C:\Windows\System32\drivers\etc\hosts и перезагрузить службу dns,
    добиться правильного ответа для команды
    >nslookup site-name.com
    на клиентской машине.
    Ответ написан
    5 комментариев
  • Что выбрать в качестве промежуточного хранилища в проекте?

    Что выбрать в качестве промежуточного хранилища в проекте?
    Redis таковое и есть.

    Смысл в кешировании не в том, чтобы сканировать в Redis всё подряд, а чтобы взять данные по заранее известному ключу или двух-трёх максимум, но не более, ключей.
    Кеширование имеет смысл тогда, когда количество попаданий в кеш него большое. Если для возврата ответа сервером необходимо совершить запросов по 120К записям, то у вас что-то не так.
    Ответ написан
    2 комментария
  • Contact Form 7 как сделать автоматический переход между полями?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Поля формы ограничены по количеству символов

    Т.к. надо угадать, что такое "ограничены по количеству символов", то предположу, что речь о length input.

    Подключить скрипт на сайт, и при необходимости, подкорректировать селектор полей формы:
    document.addEventListener('DOMContentLoaded', () => {
        const elements = document.querySelectorAll('.wpcf7-form input[type="text"], .wpcf7-form textarea');
    
        elements.forEach((el, i) => {
            const maxLength = parseInt(el.getAttribute('maxlength'), 10);
    
            el.addEventListener('input', () => {
                const length = el.value.length;
                if (length >= maxLength) {
                    if (i + 1 < elements.length) {
                        elements[i + 1].focus();
                    }
                }
            });
        });
    });
    Ответ написан
    Комментировать
  • Как заблокировать доступ к ресурсу для конкретного региона?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    GeoIP ngx_http_geoip_module

    1. Nginx должен включать модуль ngx_http_geoip_module.
    2. Качаем БД GeoLite2 Country.
    3. Пример конфига (nginx.conf), с отправкой всех из Индии в 403 лес:
    http {
        geoip_country /path/to/GeoLite2-Country.mmdb;
        map $geoip_country_code $allowed_country {
            default yes;
            IN no; # banned india
        }
    }
    
    server {
        if ($allowed_country = no) {
            return 403;
        }
    }
    Ответ написан
    5 комментариев
  • Есть ли смысл делать SPA на ванильном JS?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Прежде всего стоит перестать воспринимать обучение, как трату времени. Практика с ванильным js даст базу для понимания зачем тот же React вообще нужен и как он работает под капотом.
    Ответ написан
    2 комментария