• Как отличить подключения через "приложения" и по url в NW.js?

    Aetae
    @Aetae
    Только с этим поосторожнее, а то была статья тут как вумные сервера-прокладки проблёскивали ip юзера не настоящий, а, если есть, получая его из хэдера X-Forwarded-For(который ставят прокси). Всё бы нормально, пока на сайт не зашёл чувак с X-Forwarded-For 127.0.0.1 и внезапно не попал в админку.:)
    Написано
  • Почему возникает ошибка Cannot read properties of null (reading 'hasOwnProperty')?

    Aetae
    @Aetae Куратор тега JavaScript
    mbhusty, ну значит твой код виноват. Где-то ты кладёшь dataLayer в vue. Если vue 2, то dataLayer автоматически при этом становится объетом vue, на изменения в котором ты где-то подписываешься и делаешь такую бяку. Или это делает какой-то плагин. Х.з. Без всего кода сложно сказать.
    Написано
  • Как правильно спроектировать сервис лицензирования?

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

    Вообще конечно киберпанк так и прёт, прям вижу класичексий DataCrash когда все дрм сервера просто сдохнут и человечество откатится на 50-100 лет назад тупо из-за невозможности ничего использовать.:)
    Написано
  • Как прописать условное форматирование для автоматического выделения ячеек в Google таблице в которых есть повторяющиеся элементы?

    Aetae
    @Aetae
    Ну на самом деле макрос сможет отличать ровно то, чему вы его научите.
    Те же имена и определённые цифры вытянуть не проблема с минимальными погрешностями. А потом можно и перелинковать их перекрёстными ссылками и на отдельную страничку по столбцам разложить. (но я этого делать, конечно же, не буду)

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

    Aetae
    @Aetae
    WbICHA, если код разный - то это уже не копирование.)

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

    P.S. Да, лично я в плане копирования кода весьма радикален: не могу вынести больше пары строк одинакового кода не обобщив, а любой boilerplate, особенно счищающийся стандартом, вызывает у меня припадки неконтролируемой ярости. Я знаю, что это не очень здоро́во, но что уж тут. :)
    Написано
  • Как переиспользовать компонент в модульной архитектуре?

    Aetae
    @Aetae
    Слишком мало информации. Где, что, на чём - ничего не ясно.
    В любом случае копирование кода - это плохо. По-хорошему надо просто вынести этот компонен "выше" и истользовать спокойно в обоих случаях.
    Нюансы начинаются если нет этого "выше". Тут к каждому случаю нужен персональный подход. Например, если это два совершенно разных приложения связанных только UI-библиотекой, а компонент слишком специфичен для этой библиотеки, то заводить отдельную либу только под компонент уже может получиться накладно и тогда можно копипастить пока так одно не перевесит другое.
    Написано
  • Как решить проблему с переходом между страницами при использовании кнопок сохранения в форме с AJAX?

    Aetae
    @Aetae Куратор тега JavaScript
    Проблема скорее всего на бэке. loction.reload перезагружает страницу(с бэка, в редких случаях из кэша), и, полагаю, с точки зрения бэка получается два(или 1 + сколько сделаешь reload) захода подряд на текущую страницу, а т.к. никакой дедупликации, судя по всему, не осуществляется, то и текущая и "предыдущая" страницы на сервере имеют адрес текущей.

    Вообще странно работать с навигацией со стороны бэка, это полностью клиентская сторона по идее.
    Написано
  • Как сделать JS desktop приложение как сайт Vue js?

    Aetae
    @Aetae Куратор тега JavaScript
    Неа, не нужен.
    Написано
  • Почему console.log(isNaN( )) выводит true, если под капотом пустая строка преобразовывается к 0?

    Aetae
    @Aetae Куратор тега JavaScript
    Проще всего тебе будет просто забыть об isNaN, он deprecated, работает по постулированому в спецификации языка, а не по логическому, набору правил и его использование в коде не рекомендуется.
    Есть современный Number.isNaN с гарантированным результатом(true толькоесли аргумент точно и конкретно NaN).
    Написано
  • Как проверить наличие nuxt во vue3?

    Aetae
    @Aetae Куратор тега Vue.js
    Владислав Лысков, ну м.б. он пилит какой-то библиотечный компонент, который может повести себя в nuxt окружении иначе.
    Написано
  • Почему не работает поиск по массиву из объектов?

    Aetae
    @Aetae Куратор тега JavaScript
    Александр Панков, что свой? Просто используй lodash с импортами и не парь мозг. Если очень хочется автоимпортов - такой "модуль" для nuxt пишется в 10 строк руками. Ну или можешь поставить prefix: false\'_'\<что угодно но не use> в конфиге модуля.
    Написано
  • Как подгрузить кусок HTML с последующим выполнением скриптов в нём?

    Aetae
    @Aetae Куратор тега JavaScript
    Павел, после div.innerHTML = ...; добавь:
    div.querySelectorAll('script').forEach((sourceScript) => {
        const script = document.createElement('script');
        for(const attribute of sourceScript.attributes)
            script.attributes.setNamedItem(attribute.cloneNode(true));
        script.innerHTML = sourceScript.innerHTML;
        sourceScript.parentNode.replaceChild(script, sourceScript);
    })


    Но да, это хреновая практика.
    Написано
  • Почему не работает поиск по массиву из объектов?

    Aetae
    @Aetae Куратор тега JavaScript
    Александр Панков, охренеть, 6к юзеров при том что модуль, абсолютно очевидно, делал долбоёб который вообще нихерна не понимает в vue(или, хотя бы, react).
    Префикс use зарезервирован за функциями которые работают с компонентом и должны вызываться только в секции setup(иначе работать не будут). Использование его не по назначению захламляет код и затрудняет его чтение адекватными людьми.
    Написано
  • Почему не работает поиск по массиву из объектов?

    Aetae
    @Aetae Куратор тега JavaScript
    Функция lodash называется findIndex, что за ересь useFindIndex - неизвестно.
    Написано
  • Почему не работает функция клика по resource id через adb?

    Aetae
    @Aetae Куратор тега JavaScript
    Раз не найден - значит не найден, duh.
    Смотрите, что у вас там в xmlDump и сравнивайте с тем, что ищет регулярка.

    Кстати, криво сделана регулярка - не экранируются спецсимволы в resourceId. В данном конкретном случае на результат оно влиять не должно, но на будущее стоит пофиксить, вот вам простая функция для этого:
    function escapeRegExp(string) {
      return String(string).replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); 
    }
    Написано
  • Как подменить файл звука на свой в HTML?

    Aetae
    @Aetae Куратор тега JavaScript
    Markella, как бонус можно ещё так вытянуть звук больше максимума:
    const source = document.querySelector('source[src="/msg.mp3"]')
    source.src = "data:audio/mpeg;base64,<и т.д. то что получено в сервисе data uri>";
    const audio = source.parentNode;
    audio.load();
    audio.volume = 1;
    
    const audioContext = new AudioContext();
    const gainNode = new GainNode(audioContext, { gain: 10 });
    
    audioContext
        .createMediaElementSource(audio)
        .connect(gainNode)
        .connect(audioContext.destination);

    Где gain - множитель.(правда больше 6 уже обычно не имеет особого смысла, т.к. врезается в железные возможности)
    Скорее всего это не понадобится, но на всякий случай.
    Написано
  • Как подменить файл звука на свой в HTML?

    Aetae
    @Aetae Куратор тега JavaScript
    Markella, да, извиняюсь, если меняешь source надо принудительно перезагрузить:
    const source = document.querySelector('source[src="/msg.mp3"]')
    source.src = "data:audio/mpeg;base64,<и т.д. то что получено в сервисе data uri>";
    source.parentNode.load();
    Написано
  • Как подменить файл звука на свой в HTML?

    Aetae
    @Aetae Куратор тега JavaScript
    Markella, достаточно поменять первый - проигрываться первый по порядку который поддерживает браузер.
    С файлом сложнее, он должен хоститься на каком-то сайте, однако можно закодировать его в одну строчку data uri.
    Код для замены простой: в консоли написать и нажать enter
    document.querySelector('source[src="/msg.mp3"]').src = "data:audio/mpeg;base64,<и т.д. то что получено в сервисе data uri>"


    Если вы принципиально не можете поставить расширение с поддержкой пользовательских скриптов, которое будет автоматически запускать этот код за вас(например tampermonkey), то можно обойтись классической технологией букмарклетов: создаёте закладку, вместо адреса в которой пишете:
    javascript:void(document.querySelector('source[src="/msg.mp3"]').src = "data:audio/mpeg;base64,<и т.д. то что получено в сервисе data uri>");
    и при нажатии на неё файл будет заменяться.
    Написано
  • Как подменить файл звука на свой в HTML?

    Aetae
    @Aetae Куратор тега JavaScript
    Markella, одноразово - просто инструментами разработчика, о которых вы узнали в предыдущем вопросе, заменить. Либо руками найти в Инспекторе и там заменить, либо написть простой скрипт для этого и запускать его в консоли.
    Если нужно конкретное решение - нужно больше конкретных деталей, а именно кусок кода где этот файл используется. От того как он используется - зависит способ того, как его менять.
    Написано
  • Как сгенерировать exception при неустановленном параметре в dataset?

    Aetae
    @Aetae Куратор тега JavaScript
    Роман Кофф, могу предположить, что такие варианты просто изначально не рассматривались при создании языка, т.к. в js не принято было кидать исключения на каждый чих. Исключения - только для исключительных случаев, иначе пусть "хоть как-то" молча попытается отработать.
    В последний десяток лет, конечно, язык начал строить из себя серьёзного, что можно видеть по исключениям того же BigInt, но с такими фундаментальными вещами уже ничего не поделать.:)
    Написано