Задать вопрос
  • Какой UI фреймворк выбрать для Web/Android/iOS?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Для демонстрации хотелось бы минимальными усилиями сделать UI, который можно было бы легко "тягать" между платформами.

    Про React+React UI знаю, но раз 5 пытался осилить и не смог - слишком тяжеловесный.

    Есть что-нибудь простое и элегантное как раз для прототипов а не реальных приложений?

    PWA, создаёте обычный сайт и упаковываете его как мобильное приложение.
    Ответ написан
    Комментировать
  • Может ли самозанятый сделать свой хостинг?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Может ли самозанятый сделать свой хостинг?

    можно ли арендовать у крупных провайдеров, настроить по на сервере и продавать кусочки от сервера.

    Ограничений на самозанятого, накладываемого 422 и 149 ФЗ для деятельности связанной с оказанием подобных услуг - нет.
    Ответ написан
    Комментировать
  • Как написать свой sip-клиент?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Для Python, я бы использовал PJSIP + PJSUA2. Популярная + множество примеров.
    Ответ написан
    2 комментария
  • Как запаролить сайт?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Пароль найдите самостоятельно (хранение пароля на клиенте не самая безопасная идея):
    Ответ написан
    4 комментария
  • Есть ли менеджер python программ под windows?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Windows Task Scheduler
    PyCron
    Ответ написан
    Комментировать
  • Есть ли в IndexedDb возможность сохранить данные в инвертированном порядке?

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

    Нет, indexeddb не позволяет хранить данные в произвольном порядке, они всегда хранятся в упорядоченном виде согласно ключу. Как вариант - использовать курсоры для итерации.
    Ответ написан
    2 комментария
  • Резкое исчезновение сайта из выдачи - как выяснить причину?

    Mike_Ro
    @Mike_Ro Куратор тега Поисковая оптимизация
    Python, JS, WordPress, SEO, Bots, Adversting
    Сайт самописный, на HTML, CSS, немного JS и обработчик формы на нативном PHP.

    Как следствие этих попыток, остались файлы WP в корневой папке. Похоже, это ни на что не влияет, но если я ошибаюсь - поправьте меня, возможно, это не так.

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

    Очень хорошо, поисковики любят постоянное добавление и минимальное обновление контента.
    Я использовала только белые методы продвижения, не закупала ссылки пачками, не накручивала пф.

    Вы точно уверены, что правильно закупали ссылки и создали правильный ссылочный профиль? Да и ссылки для Яши играют далеко не определяющее значение, не то что для гугла.
    Несколько дней назад добавила в .htaccess код для того, чтобы убрать из поиска index.html:

    Это одна из базовых вещей внутренней оптимизации (robots.txt туда же), которую необходимо выполнить одной из первых. Вы уверены, что у Вас Apache, а не Nginx? Так же RewriteEngine On достаточно включать 1 раз в блоке, 2 не обязательно.
    То есть фильтров нет.

    Не всегда напрямую об этом говорят.
    Я совсем не понимаю, что происходит и как вернуться на прежнее место на 1 странице выдачи по ключевым запросам средней частотности.

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

    Вижу, что прошло всего ~3 суток, а Вы уже бьете тревогу, это конечно хорошо, но иногда поисковики штормит и это Вам не изменить.
    Яшу сильно штормило 8, 9 и 12 числа

    669614820fcf5963365392.png

    Яндекс обновляет алгоритмы определения качественно...
    Новый алгоритм Яндекса 2024 под названием «Косяк»
    Ответ написан
    3 комментария
  • Возможно ли добавить сайт без контента в AdSense?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Как они проходят модерацию?

    Как и в других системах, проходим модерацию с нормальным сайтом, затем меняем контент сайта на другой.
    Ответ написан
    Комментировать
  • Существует ли легкий аналог Dreamviewer'a?

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

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    сейчас сборка на Xeon E5 2650 v2

    Для игр важна частота процессора, что редко пересекается с зеонами.
    Intel Core i3-13100F

    Нормальный проц, но я бы под Вашу видюху лучше взял мощнее проц.
    Sapphire Radeon RX 7600

    Видюха выше среднего, нормальная, но я бы брал Nvidia.
    Ответ написан
    Комментировать
  • Что делать, если бот не хочет читать сообщение пользователя?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Попробуйте так:
    @bot.message_handler(commands=['sg'])
    def sg(message):
        msg = bot.send_message(message.chat.id, 'Великолепно, приступим... Начнем с знакомства! Как тебя зовут (Хватит Фамилии и Имени)')
        bot.register_next_step_handler(msg, process_name_step)
    
    def process_name_step(message):
        name = message.text
        bot.send_message(message.chat.id, f'Приятно познакомиться, {name}!')
    Ответ написан
    1 комментарий
  • Есть ли смысл учить абсолютно все элементы HTML?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Есть ли смысл учить абсолютно все элементы HTML?

    Замените HTML на любую другую технологию и получите примерно аналогичные ответы, но имеется достаточно эффективная схема:
    1. Ставим задачу - сверстать input в виде switch.
    2. Гуглим, как сделать тот или иной эффект.
    3. Решаем задачу и приобретаем опыт и понимание, для чего то или иное действие потребовалось, а для чего нет.

    Полученный объем опыта будет определять Вас, как специалиста. Больше опыта - выше грейд.
    Ответ написан
    Комментировать
  • Почему не получается создать страницы с url точь в точь как слаг кастомного типа записи?

    Mike_Ro
    @Mike_Ro Куратор тега WordPress
    Python, JS, WordPress, SEO, Bots, Adversting
    WP интерпретирует url example.com/solutions как запрос к архиву кастомного типа записей solutions, а не к отдельной странице.

    - Приоритет url - wp сначала проверяет, соответствует ли url какому либо типу записей или таксономии. В Вашем случае, solutions - это тип записи, поэтому wp пытается отобразить архив записей этого типа.
    - Шаблоны архивов - wp использует шаблоны архивов для отображения списков записей определенного типа. Если у Вас нет специального шаблона для архива solutions, WordPress использует стандартный шаблон archive.php.
    Ответ написан
    3 комментария
  • Как сделать, чтобы selenium открывал уже авторизированную страничку?

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

    Самый простой вариант - использовать отдельный профиль хрома (независимая постоянная сессия браузера):
    import os
    import time
    from selenium import webdriver
    from selenium.webdriver.chrome.service import Service
    
    # ChromeDriver path (https://sites.google.com/chromium.org/driver/downloads)
    chromedriver_path = r'C:\project\chromedriver.exe'
    
    # Chrome profile path
    profile_dir = r'C:\project\chrome-profiles\1'
    
    # Create chrome profile (run in console):
    # $ chrome C:\project\chrome-profiles\1
    #
    # or
    #
    # auto create chrome profile (if need)
    if not os.path.exists(profile_dir):
        os.makedirs(profile_dir)
    
    # Using chrome profile
    options = webdriver.ChromeOptions()
    options.add_argument(f'--user-data-dir={profile_dir}')
    
    # Init
    service = Service(executable_path=chromedriver_path)
    driver = webdriver.Chrome(service=service, options=options)
    
    # Open website
    driver.get('https://maps.yandex.ru/')
    
    # Delay and close driver
    time.sleep(10)
    driver.quit()

    Проверяем:

    Первый запуск скрипта с переходом на maps.yandex.ru, геолокация запрещена по умолчанию - разрешаем:
    668e3052bf021461087359.png

    второй запуск скрипта с переходом на maps.yandex.ru, геолокация уже разрешена (сессия сохранилась):
    668e30657546e504380167.png
    Ответ написан
    Комментировать
  • Как вам аргумент за выбор React Query вместо RTK Query?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    https://ru.stackoverflow.com/questions/1529010/rea...

    https://www.reddit.com/r/reactjs/comments/15ucdx7/...
    acemarke

    Hi, I'm a Redux maintainer.

    Both the Redux and React Query teams recommend that:
    - If you are using Redux in the app, you should use RTK Query for your data fetching.
    - Otherwise, you should use React Query for you data fetching.

    But mixing Redux + React Query doesn't make any sense.
    Ответ написан
    Комментировать
  • Как получить промежуточное значение между двух слов?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Без регулярки:
    const url = 'www.site.ru/users/agent/512/list/france';
    const parts = url.split('/');
    const agentIndex = parts.indexOf('agent');
    const value = parts[agentIndex + 1];
    console.log(value); // 512

    с регуляркой:
    const url = 'www.site.ru/users/agent/512/list/france';
    const match = url.match(/\/agent\/(\d+)\/list/);
    const value = match ? match[1] : null;
    console.log(value); // 512
    Ответ написан
    Комментировать
  • Можно ли прочитать файл readme.txt из прикрепленного ZIP-архива и вывести в содержимом записи?

    Mike_Ro
    @Mike_Ro Куратор тега WordPress
    Python, JS, WordPress, SEO, Bots, Adversting
    Скажите, есть возможность вывести содержимое файла readme.txt в описании публикации?

    Плагином WPDM Pro нет, необходимо прочитать содержимое txt файла из zip, затем вывести информацию на страницу WP в нужном виде.
    Ответ написан
    3 комментария
  • Как добавить переход на выбранную рубрику?

    Mike_Ro
    @Mike_Ro Куратор тега WordPress
    Python, JS, WordPress, SEO, Bots, Adversting
    Сомнительный вариант перехода по страницам, ну ладно... Проверил, переход выполняет на нужные url рубрик:
    <div style="max-width:240px; margin:-10px auto 25px;">
        <?php
        $args = [
            'show_option_none' => 'Все рубрики',
            'orderby' => 'name',
            'show_count' => 1,
            'hide_empty' => 1,
            'hide_if_empty' => false,
            'exclude' => '10,754,121',
            'tab_index' => 0,
            'id' => 'category',
        ];
    
        wp_dropdown_categories($args);
        ?>
    </div>
    
    <?php
    $categories = get_categories([
        'exclude' => '10,754,121',
        'hide_empty' => 1,
    ]);
    
    $category_slugs = [];
    foreach ($categories as $category) {
        $category_slugs[$category->term_id] = urldecode($category->slug);
    }
    ?>
    
    <script type="text/javascript">
        document.addEventListener('DOMContentLoaded', () => {
            const dropdown = document.getElementById('category');
            const categorySlugs = <?php echo json_encode($category_slugs); ?>;
    
            console.log('Category slugs:', categorySlugs);
    
            dropdown.addEventListener('change', () => {
                const selectedValue = dropdown.options[dropdown.selectedIndex].value;
                if (selectedValue > 0) {
                    const selectedCategorySlug = decodeURIComponent(categorySlugs[selectedValue]);
                    window.location.href = `<?php echo home_url(); ?>/category/${selectedCategorySlug}`;
                }
            });
        });
    </script>

    Настройка постоянных ссылок

    668ce02d01b82594263475.png
    Ответ написан
    Комментировать
  • Curl смог, а злосчастный fetch (firefox) не может?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    CORS API ограничивает запросы с Вашего домена (Вы же выполняете js код в браузере?). Даже если Вы укажите no-cors, то API домен все равно принимает окончательное решение.

    Вам нужен любой сервер, для проксирования запроса. Выполните свой код на nodejs, и все заработает:
    import fetch from 'node-fetch';
    import {create} from './create.js';
    
    const url = 'https://api.site.ru/endpoint';
    const TOKEN = 'TOKEN';
    
    const options = {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        'Authorization': `Basic ${Buffer.from(`${TOKEN}:`).toString('base64')}`,
      },
      body: JSON.stringify({
        date: {
          from: '2024-07-01T00:00:00',
          to: '2024-07-09T00:00:00',
        },
      }),
    };
    
    fetch(url, options)
      .then((response) => response.json())
      .then((result) => create(result))
      .catch((error) => console.error(error.message));
    Ответ написан
    Комментировать
  • Как улучшить код?

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

    Никак, в любом случае будет задержка. Попробуйте так, эксперементируйте с паузой, чтобы добиться максимально быстрых кликов:
    import keyboard as kb
    import pyautogui as pt
    
    pt.PAUSE = 0.01
    
    if __name__ == '__main__':
        coordinates = [
            (-1241, 624),
            (-303, 720),
            (604, 634),
            (1363, 679),
            (1363, 679),
            (2265, 654),
            (558, 1342),
            (2476, 1255),
        ]
    
        while True:
            if kb.is_pressed('Space'):
                for x, y in coordinates:
                    pt.click(x, y)
    Ответ написан
    4 комментария