Задать вопрос
  • Как разрешить доступ на сервер только с определенных IP?

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

    Предположу, что nftables не был включен для автоматического запуска при загрузке системы, он просто был перезапущен в текущей сессии. Эта команда создаст необходимые ссылки, чтобы systemd запускал nftables при каждой загрузке, который в свою очередь, автоматически загрузит конфигурации из конфигов:
    sudo systemctl enable nftables
    Ответ написан
    2 комментария
  • Какие книги по программированию выбрать для ребенка?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    «Изучаем Python» — книга Марка Лутца.

    Если не только книги, то:
    - https://metanit.com/python/tutorial/
    - https://education.yandex.ru/handbook/python
    - https://www.w3schools.com/python/default.asp
    Ответ написан
    1 комментарий
  • Имеет ли жизнеспособность идея нового игрового движка на Python?

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

    По умолчанию, инди и другие небольшие проекты используют unity, для проектов покрупнее используют unreal engine. Да и как pet проект - сомнительная затея, все таки python - это не про написание игр.
    Ответ написан
    9 комментариев
  • Почему происходит Блокировка доступа при использовании Selenium для парсинга?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Использую официальный ChromeDriver (версия соответствует браузеру).

    Разумеется, в ином случае вы пришли бы с другой ошибкой.
    Скрипт имитирует человеческое поведение:
    Добавлены задержки между действиями.

    Между какими действиями?
    VPN и прокси не используются.

    Печально.
    Какие технические требования Ozon к автоматизированным запросам?

    Не selenium + имитация человеческих действий + нормальный прокси.
    Возможно ли получить API-доступ для таких задач?

    Для каких? https://docs.ozon.ru/api/
    Как легально реализовать сбор данных для личного использования?

    Только через открытый api, все остальное - нарушение закона.
    Ответ написан
    1 комментарий
  • Хватит 16 гб озу и i3-7100 для офисного компьютера (word excel pdf много вкладок в браузере) на следующие 10 лет?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    i3-7100

    2 ядра/4 потока - это скромно даже сегодня, не говоря уже про "на следующие 10 лет".
    16 одной планкой или 8+8?

    Двумя одинаковыми, чтобы сформировать двухканальный режим памяти. 16 гигов в целом нормально, но больше - лучше.
    Ответ написан
    3 комментария
  • Какой посоветуете учебник/книгу JavaScript?

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

    Mike_Ro
    @Mike_Ro Куратор тега Поисковая оптимизация
    Python, JS, WordPress, SEO, Bots, Adversting
    Происходит это по вине нашего калькулятора:

    Что бы вы посоветовали сделать для решения этой проблемы?

    Спрятать калькулятор за изображением калькулятора (или кнопку), при клике на который - динамически загружать сам калькулятор. Тогда, содержимое калькулятора будет минимально влиять на ранжирование (т.к. поисковик не кликает по кнопкам), а пользователи все равно получат необходимый функционал.
    Ответ написан
    Комментировать
  • Как устранить конфликт стилей в WordPress?

    Mike_Ro
    @Mike_Ro Куратор тега WordPress
    Python, JS, WordPress, SEO, Bots, Adversting
    Как устранить конфликт стилей в WordPress?

    - Либо удалить тот класс, который не нужен (лучше).
    - Либо перекрыть новым классом старый, увеличив css специфичность.
    Пробовала все делать с помощью Elementor, он ужасно тормозит как в процессе верстки, так и в готовом виде,
    поэтому я решила установить Gutenberg и стараться обходится без своих кастомных блоков, ACF групп полей и вообще максимально пользоваться тем, что "из коробки", а если не хватает, дополнять шорткодом.

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

    Можно завести домен 3 уровня и там размещать тестовую версию сайта, например dev.56proba.ru.
    Ответ написан
    8 комментариев
  • Возможны ли санкции поисковых систем, если в интернет-магазине на странице товара писать просьбу оставить отзыв за вознаграждение?

    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 раз при запуске бота, а не каждый раз при нажатие его кнопок.
    Ответ написан
    Комментировать