• Почему Array.forEach не видит первый аргумент?

    alexey-m-ukolov
    @alexey-m-ukolov Куратор тега JavaScript
    Никаких ошибок, приведённый код прекрасно работает:
    5a9d27e1e82c0878806808.png

    Логика, правда, страдает - строка if (result) return; бессмысленна - функция в любом случае будет прервана. А result, скорее всего, не должен перезаписываться когда строка не соответствует регулярке (в результате на строки 'Ярослав' и 'Иван Ярославович' функция возвращает true, а на 'Ярослав Иванович' false).

    Вообще, весь код можно сократить до такого:
    function regExSearch(searchString, name) {
        var re = new RegExp("^" + searchString);
        var words = name.toLowerCase().split(' ');
        return !!words.find((item) => re.test(item));
    }


    Или даже такого (зависит от того, насколько старые браузеры в поддержке):
    function regExSearch(searchString, name) {
        var words = name.toLowerCase().split(' ');
        return !!words.find((item) => item.startsWith(searchString));
    }
    Ответ написан
    2 комментария
  • Как продлить по высоте второй блок?

    mr_dev1l
    @mr_dev1l
    Технический верстальщик
    5 комментариев
  • Как поднять и базово защитить корпоративную сеть?

    Konstantin18ko
    @Konstantin18ko
    Стоматолог
    Поднимай VPN. Доступ к ресурсу только с адресов 192.168.*.* или 10.10.*.* то есть с локальной сети.
    Весь внешний трафик только через VPN туннель.
    Весь внутренний трафик по локальной сети, без туннелей.
    Ответ написан
    2 комментария
  • Как не стать тупым в общении, профессионально занимаясь программированием?

    nki
    @nki
    bezkart.ru готовая система лояльности
    Есть ли у вас подобные проблемы и как вы с ними боретесь?

    Таких проблем нет. Вы работаете 24/7? Если нет, то у вас масса времени на социализацию. Найдите занятие не связанное с программированием и подразумевающим социализацию. Хороший вариант - заняться каким-либо спортом, лучше командным. Например, я занимаюсь бегом по пересеченной местности. Постоянно тренировки, выезды с командой на различные соревнования и пр. Сами не заметите, как станете более комуникабельным человеком.
    Просто не заморачивайтесь на работе, живите яркой жизнью.
    Ответ написан
  • Как не стать тупым в общении, профессионально занимаясь программированием?

    @evgeniy_lm
    Человек профессионально занимающийся программированием не может быть тупым по определению. В то же время многие тупые говнокодеры мнят себя профессионалами в программировании
    Ответ написан
    4 комментария
  • Как не стать тупым в общении, профессионально занимаясь программированием?

    BBmike
    @BBmike
    Автор, иди продавцом на рынок или кассиром в макдак. Там одни экстраверты.
    остальные профессии в основном как раз про то, как человек сидит и делает свою работу.
    Ответ написан
    Комментировать
  • Как сделать такую scroll-анимацию на JS?

    Vlad_IT
    @Vlad_IT Куратор тега CSS
    Front-end разработчик
    Там просто изменение transform: rotate3d и rotate в зависимости от window.scrollY Вешаете на событие скролла, высчитываете нужные значения, один из множителей будет позицией скролла.
    У них же на сайте используется либа skrollr
    Ответ написан
    1 комментарий
  • JavaScript: почему не срабатывает функция?

    Rema1ns
    @Rema1ns
    и так сойдет
    Если вы бы вывели в консоль
    console.log(txt.style.backgroundColor);
    То увидели бы что возвращается цвет не так как вы его задали.
    rgb(255, 240, 245)

    Поэтому ваше сравнение не работает
    Ответ написан
    Комментировать
  • Vue или Jquery?

    @deliro
    На Vue можно сделать всё, что можно сделать на jQ.
    На jQ можно сделать всё, что можно сделать на Vue, но сложнее.
    На чистом JS можно сделать всё, в том числе Vue и jQ (sic!)

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

    Также, конечно, были проекты, где нужно было показать слайдеры, при определённых действиях обновить DOM, перехватить пару сабмитов форм, но в целом это просто HTML. Там Vue использовать иррационально и jQ подходит отлично.

    Есть даже проекты, в которых jQ и Vue отлично уживаются вместе. Почти везде jQ, а на некоторых сложных страницах, где много связей, аяксов и перерендера DOMа стоит Vue и экономит гигантское количество кода, разметки и моих нервов.

    Вот только чего не стоит делать — так это использовать jQ в качестве HTTP клиента для Vue. Я имею ввиду, что есть куда более легковесные и заточенные под это axios'ы и fetch'и.
    Ответ написан
    1 комментарий
  • Vue или Jquery?

    vicodin
    @vicodin
    Имею некоторый опыт
    Изучать javascript.
    А потом неделю на jquery, неделю на vue, знания и те и те пригодятся и не будут взаимозамещаемыми. Заодно и поймете на каких проектах лучше использовать jq, на каких вью
    Ответ написан
    Комментировать
  • Как правильно чистить память в c++?

    @res2001
    Developer, ex-admin
    Ошибка вылетает только при компиляции в Debug, потому что в этом режиме, скорее всего, в код включаются проверки целостности кучи. Просто в release целостность кучи не проверяется, но это не значит, что ошибки нет.

    Ошибка тут:
    for (int i = 0; i <= deg; i++) newdata[i] = data[i];
    Вместо deg нужно использовать maxdeg, имхо.

    Кроме того вы не проверяете значение deg и maxdeg до выделения памяти. Что если они содержат значения <= 0?

    Возможно, есть и другие места с присваиванием массиву data и переменной deg. Нужно искать выход за границу массива при присваивании элементам массива из-за чего повреждается куча.
    Так же настораживает new int[deg +1] и операторы >= и <= в условиях циклов обхода массива, это потенциальные места выхода за границу. Возможно, если перейти от deg к количеству элементов в массиве, то код упростится (уберете +1 при выделении и = в условии циклов) и будет легче найти ошибку.

    PS: в качестве небольшой оптимизации: для обнуления массива можно использовать функцию memset, для копирования массивов - memcpy.
    Ответ написан
    1 комментарий
  • Использование Api сайтом, нужно ли?

    rockon404
    @rockon404 Куратор тега React
    Frontend Developer
    Почему нельзя, просто, выделить common часть для обоих модулей?
    А в модель поста можно прописать метод который будет доставать и мапить результаты.

    Тогда у вас будет примерно такой код в rest:
    router.get('/', routeCache.cacheSeconds(20), async (req, res) => {
        const posts = await models.Post.getPostsList({ limit: 10 });
    
        res.json(posts);
    });


    и такой для сайта:
    router.get('/', async (req, res) => {
        const posts = await models.Post.getPostsList({ limit: 10 });
    
        res.render('index', { posts_list: posts });
    });


    Все просто и никаких костылей.
    Обращения сервера сайта к rest это лишний код и лишние операции.

    Метод res.json() сам добавляет к ответу заголовок Content-Type со значением 'application/json' если он не добавлен до этого.
    Ответ написан
    Комментировать
  • Приведенный мною код - одно и то же? Или один работет быстрее / эффективнее, а другой - нет?

    rockon404
    @rockon404
    Frontend Developer
    Да нет особой разницы. Накидал бенчмарк для трех вариантов делегирования:

    p0:
    $('.wrapper').on('click', '.btn', function() { 
      //handler 
    });


    p1:
    $('.wrapper').on('click', function(e) {
      if ($(e.target).hasClass('btn')) {
        //handler 
      }
    });


    p2:
    document.querySelector('.wrapper').addEventListener('click', function(e) {
      if(e.target && e.target.classList.contains('btn')) {
         //handler 
      }
    });


    Результат для каждого это доли от одной тысячной секунды.

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

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

    Так же если у кнопки есть дочерние элементы, то тут лучше использовать вариант p0 , так как он определяет целевой элемент как e.curentTarget, дочерний элемент клика как e.target и делегата на котором будет слушать событие как e.delegateTarget и сработает точно про клику по целевому элементу или его детям. В случаях p1 и p2 клик по дочернему элементу пройдет мимо условий, так как e.target будет дочерним элементом, а не целевым.

    Вот, что точно делать не надо, так это вешать без надобности слушатели на document. Делегировать события надо, по возможности, как можно ближе к целевому элементу. Если вы добавляете кнопки динамически в определенный контейнер, то вешайте обработчик события на него, так слушатель будет срабатывать только по клику внутри контейнера. В вашем же случае он будет срабатывать при каждом клике на любом элементе страницы, создавая тем самым дополнительную нагрузку на браузер.
    Ответ написан
    4 комментария
  • Приведенный мною код - одно и то же? Или один работет быстрее / эффективнее, а другой - нет?

    Exploding
    @Exploding
    wtf?
    Гггг))) Как бы с первого взгляда и одно и то же, но не совсем.
    Если первый вариант юзать на практике - далеко не всегда ваш ".button" будет совпадать с тем, что находится в таргете. Например на кнопке иконка/рисунок/etc. Поэтому вам придется дописывать специализированный костылеподобный изворот типа:
    if ($(e.target).closest('.button').length){
    	//....
    	e.stopPropagation();
    }

    что само по себе уже не совсем тоже самое, как предпогалолась в вопросе.
    К тому же, не будет возможности использовать .trigger() для .button
    Ну и не известно сколько еще потом по вылазит глюков, требующих, чтоб и их подперли чем-то...
    В итоге получится явно не быстрее и не стабильней чем в либе. Там как ни как сидят, почесывая башни изо дня в день, думая как еще оптимизировать и стабилизировать работу методов. Версий то вон уже сколько вышло.

    UPD
    Просто когда жму Event Listeners в chrome - там у каждого элемента оочень много listener'ов

    Во втором варианте слушатель вешается не на кнопку, а на документ. Видимо у вас просто установлен чекбокс на "Ancestors".

    Ну а если вам взбредет в голову все таки писать свою реализацию делегирования, то в лучшем случае, как мне кажется, вы придёте к оригинальной реализации метода jq.
    Ответ написан
    Комментировать
  • Почему в ОАЭ недоступны ru домены?

    webinar
    @webinar
    Учим yii: https://youtu.be/-WRMlGHLgRg
    Заказчики жалуются что не открывается наш сайт

    Причин почему не открывается множество. Почему Вы решили, что проблема на уровне страны и со всеми ru доменами? Что они видят вместо сайта?
    Насколько я знаю там блокируют ресурсы не по доменной зоне, а по контенту. И чаще определяют качество сайта "пальцем в небо". Возможно у Вас реклама на сайте, мат или оскорбительные выражения. ХЗ. Если это вопрос важный, то надо найти их орган, который блокирует отправить письмо и выяснить причину. А пока будете ждать ответа просто сделать зеркало в другой доменной зоне com или даже ae.
    Ответ написан
    2 комментария
  • Почему в ОАЭ недоступны ru домены?

    Jump
    @Jump
    Системный администратор со стажем.
    Причин может быть множество.
    Для начала нужно выяснить что именно недоступно, может там просто недоступны IP адреса на которых висят домены, а не сами домены. Или может заблокирован какой-то конкретный домен.
    А уж потом можно думать как исправить ситуацию.

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

    vicodin
    @vicodin
    Имею некоторый опыт
    На странице не должно быть несколько элементов с одинаковым id!

    Используйте классы и https://api.jquery.com/parent/, https://api.jquery.com/find/ чтобы реализовать, то что вы задумали.
    Ответ написан
    3 комментария