• Как парсить контент, подгружаемый динамически?

    @d-sem
    Headless браузеры. Например, puppeteer и его адаптации для разных языков.
    Ответ написан
    Комментировать
  • Как подсчитать время заполнения заявки пользователем и отправить данные по нужному адресу?

    @d-sem
    1) Добавить в форму скрытый инпут со временем обращения к странице формы.
    2) Подключить яндекс метрику и навесить на форму события.
    Ответ написан
    Комментировать
  • На дешёвых наушниках за 500 руб. постоянно ломались провода. У меня руки кривые?

    @d-sem
    Провода наушников ломаются в трех местах обычно - у штекера(если крутить), там где провод входит в наушники (самая частая поломка, отрывается провод без оболочки в месте пайки когда наушники/шнур дергают), и на регуляторе громкости если есть (дешевые регуляторы громкости имеют плохую пайку). Последние два разрыва - чинятся пару минут самым дешманским паяльником.

    Могут сломаться и на дорогих наушниках, но шанс меньше.

    Можно добиться того, чтобы дешевые наушники долго жили, но надо выбирать модели без регулировки громкости и с усилением кабеля на входе в наушники.
    Ответ написан
    Комментировать
  • Почему выдает ошибку при отправке запроса pdo?

    @d-sem
    В post не отправляется 'submit'. Следовательно $_POST['submit'] нет и уходит в ветку else. До запроса в БД даже не доходит.
    Ответ написан
    1 комментарий
  • Зачем абстрактным классам нужны конструкторы?

    @d-sem
    Абстрактный клас может расширяться неабстрактным классом, который унаследует его методы и свойства. И вот тогда пригодится конструктор.
    Ответ написан
    Комментировать
  • Есть ли какой-то критерий, по которому можно отличить дизайнера ui/ux? Junior/Middle/Senior?

    @d-sem
    Главный критерий Junior/Middle/Senior, это когда проходишь собеседование на Junior/Middle/Senior и получаешь зарплату сопоставимую с зарплатой Junior/Middle/Senior на рынке.

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

    @d-sem
    начать изучение laravel или react( еще определяюсь )


    Надо определиться с целями. Что конкретно Вы хотите делать и чего хотите достичь. А потом построить план как этого достичь. И если с последним еще можно помочь, то все остальное целиком на вашей стороне.

    Как выкроить время? Вариантов уйма:

    1) Накопите денег и учитесь. Тем более что семьи и кредитов нет. Недостаток денег хорошо мотивирует в учебе.
    2) Повысьте кпд своей работы. Автоматизируйте рутину. Сборщики, препроцессоры, библиотеки для фронта. Скрипты.
    3) Повысьте ставку. Часть клиентов отсеется, часть останется. Но при правильном выборе будете зарабатывать столько же при таких же затратах времени.
    4) Если процесс отлажен, рассмотрите возможность делегирования задач и контролируйте их выполнение, оставив на себе общение с клиентами. Доход снизится, но будет больше времени, да и возможность брать больше заказов.
    Ответ написан
    1 комментарий
  • Какой процессор лучше взять для игрового компьютера?

    @d-sem
    Ryzen 5 3600 вне конкуренции в своем ценовом диапазоне.

    Плюс сейчас на него цена снижаться должна (вышел 3600xt недавно).
    Плюс на 550 чипсет должны будут цены снижаться.

    Мб также имеет смысл, если есть место, вместо покупки такого охлаждения за 8500р взять корпус побольше c лучшей вентиляцией и шумоизоляцией. Для того же ryzen 5 вполне хватает кулера за 2-3к. Производительность все равно будет упираться в видеокарту, кроме отдельных игр. А она может греться сильнее и шуметь сильнее процессора.

    Также мб возможно стоит отказаться от SSD + HDD и просто взять SSD на 1тб. По цене примерно также будет. Но тише, быстрее.

    А еще стоит посмотреть (если компьютер не горит прямо сейчас), что будет в новом поколении видеокарт от nvidia, которые аннонсируют совсем скоро. Там явно должно быть решение на замену 2060S.
    Ответ написан
    Комментировать
  • Как упростить формат ввода номера телефона в php?

    @d-sem
    \+[0-9]{минимальная длина, максимальная длина}
    Ответ написан
    Комментировать
  • В чем преимущества использование React в Laravel?

    @d-sem
    Фронтенд фреймворк удобно использовать в laravel, когда:
    1) Если есть сложный интерфейс, который средствами фреймворка будет выглядеть очень громоздко и неподдерживаемо, а иной раз и нереализуемо;
    2) Нужно задействовать чисто фронтенд разработчиков и обучение их всему бек фреймворку может занять определенное время.

    Да и вообще удобно разделить бекенд на чисто API и фронтенд с клиентом, по этому API работающему. Это позволит добиться лучшей производительности, уменьшения сложности проекта, более удобной поддержки.
    Ответ написан
    Комментировать
  • Node JS или Python для бэкенда?

    @d-sem
    Все зависит от того, что вы собираетесь делать на бекенде. По хорошему надо знать и ноду и python.

    Но если первый язык программирования на бек, то полезнее будет изучать python. Для общего развития полезно. Сам язык более... традиционный. Потом проще на другой переучиться. Сообщество более дружелюбное.

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

    И как правильно заметил выше DevMan и там и там все зависит в конечном итоге от вас.
    Ответ написан
    2 комментария
  • Как получить элемент со страницы в puppeteer?

    @d-sem
    То, что происходит внутри page.evaluate, это аналог консоли браузера на странице.

    Соответственно, в данном там нет не объекта page, ни $.

    Чтобы получить этот инпут, нужно пользоваться стандартными средствами JS и возвратом значения из промисов.

    const puppeteer = require('puppeteer');
    const contentHtml = `<html><body><input id='test' type='text'></body></html>`;
    
    (async () => {
        const browser = await puppeteer.launch();
        const page = await browser.newPage();
        await page.setContent(contentHtml);
        const type = await page.evaluate(() => {
            return document.getElementById('test').type;
        }).catch(e => console.dir(e));
        console.dir(type);
        await browser.close();
    })();
    Ответ написан
  • Как спарсить страницу на php минуя загрузочный экран сата?

    @d-sem
    Нужно или изучить через вкладку Network инструментов разработчика какие XHR запросы делает сайт и воспроизвести их, или использовать headless браузер (а ля https://github.com/puppeteer/puppeteer или какую-либо его адаптацию для php - например, https://github.com/nesk/puphpeteer).
    Ответ написан
    Комментировать
  • Переходить ли с frontend на backend?

    @d-sem
    Все индивидуально и определяется каждым человеком по собственным ощущениям. Не сказать, чтобы современный бекенд был сильно сложнее современного фронтенда. Он просто другой. Со своими ньюансами.

    Должна быть личная химия и интерес.

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

    @d-sem
    Что мешает сделать экспорт запроса из Postman'a в код (есть такая фукция) на Javascript и работать с данными уже там?)

    https://cdn.softwaretestinghelp.com/wp-content/qa/...
    https://cdn.softwaretestinghelp.com/wp-content/qa/...
    https://cdn.softwaretestinghelp.com/wp-content/qa/...

    На скриншотах старая версия. В новой версии есть три варианта экспорта - XHR, Fetch, jQuery
    Ответ написан
    Комментировать
  • Как ускорить или запустить многопоточно pupeteer?

    @d-sem
    1) Поделить 60000 страниц на порции кратные числу инстансов. Каждому инстансу скармливать свою кучку. Получить ускорение кратное числу инстансов.
    2) Положить 60000 страниц в очередь (rabbitmq, redis, db). Скриптами брать url в работу из очереди. Запускать новые воркеры пока хватает ресурсов. https://www.rabbitmq.com/getstarted.html

    Также может быть полезно https://habr.com/ru/post/413547/
    Ответ написан
    2 комментария
  • Как отправить письмо спустя некоторое время после события?

    @d-sem
    0) В БД не обходимо добавить поле - письмо отправлено (boolean или дата).

    Тогда алгоритм следующий:

    1) cron с нужной периодичностью запускает скрипт;
    2) скрипт делает выборку по дате (>5 дней от запуска скрипта и кому еще не отправлялось письмо);
    3) скрипт отправляет письмо;
    4) после отправки ставит флаг письмо отправлено или записывает дату отправки (необходимо для предотвращения повторной отправки).
    Ответ написан
    Комментировать
  • Как я могу отправить такой Curl запрос при помощи VueJS или JS?

    @d-sem
    Fetch
    var myHeaders = new Headers();
    myHeaders.append("Cookie", "csrftoken=lsDzlik5lO5y33cshMhIgMYIOzmh3CLv; rur=FTW");
    
    var formdata = new FormData();
    formdata.append("client_id", "990602627938098");
    formdata.append("client_secret", "eb8c7...");
    formdata.append("grant_type", "authorization_code");
    formdata.append("redirect_uri", "https://socialsizzle.herokuapp.com/auth/");
    formdata.append("code", "AQBx-hBsH3...");
    
    var requestOptions = {
      method: 'POST',
      headers: myHeaders,
      body: formdata,
      redirect: 'follow'
    };
    
    fetch("https://api.instagram.com/oauth/access_token", requestOptions)
      .then(response => response.text())
      .then(result => console.log(result))
      .catch(error => console.log('error', error));


    XHR
    var data = new FormData();
    data.append("client_id", "990602627938098");
    data.append("client_secret", "eb8c7...");
    data.append("grant_type", "authorization_code");
    data.append("redirect_uri", "https://socialsizzle.herokuapp.com/auth/");
    data.append("code", "AQBx-hBsH3...");
    
    var xhr = new XMLHttpRequest();
    xhr.withCredentials = true;
    
    xhr.addEventListener("readystatechange", function() {
      if(this.readyState === 4) {
        console.log(this.responseText);
      }
    });
    
    xhr.open("POST", "https://api.instagram.com/oauth/access_token");
    xhr.setRequestHeader("Cookie", "csrftoken=lsDzlik5lO5y33cshMhIgMYIOzmh3CLv; rur=FTW");
    
    xhr.send(data);


    jQuery
    var form = new FormData();
    form.append("client_id", "990602627938098");
    form.append("client_secret", "eb8c7...");
    form.append("grant_type", "authorization_code");
    form.append("redirect_uri", "https://socialsizzle.herokuapp.com/auth/");
    form.append("code", "AQBx-hBsH3...");
    
    var settings = {
      "url": "https://api.instagram.com/oauth/access_token",
      "method": "POST",
      "timeout": 0,
      "headers": {
        "Cookie": "csrftoken=lsDzlik5lO5y33cshMhIgMYIOzmh3CLv; rur=FTW"
      },
      "processData": false,
      "mimeType": "multipart/form-data",
      "contentType": false,
      "data": form
    };
    
    $.ajax(settings).done(function (response) {
      console.log(response);
    });
    Ответ написан
    1 комментарий
  • Как передать данные из одного приложения Django в другое?

    @d-sem
    Передавать не логин, а токен доступа, выдаваемый после авторизации. Передавать через куки или заголовки.
    Ответ написан
    Комментировать