Задать вопрос
  • Как обработать GET-запрос по AJAX(jQuery) PHP-скриптом?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Таких вопросов уже несколько десятков, если не сотен https://www.google.com/search?q=site%3Aqna.habr.co...
    Ответ написан
    Комментировать
  • Как убрать спам с сайта?

    Mike_Ro
    @Mike_Ro Куратор тега WordPress
    Python, JS, WordPress, SEO, Bots, Adversting
    Переводите сайт на https.

    Провайдер интернета может встраивать рекламу на сайты без HTTPS из за отсутствия шифрования данных, передаваемых между пользователем и сайтом. Это позволяет провайдеру легко модифицировать трафик, вставляя в него рекламные баннеры или сообщения.
    Ответ написан
    Комментировать
  • Почему не записываются emoji в базу данных?

    Mike_Ro
    @Mike_Ro Куратор тега WordPress
    Python, JS, WordPress, SEO, Bots, Adversting
    Бд mysql wp должна иметь кодировку utf8mb4 (поддерживает хранение символов юникод втч. эмоджи), а вот utf8 в mysql не поддерживает 4 байтные символы, к которым относятся и эмоджи, из за чего они заменяются на знаки вопроса.

    wp-config.php:
    define('DB_CHARSET', 'utf8mb4');
    define('DB_COLLATE', 'utf8mb4_unicode_ci');

    И изменяем кодировку таблицы бд c utf8 на utf8mb4.
    Ответ написан
    6 комментариев
  • Как запарсить страницу?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Может ли на hh.ru стоять какая-то защита от парсинга?)

    Самая примитивная, которая чекает заголовки:
    import requests
    from bs4 import BeautifulSoup
    
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3',
        'Accept-Language': 'en-US,en;q=0.9',
        'Accept-Encoding': 'gzip, deflate',
        'Connection': 'keep-alive',
    }
    
    res = requests.get('https://tomsk.hh.ru/article/31475', headers=headers)
    
    if res.status_code == 200:
        soup = BeautifulSoup(res.text, 'html.parser')
        el = soup.find('div', class_='URS-ratingTable')
    
        if el:
            print(el)
        else:
            print('Table not found!')
    else:
        print('The problem with connecting to the website', {res.status_code})
    Ответ написан
    Комментировать
  • Как добавить alt в плагине ddslick?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Попробуйте так:
    document.addEventListener('DOMContentLoaded', () => {
        $('#colorDropdown').ddslick({
            data: ddData,
            background: '#fff',
            imagePosition: "left",
            selectText: "Выбрать цвет",
            onSelected: (data) => {
                const colorInput = $('#form-popup-catalog input[name="color-product"]');
                const ralColors = $('.ral-colors');
                const ralColorProduct = $('.ral-colors .ral-color-product');
    
                colorInput.val(data?.selectedData?.text);
                ralColors.css('display', 'block');
                
                const imgHtml = `<img src="${data?.selectedData?.imageSrc}" alt="${data?.selectedData?.alt}">`;
                
                ralColorProduct.empty().html(`${data?.selectedData?.text}${imgHtml}`);
            }
        });
    });
    Ответ написан
    Комментировать
  • Почему не работает код?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    # balls.append([balls, dx, dy])
    balls.append([ball, dx, dy])
    
    # x,y = balls[i][0].positions()
    x,y = balls[i][0].position()
    
    # while True:
        # for i in range(count):
    while True:
        window.update()
        for i in range(count):
    Ответ написан
  • Как прослушать .ogg файл?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Можно заюзать либу PyGame:
    def play(file_path):
        pygame.mixer.init()
        pygame.mixer.music.load(file_path)
        pygame.mixer.music.play()
    
        while pygame.mixer.music.get_busy():  # if True, the melody is being played
            time.sleep(1)
    
    play('path_to_file/file.ogg')  # dancing dancing dancing...
    Ответ написан
    Комментировать
  • Как избежать создания папки .idea в PhpStorm?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Подскажите пожалуйста, как убрать создание этой папки?

    Никак, в ней размещаются настройки ide для настоящего проекта.
    Ответ написан
    Комментировать
  • Почему вылазит ошибка self.querySelector(...) is null?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Почему вылазит ошибка self.querySelector(...) is null?

    Потому, что элемент не был обнаружен в момент его получения. Используйте DOMContentLoaded.
    Ответ написан
  • Как передать переменную из Js в python(Flask)?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Ajax (fetch):
    async function getValue() {
        const input = document.querySelector('#input-id');
    
        try {
            const res = await fetch('/', {
                method: 'POST',
                headers: {'Content-Type': 'application/json'},
                body: JSON.stringify({'value': input.value})
            });
    
            if (res.ok) {
                console.log('Send success!');
            } else {
                throw new Error(`Send error, ${res.statusText}`);
            }
        } catch (error) {
            console.error('Error', error);
        }
    }

    Принимаем и возвращаем, если все ок:
    from flask import Flask, render_template, request, jsonify
    import json
    
    app = Flask(__name__)
    
    @app.route('/', methods=['GET', 'POST'])
    def index():
        if request.method == 'GET':
            return render_template('index.html')
        elif request.method == 'POST':
            try:
                data = request.json
                if 'value' in data:
                    value = validate(data['value'])
                    return jsonify({'message': 'Success!', 'value': value}), 200
                else:
                    raise KeyError('Value key not found')
            except (KeyError, json.JSONDecodeError) as e:
                return jsonify({'error': 'Invalid data format'}), 400
    
    def validate(value):
        return value
    
    if __name__ == '__main__':
        app.run(debug=True)
    Ответ написан
    Комментировать
  • Можно ли обмануть программиста с проектной работой?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Могут ли обмануть с работой на хх компании что ищут специалиста по гпх, самозанятого.

    Могут и обманут, как только станет выгодно это сделать.

    Учитывая Ваш вопрос и его постановку, вероятнее всего, Вы не в состояние самостоятельно составить или проверить уже составленный договоров на юридическую чистоту.

    Единственный Ваш вариант - обращаться к юристу для составления платного договора, допников, актов итп. Если Вы обратитесь к юристу (в целом, к любому исполнителю) без четкого ТЗ, то получите соответствующий результат. Добавлю, что не каждый заказчик/работодатель согласится подписывать Ваш договор.
    Ответ написан
    2 комментария
  • Почему БД не принимает буквы, а только цифры?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    # cursor.execute(f'UPDATE Settings SET remember_pass = {user_pass.get().strip()} WHERE id = 1')
    cursor.execute("UPDATE Settings SET remember_pass = ? WHERE id = ?", (user_pass.get().strip(), 1))
    Ответ написан
    Комментировать
  • Что делает функция?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    1. Принимает любой массив и коллбэк.
    2. Обходит массив, применяя к каждому элементу массива коллбэк.
    3. Возвращает новый массив с модифицированными элементами.
    Ответ написан
  • Летит бот-трафик с разных сайтов?

    Mike_Ro
    @Mike_Ro Куратор тега WordPress
    Python, JS, WordPress, SEO, Bots, Adversting
    Ребят, как найти источник злодеяния?

    Искать ничего не нужно, нужно блокировать то, что возможно заблокировать с минимальными издержками. Самый быстрый вариант - CloudFlare, гуглить "CloudFlare Bot Blocking guide". Сразу говорю, CloudFlare слегка просаживает позиции сайта за счет увеличения времени доступа к контенту сайта, НО! Если удастся отфильтровать большинство ботов, то тем самым Вы поднимите ПФ сайта, и можно рассчитывать на то, что сайт как минимум вернется на изначальные позиции, а может и выше.
    Кстати, я заходил на эти самые говносайты и линкбэк я на свой сайт не обнаружил - вероятно их используют как рефер может быть или просто перенаправление.

    Бот может создавать ссылку в dom страницы и кликать по ней. Анкор ссылки может быть разным, но видел следующие варианты: "сайт продает наркотические вещества", "сайт обманывает пользователей", "сайт крадет данные кредитных карт" итп. Как Вы понимаете, на этом сайте стоят счетчики всех популярных ПС, которые видят клик по ссылке с этим анкором. Насколько эффективно ПС могут бороться с таким "SEO" - это другой вопрос.
    Также сразу вызывает подозрение, что IP адреса - все от мобильных операторов.

    Потому что это самый эффективный вариант маскировки ботов, особенно, если в Вашей тематике итак было 80%+ мобильных ip.
    Ответ написан
    Комментировать
  • React. Нормальная ли практика выносить картинки за пределы src в папку public?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Нормальная, и не только в react, но и в сборщике webpack с его шаблонизаторами.
    Ответ написан
  • Возможно ли создавать приложения для Windows и Linux на JavaScript, html и css?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Возможно:
    - ElectronJS
    - Tauri
    Ответ написан
    Комментировать
  • Как высчитать уровень исходя из массива?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    const LVLS = [
        {exp: 10, lv: 1},
        {exp: 25, lv: 2},
        {exp: 45, lv: 3},
        {exp: 70, lv: 4},
        {exp: 100, lv: 5},
    ]
    
    console.log(LVLS.reduce((acc, l) => (47 >= l.exp ? l.lv : acc), 0)); // 3

    Все работает, но кажется, что достаточно криво.

    Теперь ровнее.
    Ответ написан
    2 комментария
  • Внешние ссылки. Расскажите про алгоритм?

    Mike_Ro
    @Mike_Ro Куратор тега Поисковая оптимизация
    Python, JS, WordPress, SEO, Bots, Adversting
    Я принял для себя решение, что нужно исходя из моих рубрик, составить семантику (конечно же НЧ запросы для начала)

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

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

    А кто то запрещает? Можете конечно. Другой вопрос, что человек без опыта не соберет качественный ссылочный профиль.
    Если вы считаете всё это абсурдом и это меня ни к чему не приведете - не стесняйтесь, выражайтесь!)

    В целом, вероятнее всего так и будет. Произойдет расход средства и времени не соразмерный результату.
    Ответ написан
    3 комментария