Задать вопрос
  • Возможны ли санкции поисковых систем, если в интернет-магазине на странице товара писать просьбу оставить отзыв за вознаграждение?

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

    Возможны, например, по причине жалоб пользователей (втч. конкурентов). Десятки жалоб на малом промежутке времени ни к чему не приведут, а вот сотни жалоб на протяжении месяцев - реально могут пессимизировать сайт в органике, особенно отчетливо это заметно в гугле, но яша не сильно отстает.
    Ответ написан
    3 комментария
  • Синхронный код в асинхронном эндпоинте fastapi - блокирует ли он event loop?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Синхронный код, вызванный напрямую внутри асинхронного эндпоинта (не через систему зависимостей) - будет блокировать event loop. Если у вас есть синхронная функция, которую нужно вызвать из асинхронного эндпоинта (и она не является зависимостью fastapi), вы должны явно отправить ее на выполнение в пул потоков, например:
    from starlette.concurrency import run_in_threadpool
    import asyncio
    
    @app.get("/async-endpoint")
    async def async_endpoint():
        # starlette style (python<3.9)
        # r = await run_in_threadpool(sync_func)
        
        # asyncio style (python>=3.9)
        r = await asyncio.to_thread(sync_func)
    
        return {"data": r}
    Ответ написан
    Комментировать
  • Какая минимальная конфигурация пк подойдёт для домашнего сервера?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Кто может поделиться опытом - какая минимальная конфигурация будет ок под мои цели?

    Вы написали очень много текста, но не написали конкретные цифры по нагрузке в пике (mRPS). Приблизительно, можно выбрать любой процессор с количеством ядер >=4, потоков процессора >=8 (избегайте intel 13-14 поколения) и оперативной памяти >=8 гигов (лучше 16). Соответственно, если сервер будет испытывать большую нагрузку, то необходимо увеличивать ядра/потоки/оперативу. SSD выбирайте по деньгам, в идеале, можно все хранить на SSD, но если "денег нет", то обычные "домашние" данные (музыка/фильмы) можно складывать и на простом HDD.

    Если будите хостить какой то коммерческий проект (домашний сервер + коммерческий проект = хреновая идея), где важна доступность, то нужно будет взять ИБП и настроить его так, чтобы он давал команду скриптам, которые безопасно завершат работу проекта и дождутся возобновление подачи электричества. Ну и про резервирование интернет-канала не забывайте, а то кто нить покусает кабель/роутер/техника.
    Ответ написан
    1 комментарий
  • Как найти заработок начинающему верстальщику?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    начинающему верстальщику

    Никак. Даже если увеличить скилы до джуна + фронтенд разработчика - почти никак.
    Может как найти наставника или программиста

    Идете на фриланс, размещаете заказ, оплачиваете наставника.
    Может как найти наставника или программиста, который даст заказы?

    Фантастика.
    Ответ написан
    Комментировать
  • Где надо хранить sitemap.xml и robots.txt?

    Mike_Ro
    @Mike_Ro Куратор тега Поисковая оптимизация
    Python, JS, WordPress, SEO, Bots, Adversting
    1. Хранить в корне.
    2. The ultimate guide to robots.txt, XML-формат файла Sitemap.
    И как должен выглядеть robots.txt файл и sitemap.xml

    Гугл.
    И есть какое-либо ограничение на размер этих файлов

    Есть для sitemap - гугл.
    Ответ написан
    2 комментария
  • Хватит ли MacBook Air 13 с чипом M3 с конфигурацией 16/512 для разработки?

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

    Mike_Ro
    @Mike_Ro Куратор тега WordPress
    Python, JS, WordPress, SEO, Bots, Adversting
    Вопрос, каким наиболее простым способом перенести сам контент?

    Migrate content wordpress
    Ответ написан
    Комментировать
  • Что лучше выбрать для интерфейса программы?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Первый, что лучше на сегодняшний день, веб или desktop.

    Если в рамках соц.сети - смотрите на успешных конкурентов, а у них:
    1. Веб: SPA/SSR (React/Vue).
    2. Мобильное приложение (Kotlin/Swift или Flutter).
    И второй вопрос, про то, что выбрать для пользовательского интерфейса: flet, HTML/CSS/JS, QT.

    - Или React/Vue + SCSS + (Django + DRF или FastAPI).
    - Или (если нет знаний современного фронта) то vanilla JS + SCSS + все это рендерить на бэке (Django или FastAPI) и отдавать посетителю готовые страницы.
    Собираюсь разработать пет-проект

    Пет-проект с целью чего? Если найти работу, то QT/Flet/Desktop + Python = экзотика в мире заказчика (в вакансиях или на фрилансе) вообще, и экзотика*100 в мире заказчика в соц.сетях и подобных проектах.
    будет намного производительней

    Python не про производительность.
    Ответ написан
    Комментировать
  • Как запретить (ограничить) ботов грузить сайт?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Заметил, что за последние 2 месяца резко выросла нагрузка на сайт

    Если источники трафика на сайт не изменялись - 100% боты.
    основные посетители это Android 13, которые находятся на сайте от 0 до 20 секунд

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

    Не обязательно, но вполне вероятно.
    Как это можно ограничить?

    Вариантов много (а также разные cdn и капчи, вроде cloudflare, akamai, recaptcha и smartcaptcha), но все это действует лишь на простых и частично, на средних ботов.
    Ответ написан
    2 комментария
  • Откуда на маркетплейсах новые ноутбуки с процами 5-6 летней давности?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Больше похоже на БУ по видом новых / почти новых, так часто с серверами делают. Ну и нераспроданные остатки со складов никто не отменял (маловероятно, но возможно).
    Ответ написан
    Комментировать
  • Как настроить minimize webpack?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    По идее, первый optimization будет перезаписан вторым optimization=false. Либо удалите второй блок, либо замените его на такой:
    const CssMinimizerPlugin = require("css-minimizer-webpack-plugin");
    const TerserPlugin = require("terser-webpack-plugin");
    
    optimization: {
        minimize: true,
        minimizer: [
            new TerserPlugin({
                terserOptions: {
                    mangle: true,
                    keep_classnames: true,
                    keep_fnames: false,
                },
            }),
            new CssMinimizerPlugin(),
        ],
        splitChunks: {
           chunks: 'all',
        },
    },

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

    Минимизация !== обфускация, код может быть изменен, но не с целью "защиты".
    Ответ написан
  • Как выбрать нужный ответ из JSON файла?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Как вариант (добавить проверок и исключений):
    ERRORS_FILE = 'error.json'
    IMAGES = 'error_images'
    
    error_data = {}
    
    with open(ERRORS_FILE, 'r', encoding='utf-8') as f:
        error_data = json.load(f)
    
    # Код бота:
    
    error_code = call.data
    error_description = error_data.get(error_code)
    
    # bot.send_message(call.message.chat.id, "Ошибка 501")
    bot.send_message(call.message.chat.id, f"Ошибка {error_code}: {error_description}")
    
    # photo = open('501.jpg', 'rb')
    image_path = os.path.join(IMAGES, f"{error_code}.jpg")
    with open(image_path, 'rb') as photo:
        bot.send_photo(call.message.chat.id, photo, caption=error_code)

    Так же, я бы подключал json файл 1 раз при запуске бота, а не каждый раз при нажатие его кнопок.
    Ответ написан
    Комментировать
  • Почему люди проводят всего 1сек на сайте, согласно яндекс метрики?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Либо боты, либо "случайный" клик (реклама например), либо поздно инициализируется счётчик.
    Ответ написан
    Комментировать
  • Что выбрать для хостинга сайта: 2 ядра до 5 ГГц или 6 ядер до 3.2 ГГц?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Что выбрать для хостинга сайта: 2 ядра до 5 ГГц или 6 ядер до 3.2 ГГц?

    В зависимости от основного типа нагрузки:
    - IO bound - больше ядер.
    - CPU bound - больше частота.
    сайт работает на CMS DLE.

    Если это основная нагрузка, то больше ядер. А вот сколько конкретно ядер - можно вычислить в админке хостера (самый простой способ), если нагрузка на машину доходит до 100%, то пора докинуть ядер или оперативки.
    Текущая посещаемость — около 3000 уникальных пользователей в день.

    Правильнее считать не общую нагрузку, а максимальное количество запросов к серверу в секунду (max rps).
    Ответ написан
    Комментировать
  • Можно ли менять значения импортируемого файла после билда проекта?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Можно ли менять значения импортируемого файла после билда проекта?

    Нельзя, нужно пересобрать проект.
    Ответ написан
    Комментировать
  • Как сделать, чтобы при парсинге bs4 как то надо нажать на кнопку "показать еще", чтобы подгрузило еще 20 постов?

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

    Никак, bs4 как и requests лишь получают то, что отдал сервер при первом ответе. Вы можете попробовать исследовать то, какой запрос на сервер отправляется, при нажатие этой кнопки, а затем отправлять запросы из bs4 напрямую к этому серверу. А вообще, для таких задач (нажатие кнопок на сайте итп), используйте Selenium или CDP.
    так как я учусь пасингу в bs4

    А чего там учить?
    Ответ написан
    Комментировать
  • Как с помощью Selenium на Python найти элемент html страницы, который расположен в #shadow-root (open)?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    How to automate shadow DOM elements using selenium?

    Если коротко, то порядок следующий:
    1. Сначала нужно найти в основном dom тот элемент, к которому прикреплен shadow root.
    2. У п1. нужно получить свойство .shadow_root.
    3. И вот уже у п2. нужно вызывать его собственный метод find_element, чтобы найти нужный элемент внутри него.

    Или так:
    Локатор не находит элемент на сайте, хотя набран верно, пробовал разные варианты, не помогает, в чём проблема?
    Ответ написан
    3 комментария
  • Как в wordpress назначить горячую клавишу на кнопку "сохранить" в редакторе записей?

    Mike_Ro
    @Mike_Ro Куратор тега WordPress
    Python, JS, WordPress, SEO, Bots, Adversting
    т.е. чтобы например ctrl+s нажал - и запись полностью сохранилась и опубликовалась

    Оно так и работает (раскладка должна быть на английском), но запись должна быть изменена, в ином случае ничего не произойдет, рекомендую почитать:
    - Use keyboard shortcuts (Block Editor).
    - Use keyboard shortcuts (Classic Editor).

    Что бы горячие клавиши стали доступны при работе с комментариями, необходимо перейти в Пользователи -> Профиль -> Включить "Горячие клавиши".
    Ответ написан
    4 комментария
  • Как добавить Тег к сделке AMO CRM по API?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    - Не POST, а PATCH.
    - Эндпоинт можно без id сделки: /api/v4/leads.
    - Теги передаются как массив объектов внутри _embedded['tags'].
    - Данные необходимо преобразовать в json.

    Выглядеть это будет примерно так (я не силен в php):
    $data = [
        [
            'id' => (int)$leadId,
            '_embedded' => [
                'tags' => [
                    ['name' => 'tag_name'],
                ],
            ],
        ],
    ];
    
    $res = $amoClient('PATCH', '/api/v4/leads', ['json' => $data]); 
    echo $res['status'];
    Ответ написан
    Комментировать
  • Используют ли сейчас повсеместно class?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Хотел узнать, для браузерного фронта( для SPA приложения на Vue3), принято ли будет создавать обьекты через классы?
    class MyClass {

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

    Большинство фронта сегодня собирается различными сборщиками, по типу webpack и vite. Они самостоятельно преобразуют "современный" js в тот js, который необходим для браузеров определенной (минимальной) версии.
    p.s. без typescript

    К TS это так же относится.
    Ответ написан
    Комментировать