• Танцы с обьектом и деструктуризацией?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    ({email} = body)
    Оно?

    Пример:
    {
      const body = {
        email: 'myEmail'
      };
    
      console.log(
        ({email} = body)   // Object { email: "myEmail" }
      );
    }


    См. Object Destructuring - Assignment without declaration
    Ответ написан
    Комментировать
  • При распознавании речи проигрывать аудио-файлы связанные с определенными словами из текста речи?

    Надёжнее и проще убрать текстовое значение слов из цепочки.

    Микрофон слушает всё подряд – некоторые звуковые паттерны, которым обучен, триггерят действие (воспроизведение аудиофайла).

    Примерно так работают голосовые команды видеорегистраторам – например Xiaomi 70mai при стоимости ок 1500 руб. Слушают постоянно, "понимают" всего несколько команд. Прошивка с русификацией делает, в т.ч. и эти распознаваемые команды русскоязычными.
    Ответ написан
    Комментировать
  • Как можно созать видео динамичнеских графиков?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Точно можно сделать в Adobe After Effects: они умеют читать данные и связывать любые свойства с прочитанными параметрами. Но пока не придумал, как автоматизировать плавную смену позиций соседних стран, поднимающаяся всегда сверху над опускающейся.

    Другой вариант, сделать весь график и его анимацию в веб-среде, с помощью тех же D3.js и затем экспортировать её в видео программно или просто записью экрана.
    Ответ написан
    Комментировать
  • Корректировка JS кода ( сложение, вычитание )?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Раз используется jQuery почему бы сразу не отбирать нужные чекбоксы. И считать сумму их цен. При этом предыдущее значение цены никому уже не нужно, никаких вычитаний.
    function Check() {
      var price = 0;
      var PriceBoxes = $('[name=Price][type=checkbox]:checked');
      if (PriceBoxes.length) price = $.makeArray(PriceBoxes)
        .map(el => +el.value)
        .reduce((p,c) => p+c);
        
      $('.message').val(price);
    }


    Ответ написан
    4 комментария
  • Как через php перезагрузить nginx?

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    Можно просто по крону раз в 15 минут делать не перезагрузку самого nginx, а только перечитку конфигов.

    в кронтабе для root, с проверкой корректности конфигов:
    15 0 0 0 0  nginx -t  &&  nginx -s reload > /dev/null 2>&1


    Ещё лучше сделать bash-скрипт, где в случае непрохождения теста конфигов, отправлять письмо с восклицаниями.
    Ответ написан
    Комментировать
  • Как один div спрятать, а другой вывести после нахождения на сайте более одной минуты?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬


    Только вместо 3000 (3 секунд) поставьте 6E4 (60000, минуту)
    Ответ написан
    Комментировать
  • Как с 3 номеров сделать 1, с меняющимся тегом span?

    В разметке указать только один телефон, в дата-атрибуте перечислить все телефоны.
    Скриптом разбирать номер на части и обновлять разметку:
    Ответ написан
    1 комментарий
  • Как отменить удаление элемента с помощью mutationobserver?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    В коллбэк передаётся ссылка на удалённый(-е) элемент(ы).

    Аргумент коллбэка – массив MutationRecord'ов. При единичном удалении там один элемент. У него есть свойство removedNodes — это NodeList удалённых элементов.

    spoiler
    (1) […]
    ​  0: MutationRecord
    ​​  addedNodes: NodeList []
    ​​  attributeName: null
    ​​  attributeNamespace: null
    ​​  nextSibling: #text "
      "
    ​​  oldValue: null
    ​​  previousSibling: #text "
      "
    ​​  removedNodes: NodeList(1)
    ​​​    0: <li id="to-delete">
    ​​​    length: 1
    ​​​    <prototype>: NodeListPrototype { item: item(), keys: keys(), values: values(), … }
    ​​  target: <ul id="someElement">
    ​​  type: "childList"
    ​​  <prototype>: MutationRecordPrototype { type: Getter, target: Getter, addedNodes: Getter, … }
      length: 1
    ​  <prototype>: Array []


    Можно тут же их попробовать вставить назад в родителя, хотя бы в конец:
    Ответ написан
    Комментировать
  • Как передать id элемента через переменную js?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Путаете id элемента и сам элемент.

    HTML:
    <div id="my-div">Привет!</div>

    JS:
    var id = "my-div"; // это id
    var el = document.getElementById(id); // элемент
    el.getBoundingClientRect() // должно работать
    Ответ написан
    1 комментарий
  • Как удалить фон без потери информации?

    Задача довольно частая, поэтому к ней есть множество решений и подходов. И специализированные инструменты в редакторах и плагины. Одной из трудных считается задача отделить волосы/шерсть от сложного фона. И тоже решается.

    Надо сделать хорошую маску – картинку в оттенках серого, где чем светлее пиксель, тем виднее будет исходная. Где пиксели черные – полная прозрачность.

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

    Рассмотрите каждый из каналов, R, G и B – где наиболее контрастно выглядит разница между объектом и фоном?
    В данном случае это в канале красного, R. Возьмём его за основу для будущей маски.

    Скопируйте его, и Уровнями поднимите контраст, глядя на гистограмму, чтобы от чёрного до белого были пиксели. Потом инвертируйте маску и примените к слою с исходной картинкой.
    результат
    5d5bb9c49e101149369921.png
    Ответ написан
    5 комментариев
  • Как сделать проверку что если хотя бы один чек бокс выбран?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    В обработчике проверять коллекцию чекбоксов до первого включенного и ставить класс родителю.

    По картине трудно посоветовать конкретнее. Лучше бы привели разметку.
    Ответ написан
    Комментировать
  • Ffmpeg как задать сразу несколько параметров?

    Склеивать видео – это отдельная команда, в любом случае.
    Если у вас входные файлы в одинаковом кодеке и формате, то их не нужно перекодировать, а можно сразу склеивать.

    p.s. «объединить в одну» можно записав все команды в один скриптовый файл: .bat или .sh, в зависимости от платформы.
    Ответ написан
    Комментировать
  • Как подсчитать числа в этом коде?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Надо понимать, что этот код делает. Он составляет все возможные комбинации из заданных чисел, длиной столько же цифр – и возвращает массив этих чисел. Вас интересует его длина.
    • Можно взять длину массива, который вернули.
    • Можно взять длину Nисходного массива и возвести её в степень себя: NN.
      Для трёх это будет 3 в кубе 3*3*3 = 27
    Ответ написан
    Комментировать
  • Как сделать цикл который генерирует числа из 1, 2, 3?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    const shred = arr => arr.reduce((p,c,i,a) => {
        const f = prefix => {
          for (let j=0; j<a.length; j++)
            if (prefix.length < a.length - 1) {
              f(prefix + a[j]);
            } else {
              p.push(+(prefix + a[j]));
            }
        }
        f(c.toString());
        return p;
      }, []);
      
      shred([1,2,3]);
    /*
    [111,112,113,121,122,123,131,132,133,211,212,213,221,222,223,231,232,233,311,312,313,321,322,323,331,332,333]
    */
    Ответ написан
    Комментировать
  • Каким образом сайт работает настолько быстро (без pjax и get запросов)?

    sergiks
    @sergiks Куратор тега Веб-разработка
    ♬♬
    очень даже загружаются GET-запросами два JS файла, содержащие по факту CSS и HTML:
    spoiler

    При переходе на страницу «О компании» - «Вакансии»:
    5d592b4c17c02072813708.png
    Ответ написан
  • Как можно выбрать главные числа?

    sergiks
    @sergiks Куратор тега Алгоритмы
    ♬♬
    Находить среднее и брать навыки, которые выше среднего = (сумма указанных процентов) / количество?
    Поскольку порядок тоже имеет значение, при равных процентах считать весомее более ранний навык.
    С количеством в выборке уже решать вручную: сколько взять навыков из 10 по 100% каждый.

    физика 50%, химия 49%, биология 48%, английский 10% -----> главные будут физика, химия, биология.
    (50+49+48+10)/4 = 39.25 – выше желаемые три: физика, химия, биология. ОК

    физика 50%, химия 9%, биология 8%, английский 7% -----> главным будет только физика.

    (50+9+8+7)/4 = 18.5, выше только физика, ОК

    физика 50%, химия 49%, биология 49%, английский 48% -----> главными будут физика и химия.
    (50+49+49+48)/4 = 49FAIL
    Тут не понятно, почему разорвать именно химию и биологию. Но если перед вычислением добавлять коэффициент за позицию [+3, +2, +1, +0], всё получается:
    (53+51+50+48)/4 = 50.5 рвёт точно как хотелось: физика и химия выше. OK

    физика 50%, химия 30%, биология 1%, английский 1% -----> главными будут физика и химия.

    (50+30+1+1)/4 = 20.6физика и химия FTW. OK

    физика 50%, химия 30%, биология 30%, английский 30% -----> главным буде только физика.
    (50+30+30+30)/4 = 35; выше 35 только физика. ОК
    Ответ написан
    Комментировать
  • Как подключить все js библиотеки в 1 файл?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    UglifyJS

    Установить (понадобится nodejs + npm):
    npm install uglify-js

    Собрать и сжать несколько библиотек в один файл:
    uglifyjs --compress -o result.js -- jquery.js  lib2.js  lib3.js

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

    sergiks
    @sergiks Куратор тега PHP
    ♬♬
    170 % 11 === 5; // true

    170 / 11 = 15,4545454545
    15 целых + остаток.
    11*15 = 165
    170 = 11 * 15 + 5
    Этот остаток 5 и получается оператором остатка от деления % (не путать с процентами)
    Ответ написан
    Комментировать
  • Как реализовать поставленную задачу?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Можно считать градиенты с соседними элементами, при этом следующий становится предыдущим:
    function countLocalMax(arr) {
        const last = arr.length;
        let prevGrad = 1;
        return arr.reduce((p,c,i,a)=>{
          const nextGrad = i === last ? -1 : a[i+1] - c;
          if (prevGrad >= 0 && nextGrad <= 0) p++;
          prevGrad = nextGrad;
          return p;
        }, 0);
      }
    
    countLocalMax([0,0,3,4,5,4,0,-1]); // 2

    Для нулевого элемента массива считаем "предыдущий" градиент положительным, для последнего – отрицательным.
    Элемент локальный максимум, если предыдущий градиент не отрицательный и следующий не положительный.
    Ответ написан
  • Где лучше взять VPS?

    Пользуюсь уже много лет DigitalOcean и всяко рекомендую. Надёжные, отличная поддержка, развиваются.
    По моей реф. ссылке получите на 30 дней $50 попробовать, погонять, убедиться. Без обязательств.
    Ответ написан
    3 комментария