• В чем смысл быть гуру тостера?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    1. Работа над личным брендом: Высокая репутация в профессиональных сообществах повышает привлекательность для нанимателей.
    2. Улучшение существующих знаний: Хочешь что-то понять, объясни другому.
    3. Приобретение новых знаний: Специализация замыкает в узком спектре задач и проблем, а Q&A-сервисы - это источник задач и проблем из самых разных областей и иногда под самыми неожиданными углами.
    4. Альтруизм: Большинству из нас кто-то помогал в начале пути, пришло время возвращать долг и делать свой скромный вклад в рост кадров.

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

    Для чего просиживаете на тостере по 5-6 часов в день?

    Я в среднем раз в полчаса-час заглядываю. Если находится интересный вопрос, могу потратить на него минут 10. Некоторые на перекуры больше времени тратят.
    Ответ написан
    7 комментариев
  • Как сделать, чтобы 3 картинки менялись с коротким интервалом, раз в 4 секунды javascript?

    BRAGA96
    @BRAGA96
    <div>
        <img data-loop-src='[
            "https://picsum.photos/150/150/?image=10",
            "https://picsum.photos/150/150/?image=25",
            "https://picsum.photos/150/150/?image=30"
        ]'>
        <img data-loop-src='[
            "https://picsum.photos/150/150/?image=5",
            "https://picsum.photos/150/150/?image=8",
            "https://picsum.photos/150/150/?image=4"
        ]'>
        <img data-loop-src='[
            "https://picsum.photos/150/150/?image=2",
            "https://picsum.photos/150/150/?image=99",
            "https://picsum.photos/150/150/?image=84"
        ]'>
    </div>
    
    <script>
        document.querySelectorAll('[data-loop-src]').forEach(image => {
            const list = JSON.parse(image.dataset.loopSrc);
            (function timer(index = 0) {
                setTimeout(() => {
                    if (list[index]) {
                        image.src = list[index];
                        timer(++index);
                    } else {
                        setTimeout(timer, 4000);
                    }
                }, 200);
            })();
        });
    </script>
    Ответ написан
    1 комментарий
  • VK API. Можно ли получить id всех пользователей из метода users.search?

    akokarev
    @akokarev
    Начинающий программист
    В доках апи вк об этом написано, есть ограничение на количество запросов, ограничение на кол-во возвращаемых объектов и т.д. Про некоторые ограничения они явно не говорят сколько, чтобы не было эксплуатации.

    То, что вы пытаетесь сделать, явно противоречит здравому смыслу - пользователю не нужны такие объемы данных, он не будет через UI просматривать такое кол-во строк. А значит и программам не позволят столько получать.
    Конечно, вы можете попробовать обойти эти ограничения, например создав кучу левых аккаунтов, получив на них кучу токенов и перебирать их по ходу дела. Но будьте уверены, вас быстро вычислят и заблокируют по IP и другим критериям.

    Так что идея собрать разом 130 тысяч id пользователей по критериям отбора заранее обречена на провал.

    Ну и собственно вопрос: А ЗАЧЕМ?
    Возможно, ответив на который, вы найдете более легальный и правильный способ решить задачу, либо отказаться от этой затеи.
    Ответ написан
    Комментировать
  • Создать цепочку промисов незвестной длины?

    0xD34F
    @0xD34F Куратор тега JavaScript
    const chainScripts = src => src.reduce((acc, n) => {
      return acc.then(() => new Promise((resolve, reject) => {
        const s = document.createElement('script');
        s.onload = resolve;
        s.onerror = reject;
        s.src = n;
        document.head.appendChild(s);
      }));
    }, Promise.resolve());
    Ответ написан
    1 комментарий
  • Почему this ведет себя по разному при сравнении с числом?

    Vlad_IT
    @Vlad_IT Куратор тега JavaScript
    Front-end разработчик
    Когда вы пытаетесь обратится к свойству/методу примитивного типа, он оборачивается в объект (Number, String и.т.д.), выполняется ваш метод или возвращается свойство, после чего объект удаляется. Поэтому в this у методов всегда будет ссылка на "объект обертка". Этот как
    let num = new Number(123);
    num === 123; // false
    num == 123; // true
    typeof num; // object

    UPD: в строгом режиме, this внутри метода будет примитивным типом number. Почему это так, пока не знаю, не могу найти в спецификации такого. Вероятно это потому, что в строгом режиме this не преобразуется автоматически (например в не строгом режиме, с null/undefined в глобальный объект). Пример
    // не строгий режим
    function func() {
    	console.warn(this);
    }
    
    func.call(100); // выведет [Number: 100] объект, т.е. есть преобразование

    строгий
    "use strict"
    
    function func() {
    	console.warn(this);
    }
    
    func.call(100); // выведет 100, примитивный number. т.е. преобразования нет


    Поэтому код и работает в вашей песочнице, т.к. там строгий режим включен по умолчанию.
    Ответ написан
    3 комментария
  • Можно ли получить sources страницы?

    potapchino
    @potapchino
    <!DOCTYPE html>
    <html lang="en">
      <head>
        <meta charset="UTF-8" />
        <title>Document</title>
    
        <link rel="stylesheet" href="/src/style.foo.css" />
        <script src="src/script.foo.js"></script>
      </head>
      <body>
        <div id="nest"></div>
    
        <link rel="stylesheet" href="/src/style.bar.css" />
        <script src="src/script.bar.js"></script>
    
        <script>
          const nest = document.querySelector("#nest");
          const elems = document.querySelectorAll('link[rel="stylesheet"], script[src]');
    
          elems.forEach(el => {
            fetch(el.src || el.href)
              .then(r => r.text())
              .then(src => {
                const pre = document.createElement("pre");
                const hr = document.createElement("hr");
    
                pre.innerText = src;
                nest.appendChild(pre);
                nest.appendChild(hr);
              });
          });
        </script>
      </body>
    </html>


    ссылку на document у iframe можно получить так:
    const myIframeDocument = document.querySelector('iframe').contentDocument;
    
    myIframeDocument.querySelectorAll('link[rel="stylesheet"], script[src]');
    //ну и дальше тоже самое...

    только если iframe на другом домене, тогда будет блокировка запроса из-за cors'a
    Ответ написан
    Комментировать
  • Получить содержимое тега?

    Moskus
    @Moskus
    Забыть про регулярные выражения для разбора структуры XML, использовать DOM, XPath, XSL - что угодно, что действительно создано для этой цели.

    А ещё вы, в лучших традициях, не указали используемый язык или среду.
    Ответ написан
    6 комментариев
  • Как правильно повесить обработчик события?

    @DanKud
    Потому что нужно передавать саму функцию - element.addEventListener('click', myFunc) а не запускать ее выполнение. Отправляя myFunc('arg') вы сразу же запускаете выполнение функции. Чтобы отправить параметры функции в обработчик нужно привязать контекст через .bind, как уже вам написали в примере выше, либо использовать метод .handleEvent из интерфейса EventListener:
    function myFunc(event) {
        console.log(this.arg);
    }
    .....
    element.addEventListener('click', {
        handleEvent: myFunc,
        arg: 'arg_value'
    });
    Ответ написан
    Комментировать
  • Как заставить бота переслать сообщение ВК?

    Пересылка сообщения из одного чата в другой от лица группы невозможна, т.к. ID каждого сообщения = 0.
    Поле forward_messages метода messages.send принимает только глобальное ID сообщения, а не её ID в рамках диалога.
    Ответ написан
    1 комментарий
  • Какой выбрать монитор для верстальщика?

    webinar
    @webinar
    Учим yii: https://youtu.be/-WRMlGHLgRg
    Какой выбрать монитор для верстальщика в 2019 году?

    широкоформатный или 2 вместо одного

    Если ли смысл в 4k?

    нет

    Не раздражают ли верстальщиков изогнутые формы?

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

    Как вы считаете?

    программно или в уме
    Ответ написан
    17 комментариев
  • Для чего тут %?

    boyarskiy_mihail
    @boyarskiy_mihail
    Ответ написан
    Комментировать
  • Как получить блок под блоком по которому кликнул?

    Vlad_IT
    @Vlad_IT Куратор тега JavaScript
    Front-end разработчик
    Есть такой метод elementsFromPoint, он получает все элементы, которые находятся по заданным координатам. т.е. схема такая
    1) Слушаете клик по элементу.
    2) Получаете координаты мыши
    3) Передаете координаты мыши в elementsFromPoint, и получаете массив элементов.
    4) Работаете с массивом. Он отсортирован по "глубине".
    Ответ написан
    1 комментарий
  • Возможно ли решить задачу без циклов?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Возможно, но это извращение (никогда так не делайте!):
    eval(JSON.stringify(array).replace(/[^\d]+/g, '+') + '0') // 31

    Перевести массив в JSON-строку, все не-цифры заменить на знаки «+» и выполнить полученное выражение.

    Например:
    const a = [1, 2, [3, 4, [[5, 6], 7], 8]];
    // Вжух! и получится строка:
    "+1+2+3+4+5+6+7+8+"
    Ответ написан
    4 комментария