Задать вопрос
  • Стоит ли писать let, const?

    В соверменном js идет тенденция к отказу от var вообще, вместо него нужно использовать const. Почти все случаи использования let можно заменить на const. Например если создается переменная с пустым массивом, то создавайте ее смело с const. Это позволит спокойно пушить туда любые значения. То же самое при инициализации переменной объектом. Const служит защитой от переобъявления переменной, тем самым уменьшая веротяность багов, связанных с этим и улучшает читабельность кода.
    Ответ написан
    Комментировать
  • Как вы используете jQuery и прочие библиотеки JS, установленные через npm?

    @deliro
    Собирают исходники в бандл (bundle) системами сборки — webpack / gulp. На выходе получают один js файл (если не использовать code splitting), в котором есть все библиотеки, выполнен tree shaking (удалён мёртвый код), код минифицирован (чтобы меньше весить и быстрее передаваться пользователю) и доведён до целевой версии (babel, который позволяет писать разработчику код с новыми фичами (из ES6), переводя его в целевой (сейчас это чаще всего ES5))

    Далее этот бандл автоматически или (реже) вручную внедряется в HTML.

    То, про что говоришь ты — это примерно как в 2020 писать на скалах углём.
    Ответ написан
    6 комментариев
  • Как решить задачу на сложность алгоритмов ниже?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    г) не правильно подсчитано.

    Составьте уравнение. Вот есть у вас функция времени для n входных данных f(n) на компе B. На компе A время выполнения будет - f(n)/100, ведь он в 100 раз быстрее.

    Теперь обозначьте за x объем данных на компе A, который надо найти. Тогда у вас f(x)/100 = f(n). Подставьте нужную функцию вместо f() и найдите x. Спойлер, будет похоже, но не то, что у вас в вопросе указано.
    Ответ написан
    2 комментария
  • Возможно ли тестирование сайта в автоматическом режиме?

    saboteur_kiev
    @saboteur_kiev Куратор тега Веб-разработка
    software engineer
    headless browser, например chromium, запускается из командной строки, прописываются различные варианты что он должен делать и какой результат должен получиться.
    Скриптуется и запускается автоматом.

    Можно использовать что-то посложнее, типа Selenium.
    Ну и вообще, QA automation engineer, есть такое.
    Ответ написан
    Комментировать
  • Возможно ли тестирование сайта в автоматическом режиме?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    Да, возможно. Именно для этого и был придуман Selenium.
    Ответ написан
    5 комментариев
  • Как осуществить параллельную (одновременную) работу двух операционных систем и быстрое переключение между ними?

    CityCat4
    @CityCat4
    Жил да был черный кот за углом...
    Операционные системы работали без ОС-посредника, то есть на голом железе

    Так не бывает
    (ну или с какой-нибудь программной прослойкой).

    А вот так бывает и очень даже. Это называется гипервизор первого типа. Внутри которого ставятся виртуальные машины. Гиперов первого типа всего несколько: KVM, VmWare, Xen, Hyper-V. VmWare предпогалает использование сервера только как сервер - есть возможность сунуть видео в виртуалку, но это нестандартный изврат, все остальные - можно поставить виртуалку, две, десять и еще параллельно на хостовой машине работать. Вот только совместить винду и линух на одном компе - а это наиболее частая хотелка - ооооочень непросто. Рабочие кейсы есть, на хабре были статьи, но там все непросто и нестандартно и бубен нужен преогромнейший :)
    Ответ написан
    Комментировать
  • Как осуществить параллельную (одновременную) работу двух операционных систем и быстрое переключение между ними?

    @MechanID
    Админ хостинг провайдера
    Вам нужен компьютер в двумя видеокартами и процессором интел который поддерживает технологию VT-d или его аналог на АМД, ставите KVM или vmware гипервизор, в нем две виртуалки вин и линь, пробрасываете в виртуалки видеокарты, и в одну из виртуалок юсб хаб для клавиатуры и мышки (эта виртуалка будет сервером synergy). Каждой видеокарте подключаете монитор. устанавливаете ОС в виртуалках, и ставите программу https://symless.com/synergy.
    Итого у вас будет 1 системник, монитор с вин, монитор с линь, и клавиатура мышь которыми вы управляете обоими ОС. Synergy позволяет использовать одну клавитуру/мышь на множество компов с разными ОС.
    Ответ написан
    2 комментария
  • Как осуществить параллельную (одновременную) работу двух операционных систем и быстрое переключение между ними?

    mindtester
    @mindtester Куратор тега Windows
    http://iczin.su/hexagram_48
    (ну или с какой-нибудь программной прослойкой)
    гипервизор называется. а ОС будут гостевыми в виртуальных машинах. других вариантов нет. от слова вообще нет

    одна из самых тонких и качественных прослоек называется vmware vsphere

    эксклюзив в некоторых вещах. говорят можно поставить несколько видюх и физически отдавать гостям (часто это называю презентовать) upd но это не про переключение, а про то что в теории можно каждой гостевой системе еще и свой монитор выдать

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

    upd2 у вас в формулировке вопроса очень так абстрактно две операционные системы
    а если по тегам, то можно предположить что вы хотите винду и линукс?
    в любом случае, возможно статья по ссылке ниже, подкинет вам еще идей (про запуски гуев линукса в винде, это в конце статьи) ;))
    https://habr.com/ru/company/microsoft/blog/476026/
    Ответ написан
    Комментировать
  • Как избежать конфликтов в git?

    Не ты должен решать, разработчик перед тем как сделать пул реквест должен сделать в своей ветке
    git fetch
    git rebase origin/master

    и после этого решить все конфликты а только потом
    git push
    Единственный выход для минимизации конфликтов - бить файл на кусочки.

    Если человек работает в форке, то ему нужно сначала стянуть изменения себе в мастер с основного репозитория
    Ответ написан
    2 комментария
  • Как правильно добавлять элемент в объект во Vue.JS?

    Kozack
    @Kozack Куратор тега Vue.js
    Thinking about a11y
    Не до конца понимаю, что вы пытаетесь сделать. Попробуйте использовать Vue.set
    Ответ написан
    Комментировать
  • В чем отличие document.querySelectorAll() от document.getElementsByClassName()?

    0xD34F
    @0xD34F Куратор тега JavaScript
    Если выводить в консоль то коллекции не чем не отличаются.

    Это не так. В первом случае HTMLCollection, во втором NodeList. Отличие первой от второго состоит в том, что

    HTMLCollection, хранящая элементы DOM, является динамической. При изменении документа она моментально отражает все произведённые изменения.

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

    Как удалять элементы динамической коллекции без пропусков:

    // вариант раз - меняем направление обхода, от конца к началу:
    for (let i = elements.length; i--;) {
      elements.item(i).replaceWith();
    }
    
    // вариант два - удаляем нулевой элемент коллекции, пока он существует:
    for (let n; n = elements[0]; n.remove()) ;
    Ответ написан
    4 комментария
  • Как получить значение атрибута выбранного option'а?

    document.querySelector('.ash_currency option:checked').getAttribute('data-name')
    Ответ написан
    Комментировать
  • Как сделать зубчатую линию на сайте?

    @dmalapsh
    Ну вообще можно сделать большое количество div, задать обводку, установить display - inline, повернуть их все на 45 градусов, вложить в другой блок установить ему overflow - hidden, и задать высоту так чтобы половина дивов была скрыта. Это об извращениях. А по человечески, нужно вырезать одни элемент этой полоски, сохранить в png. Поставить как фоновый элемент блока. И запретить повторение по вертикали(repeatY: no-repeat), соответственно повторение по горизонтали останется, и этот кусок линии будет повторятся до тех пор пока не закончится ширина бока.
    Ответ написан
    1 комментарий
  • Как конкретизировать сложный тип?

    TypeScript так не умеет.

    Могу предложить нормализацию сложных типов. Что-то типа такого:
    // Заготовка для Some
    interface SomeDraft {
      value?: string | string[]; // Массив или значение. Может отсутствовать.
    }
    
    // Some имеет более строгий тип и как можно меньшую вариативность,
    // чтобы в коде не делать проверки.
    interface Some {
      value: string[];  // Всегда присутствует. Всегда массив.
    }
    
    function makeSome({ value = [] }: SomeDraft): Some {
      // Приводим к нормальному (более строгому) типу
      return {
        value: Array.isArray(value) ? value : [value],
      };
    }
    
    // Здесь Some задаётся через заготовку - так проще задавать значения
    // Но результат всегда более строгий - так проще значениями пользоваться
    const foo = makeSome({ value: 'foo' }); // { value: ['foo'] }
    
    foo.value.map(() => {}); // foo.value - всегда массив и TypeScript это знает
    Ответ написан
    6 комментариев
  • Как применить метод к нескольким переменным?

    v3shin
    @v3shin
    Веб-шаман
    jQuery.add
    На ванилле:
    document.querySelectorAll('.a, .b, .c').forEach(element => {
        element.classList.add('anime');
    });
    Ответ написан
    1 комментарий
  • Как решить задачу без зацикливания?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    function test(arr) {
      let len = arr.length;
      let sum = arr.reduce((acc, val) => acc + val, 0);
      while (sum / len <= 4.9) {
        arr.push(5);
        len++;
        sum += 5;
      }
      return arr;
    }
    console.log(test([2,5,3,5]));
    
    // Array(51) [ 2, 5, 3, 5, 5, 5, 5, 5, 5, 5, … ]
    Ответ написан
    Комментировать
  • Задачка с нахождением анаграмм в массиве?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    как можно улучшить данный код

    Избежать лишних действий.

    Например, незачем на каждом шаге снова разбивать и сортировать исходное слово – достаточно сделать это один раз:
    function anagrams(word, words) {
        const sample = word.split('').sort().join('');
        return words.filter(function (e) {
            return e.split('').sort().join('') === sample;
        })
    }


    Нет смысла проверять неподходящие по длине слова.
    function anagrams(word, words) {
        const length = word.length;
        const sample = word.split('').sort().join('');
        return words.filter(w => w.length === length)
            .filter(function (e) {
                return e.split('').sort().join('') === sample;
            })
    }


    P.S. я вот такое решение отправил. Сравнить длину. Привести к lowercase. Запоминать позиции, в которых найден очередной символ и дальше искать после этой позиции (если будут повторы этого же символа). Как только какой-то символ не найден – всё, не совпали.
    Код
    // write the function isAnagram
    var isAnagram = function(test, original) {
      const length = original.length;
    
      if (length !== test.length) return false;
    
      const A = test.toLowerCase();
      const B = original.toLowerCase();
      const dict = {};
    
      for (let i=0, char, pos; i < length; i++) {
        char = A[i];
        pos = B.indexOf(char, +dict[char]);
        if (!~pos) return false;
        dict[char] = pos + 1;
      }
    
      return true;
    };
    Ответ написан
    Комментировать
  • Как сделать так, чтобы хэши md5 совпадали у python и js?

    Строка должна быть также в utf8. Извините за говно код, но вот пример
    const md5 = require("pure-md5")
    const utf8 = require('utf8');
    console.log(md5.md5(utf8.encode("Привет")))
    Ответ написан
    Комментировать
  • Как работает instanceof?

    MrDecoy
    @MrDecoy Куратор тега JavaScript
    Верставший фронтендер
    Instance - Это экземпляр.
    Используя A instanceof B, Вы как бы спрашиваете: является ли А экземпляром класса B?
    Классов у нас нет, но есть прототипное наследование и функции-консструкторы взамен.

    Экземпляр возвращается конструктором через new неявно, или же если в конструкторе Вы строго укажите какой объект, в качестве экземпляра, будет возвращён.

    В примере же указано что функция-конструктор должна возвращать себя же.
    Таким образом, фукнция - не экземпляр самой себя.
    Отсюда и new F() instanceof F - false;

    Но!
    Функции в JS являются экземплярами класса Function.
    А в примере, как уже писалось выше, функция конструтор возвращает саму себя, следовательно, возвращает объект-экземпляр клаcса Function.
    Отсюда и new F() instanceof Function - true;
    Ответ написан
    Комментировать