• Как называется сцециалист, который может найти нишу для продукта?

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

    Той, которая уже использует Obsidian/Notion?
    Ответ написан
  • Насколько приемлема такая проверка на четность (делимость) в Python?

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Но разве это не ужасно нечитаемо?

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

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Влияет ли это на поведенческий фактор?

    Влияет, а вот насколько - другой вопрос.
    Ответ написан
    Комментировать
  • Можно ли проверить возможность редактирования на стороне клиента?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    корректна проверка на фронте

    Все проверки связанные с безопасностью - необходимо производить на бэке. Вы в любом случае должны осуществлять вторичную проверку на бэке всего того, что юзверь понаписал на фронте.
    Бэк на Go, поэтому SSR здесь не получится использовать

    На nextjs получится.
    Ответ написан
    8 комментариев
  • Чем заменить require чтобы оно работало в браузере?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Если под "браузером" понимается html страница, то вместо require - подключите библиотеки в html, например:
    <script src="https://cdnjs.cloudflare.com/ajax/libs/axios/1.6.0/axios.min.js" integrity="sha512-WrdC3CE9vf1nBf58JHepuWT4x24uTacky9fuzw2g/3L9JkihgwZ6Cfv+JGTtNyosOhEmttMtEZ6H3qJWfI7gIQ==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/cheerio/0.22.0/index.js" integrity="sha512-+obmGUxyA+OfXW4RU7Ez2JBbCFy+dmZatW/Z5u/PDZlY+SKzAMSHzpNfTDohw7RFfW+zmLrI9h19XiODWZRO5A==" crossorigin="anonymous" referrerpolicy="no-referrer"></script>
    
    <script>
    const parse = async () => {
        const getHTML = async (url) => {
            const { data } = await axios.get(url);
            return cheerio.load(data);
        };
    
        const $ = await getHTML("https://rozetka.com.ua/search/?text=%D0%B7%D0%B0%D1%80%D1%8F%D0%B4%D0%BD%D0%B0+%D1%81%D1%82%D0%B0%D0%BD%D1%86%D1%96%D1%8F&section_id=4674585");
        const pageNumber = parseInt($('a.pagination__link').eq(-1).text());
    
        for (let i = 1; i <= pageNumber; i++) { // Виправлено умову циклу
            const selector = await getHTML(
                `https://rozetka.com.ua/search/?text=%D0%B7%D0%B0%D1%80%D1%8F%D0%B4%D0%BD%D0%B0+%D1%81%D1%82%D0%B0%D0%BD%D1%86%D1%96%D1%8F&section_id=4674585&page=${i}` // Виправлено номер сторінки
            );
            selector('.catalog-grid__cell').each((index, element) => { // Виправлено параметри функції each
                const title = selector(element).find('.goods-tile__title').text();
                console.log(title, link); // Додано вивід посилання
            });
        }
    };
    
    parse();
    </script>

    Библиотеки должны быть загружены раньше Вашего скрипта.
    Ответ написан
  • Автоматический поиск цен на сайте в карточке товара?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Есть какой-то способ который находит цену на сайте в карточке товара, автоматический даже можно с помощью ИИ?

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

    У Вас сотни магазинов? Даже если это виртуальный DOM, то все равно не вижу проблем по поиску цены без использования нейронок.
    Ответ написан
  • Какой монитор выбрать для разработки и 3D графики?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Самый главный критерий - бюджет, про который Вы не сказали.

    На его смену хочу взять побольше размером 27-28, с разрешением 2k.

    2к - это минималка, чтобы слепой с метра не заметил пикселей на мониторе. О какой графике Вы говорите?
    смысла брать 4k и 30 дюймовые наверное нет...

    Минимум 4к, тк. ppi должен быть выше 150.
    Минимум rgb 100%. Конечно лучше мерить в srgb, но тут как получится.

    Т.к. про бюджет Вы ничего не сказали, то предположу, что пару тысяч баксов у Вас рядом с мусоркой валяются. Тогда лучше oled, чем ips.

    Хорошая статья, хоть и времен мамонтов.
    Ответ написан
  • Как найти точный url сайта на javascript?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Пользуюсь сайтом написаном на javascript

    SPA?
    Можно ли както узнать url и заходить через него в интересующиеся разделы напрямую.

    Если js настроен на обработку url параметров, то можно, но учитывая, что url не меняется, то вероятнее всего нет.

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

    Mike_Ro
    @Mike_Ro Куратор тега Python
    Python, JS, WordPress, SEO, Bots, Adversting
    Самый старый файл - первый:
    import os
    import glob
    
    # sort by change date
    def sort(path, ext="*.jpg"):
        files = glob.glob(os.path.join(path, ext))
        files.sort(key=os.path.getmtime)
        return files
    
    # rename files
    def rename(path):
        _sorted = sort(path)
    
        for i, file_path in enumerate(_sorted, 1):
            folder, old_name = os.path.split(file_path)
            new_name = f"{i}.jpg"
            new_path = os.path.join(folder, new_name)
    
            os.rename(file_path, new_path)
            print(f"Rename {old_name} to {new_name}")
    
    if __name__ == "__main__":
        # path to dir with images
        folder_path = "/path/to/dir/images"
        rename(folder_path)
    Ответ написан
    5 комментариев
  • Можно ли как то отследить элемент JS?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Просто блок div c классом

    Класс js-pagination-item

    Из автора вопроса, спустя несколько уточняющих вопрос - все таки получилось добыть разведданные, ими оказался элемент с селектором div.js-pagination-item.

    Заюзаем MutationObserver (как предложит тов. Rsa97):
    // wait dom loaded
    document.addEventListener('DOMContentLoaded', () => {
      // observer
      const observer = new MutationObserver((mutations) => {
        mutations.forEach((mutation) => {
          if (mutation.addedNodes.length > 0) {
            mutation.addedNodes.forEach((node) => {
              // target element
              if (node.nodeType === 1 && node.classList.contains('js-pagination-item')) {
                // print in the console log
                console.log('Detected element!');
              }
            });
          }
        });
      });
    
      // start
      observer.observe(document.body, {childList: true, subtree: true});
    });

    Код дождется полной загрузки страницы и лишь потом начнет наблюдение. Если Ваш элемент появится ранее разгрузки страницы, то уберите слушателя с DOMContentLoaded.
    Ответ написан
    Комментировать
  • Как настроить перенаправление (редирект) с домена на домен?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Т.к. в вопросе не указаны:
    - Требования по соблюдению вложенности и параметров url;
    - Тип редиректа;
    - Расположение .htaccess.

    То напишу 2 варианта (с и без вложенности и параметров), а оба варианта будут использовать 301 редирект.

    Предполагается, что .htaccess находится в корневой директории домена:

    # 123.ru > redirect 301 > http://12345.ru,
    # 123.ru/?test=123 > redirect 301 > http://12345.ru,
    # 123.ru/cats/?test=123 > redirect 301 > http://12345.ru:
    
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^123\.ru [NC]
    RewriteRule ^(.*)$ http://12345.ru/ [L,R=301]

    # 123.ru > redirect 301 > http://12345.ru,
    # 123.ru/?test=123 > redirect 301 > http://12345.ru/?test=123,
    # 123.ru/cats/?test=123 > redirect 301 > http://12345.ru/cats/?test=123:
    
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^123\.ru [NC]
    RewriteRule ^(.*)$ http://12345.ru/$1 [L,R=301]

    UPD: вариант с перенаправлением любого маршрута (втч. с url параметрами) на 12345.ru:
    # 123.ru/cats/?test=123 > redirect 301 > http://12345.ru:
    
    RewriteEngine On
    RewriteCond %{HTTP_HOST} ^123\.ru [NC]
    RewriteRule ^(.*)$ http://12345.ru/ [L,R=301]
    Ответ написан
    2 комментария
  • Почему переменная класса становится undefined при обращении из метода?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Стрелочная функция не имеет своего this, соответственно возьмет его из скоупа выше:
    MyFunc = (e) => {
      console.log("MyVariable: " + this.MyVariable); // oh yes
    }
    Ответ написан
    Комментировать
  • Как правильно делать фильтр на сайте?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Результат интересует как behance. Когда при выборе категории меняется страница работ, url из "behance.ru" превращается "behance.ru/kate", но визуально нет переадресации на новую страницу.

    Если брать пример с behance.ru, то у них на сайте используется vuejs, который предварительно был отрендерен на сервере.

    Если Вы хотите на обычном js такое реализовать, то Вам необходимо менять url при клике на определенный элемент:
    // listeners
    document.querySelector('.showDivan').addEventListener('click', () => filter('divan'));
    document.querySelector('.showShkaf').addEventListener('click', () => filter('shkaf'));
    document.querySelector('.showAll').addEventListener('click', () => filter('all'));
    
    // filtering
    const filter = category => {
      const items = document.querySelectorAll('.product');
    
      items.forEach(item => {
        item.style.display = category === 'all' || item.classList.contains(category) ? 'block' : 'none';
      });
    
      // change url
      history.pushState({}, '', `/category/${category}`);
    }

    Стоит ли делать на чистом js? Ради фана - можно, в остальных случаях - не рекомендуется, т.к. для этого изобрели тот же самый vuejs/reactjs.
    Ответ написан
    1 комментарий
  • Как сделать проще. компактней код?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    Попроще, как заказывали!
    const clickTargetElement = document.querySelector('.hiking__about_item_img');
    
    const imageConfigurations = {
      primaryImage: {
        htmlElement: document.querySelector('.img1'),
        sourcePaths: ['img/about_hiking/1.png', 'img/about_hiking/2.png'],
        altTexts: ['House and mountains in the background', 'Snowy mountains']
      },
      secondaryImage: {
        htmlElement: document.querySelector('.img2'),
        sourcePaths: ['img/about_hiking/1.png', 'img/about_hiking/2.png'],
        altTexts: ['House and mountains in the background', 'Snowy mountains']
      }
    }
    
    const toggleImageAttributes = ({htmlElement, sourcePaths, altTexts}) => {
      const isPrimarySource = htmlElement.getAttribute('src') === sourcePaths[0];
      const indexToUse = isPrimarySource ? 1 : 0;
    
      htmlElement.setAttribute('src', sourcePaths[indexToUse]);
      htmlElement.setAttribute('alt', altTexts[indexToUse]);
    }
    
    clickTargetElement.addEventListener('click', () => {
      Object.values(imageConfigurations).forEach(toggleImageAttributes);
    });
    Ответ написан
    4 комментария
  • Как длительное время распознавать слова в браузере?

    Mike_Ro
    @Mike_Ro Куратор тега JavaScript
    Python, JS, WordPress, SEO, Bots, Adversting
    https://developer.mozilla.org/en-US/docs/Web/API/S...
    https://developer.mozilla.org/en-US/docs/Web/API/S...
    Как вариант, слушать события result и end, и перезапускать SpeechRecognition:
    const rec = new SpeechRecognition();
    
    rec.addEventListener('result', () => {
      // code
    });
    
    rec.addEventListener('end', () => recognition.start());
    rec.start();


    как принудительно его включить чтобы не отключался пока страница открыта?

    На данный момент - никак. Поведение может варьироваться в зависимости от браузера и его версии. Рекомендуется руками обрабатывать соответствующие события и перезапускать SpeechRecognition.
    при повторном использовании recognizer.start() - появляется диалоговое окно браузера спрашивающее о микрофоне - как этого избежать?

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

    Это нативное окно браузера и находится вне контекста скриптов на странице.
    Ответ написан
  • Как удалить просроченные товары в разделе товары в ВК автоматически?

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

    Написать скрипт.
    или на чём он пишется

    На языке программирования. Учитывая, что у Вас в тегах Python - то на Python он так же пишется.
    Ответ написан
  • Как правильно закрыть от индексации URL с GET параметром источника ссылки?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    Не индексировать страницы в url которых имеется url параметр param, robotx.txt:
    User-agent: *
    Disallow: /*?param=

    Но лучше использовать канонические адреса, html страницы:
    <link rel="canonical" href="https://www.example.com/statya"/>
    Ответ написан
    1 комментарий
  • Насколько законно для крупной компании пробивать человека по почте?

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

    Размер и длина ;) компании не имеют значения. На всех действует 152 ФЗ ("общедоступные персональные данные - персональные данные, доступ неограниченного круга лиц к которым предоставлен с согласия субъекта персональных данных или на которые в соответствии с федеральными законами не распространяется требование соблюдения конфиденциальности").

    Соответственно, в теории можно подать на них в суд за использование ПД, им придется доказать, что Вы давали такое согласие. Однако, на кого Вы будите подавать в суд? Ответчик кто? Вся компания? Конкретный чел? Может, кот пробежал по клаве и взломал пентагон? - экспертизы в студию!

    Я хочу узнать, насколько незаконны их действия?

    Законны, пока не доказано обратное.

    На что они меня пробили, отправили письмо моему начальнику, а сама компания чуть ли не угрожает мне.

    Как мерили уровень "угроз"?
    Нет такой статьи "покушение на угрозу". Это не угроза, пока не доказано обратное.

    Если резюмировать, то овчинка выделки не стоит, с обоих сторон.
    Ответ написан
    Комментировать
  • Как или чем решить новую капчу Yandex SmrtCaptcha?

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

    Нет, в этом весь смысл капчи.
    Меня эта капча настолько бесит, что я даже готов потратить время и написать свое расширение для обхода, лишь бы было внешнее API для ее решения.

    Пишите - ждать по 20-60 секунд для расшифровки, через специализированные сервисы + это не бесплатно, смысла для личного пользования практически нет.

    alexalexes все правильно написал в комменте.
    Ответ написан
    2 комментария
  • Чем отличается источники трафика в метрике?

    Mike_Ro
    @Mike_Ro
    Python, JS, WordPress, SEO, Bots, Adversting
    а так же есть еще ya.ru и yandex.ru на которых по одному визиту. Почему они разделились?

    Потому что это разные сайты?
    Ответ написан