Задать вопрос
  • Какие ведутся документы при разработке ПО?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Например, сейчас мне необходимо сделать документ, который будет содержать информацию о том, какие дополнительные функции необходимо реализовать в уже существующем проекте.

    Техническое задание (ТЗ)?
    Ответ написан
    Комментировать
  • Как проверить два сайта на аффилированность?

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

    Если только косвенным образом - проверить поисковую выдачи по одинаковым ключам, если один сильно отстает от другого, то вывод напрашивается сам собой.
    Ответ написан
    Комментировать
  • Не подгружаются javascript при DEBUG = False, что делать?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Не подгружаются javascript при DEBUG = False, что делать?

    https://www.digitalocean.com/community/tutorials/w...
    - При DEBUG = True - Django автоматически обслуживает статические файлы (JavaScript, CSS, изображения и т.д.) напрямую через встроенный сервер. Это упрощает процесс разработки, поскольку не требует дополнительной настройки веб-сервера для обслуживания статических файлов. Изменения в статических файлах отображаются немедленно (hot reload), что позволяет быстро тестировать изменения без необходимости перезапускать сервер или собирать статические файлы.
    - При DEBUG = False - Django не обслуживает статические файлы напрямую. Вместо этого предполагается, что статические файлы будут обслуживаться через специализированный веб-сервер (Nginx, Apache), что является более оптимальным с точки зрения производительности и безопасности. Для сборки статики рекомендуется использовать команду $ python manage.py collectstatic. На выходе получится приблизительно следующая схема: Django <-> Static <-> Client.

    Уточню, что шаблоны Django не "собираются" в одно место, как статические файлы. Вместо этого, они обрабатываются динамически сервером Django, каждый раз при обработке запроса. Django заполняет шаблоны соответствующими данными и генерирует>возвращает html клиенту.
    Ответ написан
    Комментировать
  • Как войти в telegram web с помощью selenium и telethon?

    Mike_Ro
    @Mike_Ro Куратор тега Selenium
    Python, JS, WordPress, SEO, Bots, Adversting
    Используя webdriver:
    from selenium import webdriver
    
    browser = webdriver.Chrome()
    browser.get('https://web.telegram.org')
    # 1. вводим телефон
    # 2. вводим смс/пуш с телефона.
    # 3. жмем "войти"

    - Chrome уже должен быть установлен.
    - Telethon здесь не причем (мы же используем Web версию телеги).
    Ответ написан
    Комментировать
  • Что даёт сборка ноутбука с встроенной и дискретной видеокартами?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Что даёт сборка ноутбука с встроенной и дискретной видеокартами?

    Для простых задач - использовать встройку, для сложный - дискретку. По аналогии с энергоэффективными и производительными ядрами ЦП на смартфоне.
    Ответ написан
    Комментировать
  • В чём разница между Выделенной памяти графического процессора и Оперативной память графического процессора?

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

    1. Выделенная - память, которая зарезервирована непосредственно за gpu, обычно находится рядом с gpu.
    2. Оперативная - память, которую gpu может использовать из оперативной памяти компьютера, в дополнение к выделенной.
    3. Общая - память, которая является суммой п1 и п2.

    Фотка одной из таких материнок (gpu+vram):
    6565b232a635c217824349.png
    Ответ написан
    2 комментария
  • Как правильно удалить дубли одной страницы?

    Mike_Ro
    @Mike_Ro Куратор тега Поисковая оптимизация
    Python, JS, WordPress, SEO, Bots, Adversting
    Попросить не индексировать страницы с любыми url параметрами и страницу /index.php, robots.txt:
    User-agent: *
    Disallow: /*?*
    Disallow: /index.php
    Ответ написан
    2 комментария
  • Откуда после переобхода Яндекс.Вебмастером сайта на Wordpress появились ссылки вида /redir.php?site=http://example.com/?

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

    Могут.
    Ответ написан
  • Если в title указать про vpn сильно может повлиять на выдачу в гугл?

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

    Точные цифры предоставят в гугле, но сайт точно не вырастит в выдаче.

    Вы собираетесь бороться с последствиями, а не первопричиной. У нас "Табуретки в Москве" уже нелегальный контент? Разбирайтесь с блокировкой, а не с seo.
    Ответ написан
    Комментировать
  • Как редактировать контент сайта человеку не знающему HTML (без конструкторов)?

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

    Если речь именно про контент, то необходимо натянуть сайт на CMS.
    Ответ написан
    Комментировать
  • SEO- оптимизация мультиязычных сайтов?

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

    Язык*регион*страна*интент*словоформа, но зависит от конкурентности конкретной выдачи.
    Ответ написан
    Комментировать
  • Как удалить ненужные символы в строке?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    // returns true if has contain spam
    const checkForSpam = function (message) {
      const c = message.toLowerCase().replace(/[^a-z\s]/g, '');
      const w = c.split(' ');
      return w.includes('spam') || w.includes('sale');
    }
    
    console.log(checkForSpam('[SPAM] How to earn fast money?')); // true

    Но я бы не зашивал в функцию исчерпывающий перечень стоп слов, а передавал их в нее:
    // returns true if has contain spam
    const checkForSpam = function (message, stops) {
      const c = message.toLowerCase().replace(/[^a-z\s]/g, '');
      const w = c.split(' ');
      return stops.some(word => w.includes(word));
    }
    
    console.log(
      checkForSpam(
        '[SPAM] How to earn fast money?',
        ['spam', 'sale']
      )
    ); // true
    Ответ написан
    4 комментария
  • Как конвертировать tdata в session + json?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    TFileNotFound: Could not open key_data [ Called by ReadFile() ]

    Не верный путь, либо отсутствует разрешение на чтение.
    Ответ написан
    Комментировать
  • Почему Youtube определяет страну даже при подключении через VPN?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    VPN не всегда на 100% надежен, он может пропускать некоторые данные, либо его можно попробовать обойти - это утечка DNS или WebRTC, для проверки используйте DNS/WebRTC Leak Test. Меня так забугорная платежная система палила.
    Ответ написан
  • Как вставить содержимое в iframe без src?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Как вставить содержимое в iframe без src?

    document.write():
    1. Создать iframe на странице.
    2. Получить ссылку на document внутри п1.
    3. Вставить данные внутрь п2, используя document.write().
    и будут ли работать при таком решении ссылки через proxy, которые находятся внутри iframe?

    В рамках указанного домена - да, если домен другой - зависит от CORS сервера.
    Ответ написан
    Комментировать
  • Из-за слайдера не открывается всплывающая форма?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    В чем может быть проблема?

    Слайдер fancybox определяет, показывать ему слайдер или нет на основе класса в < html> теге, если там класс десктопа .desktop.portrait (в десктопной версии сайта), то слайдер инициализируется верно и затем может быть открыт по команде, а вот если там класс смартфона .android.mobile.landscape (в мобильной версии сайта), то слайдер пытается инициализироваться, не находит нужный класс в < html>, но все равно продолжает инициализацию, в следствие чего - сыплются ошибки.
    655f00550eb57787059247.png
    Ответ написан
    Комментировать
  • Как корректно работать с react router?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Вы создали не правильную структуру компонентов React Router. < Router> должен быть размещен в самом верху относительно вложенности всех компонентов, обычно это в районе < App>. Так же, для навигации Вы используете href, когда должны использовать компонент React Router - Link.

    Это что такое?
    <Route exact path='/contacts' Component={Contacts} />
    // Component={Contacts} ???

    Попробуйте так (если App является корневым компонентом):
    import React from 'react';
    import {BrowserRouter as Router, Routes, Route, Link} from 'react-router-dom';
    import './App.scss';
    
    import Header from './components/Header';
    import Service from './pages/Service';
    import Contacts from './pages/Contacts';
    import Login from './pages/Login';
    import Home from './pages/Home';
    
    function App() {
      return (
        <Router>
          <div className="App">
            <Header />
    
            <nav>
              <Link to="/">Главная</Link>
              <Link to="/service">Услуги</Link>
              <Link to="/contacts">Контакты</Link>
              <Link to="/login">Вход</Link>
            </nav>
    
            <Routes>
              <Route path="/" element={<Home />} />
              <Route path="/service" element={<Service />} />
              <Route path="/contacts" element={<Contacts />} />
              <Route path="/login" element={<Login />} />
    
              <Route path="*" element={<NotFoundRoute/>} />
            </Routes>
          </div>
        </Router>
      );
    }
    
    // not fount route handler
    function NotFoundRoute() {
      return <div>Page not found</div>;
    }
    
    export default App;

    Header.js:
    import {Link} from "react-router-dom";
    
    function Header(props) {
      return (
        <>
          <header>
            // ...
    
            <Link to="/service">Услуги</Link>
            <Link to="/contacts">Контакты</Link>
    
            // ...
          </header>
        </>
      )
    }
    
    export default Header;
    Ответ написан
    Комментировать
  • Как найти вхождения #слово в JS?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Как из строки
    привет #username text text #username2
    сделать массив
    [привет, #username, text text, #username2]

    https://regex101.com/r/CtgWXN/1
    const string = "привет #username text text #username2";
    const regex = /#\w+|[^#\s][^\s#]*(?:\s+[^#\s][^\s#]*)*/g;
    console.log(string.match(regex)); // ['привет', '#username', 'text text', '#username2']
    Ответ написан
  • Как проверить соответствует ли одна строка другой?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Можно регулярками, но я бы использовал специализированную библиотеку path-to-regexp:
    import pathToRegexp from 'path-to-regexp';
    
    // real route
    const route = '/notifications/:id/';
    
    // regexp
    const keys = [];
    const regexp = pathToRegexp(route, keys);
    
    // test route
    const testRoute = '/notifications/123/';
    
    if (regexp.exec(testRoute)) {
      console.log(`URL match from: ${route}`);
    } else {
      console.log(`URL not match from: ${route}`);
    }
    Ответ написан
    Комментировать
  • Google Forms - как получить только уникальные заполнения?

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

    Гугл аккаунт люди меняют и заполняют 2ой раз.

    Если на 100% надежно, то - никак! Максимально надежно - то только централизованной аунтификацией на Вашем сайте. Т.к. любое хранение куки, localStorage да и тот же Google аккаунт можно изменить. Но опять же, им ничего не мешает зарегать новый аккаунт у Вас в сайте и повторить все махинации.

    В итоге, все упирается в баланс затрат на защиту и выгоду, получаемой в результате данной защиты.
    Ответ написан
    Комментировать