Ответы пользователя по тегу JavaScript
  • Как сделать так, чтобы страница держалась в открытом виде многое время?

    @rPman
    у тебя 2 пути

    простой и дорогой, нужно запустить 100 браузеров (в каждом свой профиль со своими настройками прокси)

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

    p.s. скорее всего не получится где то сэкономить или упростить, эти два пути не только являются граничными но и единственно рабочими
    Ответ написан
  • Как оптимизировать загрузку видео autoplay?

    @rPman
    При запросе видео по указанным ссылкам, есть примерно полсекундная задержка, затем идет загрузка (ростелеком 1.5мб/с)
    если зайти на сайт, примерно 6 секунд идет загрузка, потом появляется анимация loading.. еще через секунд 5 уже появляется анимация и запускается видео (на запуск видео уходит как раз эта секунда его загрузки), обновление страницы загружает сайт меньше чем за секунду (это в основном анимация 'раскрытия окна')

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

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

    p.p.s. как же грустно наблюдать современный вебдев, сам я от него далек но знаю каким он был 10 лет назад, это удручающее зрелище
    Ответ написан
    Комментировать
  • Как измерить сколько памяти занимает html элемент и объект созданный через new?

    @rPman
    провести эксперимент не вариант что ли?

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

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

    создание нового dom элемента (а точнее изменение чего либо что меняет положение и размеры элементов на экране) на порядок более медленное чем изменение его содержимого или цвета

    p.s. а еще есть самостоятельное рисование на canvas, плюс webgl, позволяют отрисовывать очень сложные интерфейсы
    p.p.s. еще есть svg но он медленнее
    Ответ написан
    5 комментариев
  • Как дерево представить в видемассива?

    @rPman
    в чем вопрос если ответ в тегах есть? рекурсия
    вон id даже готовые, содержат идентификатор предка

    тупо пробегаешь по всем ветвям дерева, добавляя в результативный массив идентификаторы
    Ответ написан
    Комментировать
  • Как общаться между вкладками браузера js?

    @rPman
    в похожей ситуации я реализовывал семафор следующим способом
    if(localstorage['имя_семафора']++>1)
    { // значит этот семафор уже кто то занял,
      localstorage['имя_семафора']--;
      //  ждем некоторое время и повторяем попытку
    }  else
    { // никто семафор не занял можно работать
      ...
      // по окончанию работы семафор надо освободить
      localstorage['имя_семафора']--;
    }
    смысл в том что localstorage[]++ это атомарная операция (вот в этом месте я скорее всего не прав), а благодаря тому что единственная опасная операция, которая могла бы вклиниться между работай с localstorage и if - это --, и она проихойдет когда семафор и так должен освободиться, т.е. проблем это не создаст.

    p.s. почему говорю семафор а не мьютекс, потому что можно сравнивать не только с 1 но и большим числом - это определит, сколько одновременно можно ресурс занимать
    p.p.s. в интернете гуляет реализацию мьютекс на javascrit как раз на localstorage но она какая то переусложненная и я не понимаю зачем
    если кто то по умнее, объясните пожалуйста
    Ответ написан
    Комментировать
  • Как использовать javascript для junior backend разработчика на php?

    @rPman
    it это наиболее динамичный (быстро развивающийся и меняющийся) 'рынок'

    если ты хотя бы на пару тройку лет перестанешь изучать (хотя бы просто интересоваться) чему то новому, ты выпадаешь из реальности и начинаешь отставать, 'Нужно бежать со всех ног, чтобы только оставаться на месте, а чтобы куда-то попасть, надо бежать как минимум вдвое быстрее' (c)...

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

    мой совет, пока ты junior - изучай все до чего дотягиваешься, считай тебе дана возможность повысить свой скил за счет работодателя, как бы некрасиво это не звучало.
    Ответ написан
    Комментировать
  • Как взять содержание атрибута и вставить в другой атрибут?

    @rPman
    что значит .src и .content? таких полей у NodeElement нет

    чтобы установить атрибут, нужно использовать .setAttribute('content,value), а чтобы получить .getAttribute(''src'')
    Ответ написан
    2 комментария
  • Почему при POST Запросе я получаю статус код 500?

    @rPman
    ENOENT - файл не найден

    win32 error codes (правда они положительные а у тебя со знаком - почему то):
    PEERDIST_ERROR_ALREADY_EXISTS
    4058 (0xFDA)
    An element already exists and was not replaced.

    непонятно какой код у тебя выводит эту ошибку поэтому гадать дальше не интересно
    Ответ написан
  • Объясните, как работает эта функция?

    @rPman
    функция считает произведение всех чисел в массиве следующим образом - вызываем функцию с массивом в параметрах и номером элемента, с которого нужно начать умножение (считает с права на лево, т.е. уменьшает номер), для этого функция вызывает сама себя рекурсивно но с номером на 1 меньше и умножает результат на arr[n-1], стоит условие если номер 0 или меньше то вернуть 1, таким образом рекурсия прекратится когда закончится массив

    так как в коде стоит arr[n-1] а не arr[n], а индексы в массивах в javascript начинаются с 0, значит если нужно посчитать произведение всех элементов массива, то нужно указать в параметрах n = количество элементов (т.е. на 1 больше номера последнего элемента)
    Ответ написан
    Комментировать
  • Как сменить значение value в DOM?

    @rPman
    разный тип инпута свой метод
    смотри .val(...) для text
    или .prop('checked',true/false)) для input/radio
    Ответ написан
    Комментировать
  • Как поменять объект в HTML при помощи JS DOM?

    @rPman
    Тебе нужно именно подменить или достаточно чтобы их видно было попеременно?

    На странице нужно создать два эелемента и P и TEXTAREA и по нажатию кнопок заполнять их содержимым и попеременно менять им стиль display на none и inline (или block в общем смотри по своим требованиям к отображению), скрывая и показывая только нужный элемент
    Ответ написан
  • Как при нажатии на ссылку скопировать её название?

    @rPman
    navigator.clipboard.writeText
    текущий элемент получай через Event.currentTarget
    Ответ написан
    Комментировать
  • Как отобразить индикатор загрузки PWA-приложения?

    @rPman
    статистику можно самостоятельно собрать, по логам на сервере видно когда приложение начало загружаться, а в момент запуска на клиенте приложение может сообщить время серверу когда этот процесс завершился (хотя не обязательно).

    Собираешь статистику по устройствам, подсетям, трафику... все видно будет в логах сервера.

    Затем начинаешь искать зависимости, например время загрузки по тому с какой скоростью и сколько компонент было загружено в первые 2-3 секунды, чем больше уу тебя будет экспериментальных данных, тем точнее будет предсказание.
    Ответ написан
  • Как принимать оплату в крипте с помощью coinbase?

    @rPman
    Прием оплаты в криптовалюте совершенно не требует ни coinbase, ни регистраций, ни KYC,... ничего
    Это основная и главная идея криптовалют - независимость ни от кого, все что от тебя требуется это софт - криптовалютный кошелек или библиотека с функционалом кошелька.

    По теме, если прямо так хочется coinbase (на nodejs а не typescript), создай прослойку в виде сервиса (ты ее так или иначе сделаешь), да хоть http, которая будет заниматься исключительно монетными делами

    p.s. у библиотеки ccxt есть поддержка типов typescript
    Ответ написан
    Комментировать
  • Как открыть приложение из браузера?

    @rPman
    Приложение локально должно зарегистрировать протокол (либо вручную пользователь в браузере), выглядит это примерно так tg://параметры

    в браузере достаточно чтобы ссылка имела этот вид
    Ответ написан
    Комментировать
  • Какой из текстовых редакторов Linux умеет работать по FTP?

    @rPman
    докину варианты, в linux есть проект fuse, позволяет монтировать файловые системы, описываемые простой библиотекой, работающей как обычное приложение в userspace, на основе его сделана поддержка всяких экзотических ситуаций, в т.ч. работа по ftp - ftpfs (идет штатно с любым линукс), так же есть sshfs для доступа по ssh, avfs для архивов (сюда же fuse-zip и archivemount) или экзотический winregfs для чтения файлов реестра windows как файлы и т.п. десятки библиотек идут по дефолту в репозитории.

    монтируешь в каталог без root и пользуешься как локальными файлами из любых программ
    Ответ написан
    4 комментария
  • Как просматривать в браузере файлы doc, docx, xls, xlsx, ppt?

    @rPman
    мог бы хоть чуть чуть погуглить
    (это комунити версия, есть платная с большим функционалом)
    https://github.com/sheetjs/sheetjs
    https://github.com/SheetJS/js-word
    https://github.com/SheetJS/js-ppt
    Ответ написан
    Комментировать
  • Как сделать cекундомер без setInterval и setTimeout?

    @rPman
    Можно через настройку обновления страницы <meta http-equiv="refresh" content="1">в каком нибудь фрейме, где на onload вызывается дочерний метод, но это садамаза.
    НЕ НАДО ТАК ДЕЛАТЬ
    ----------------------

    setInterval и setTimer самый правильные методы, только интервал в них нужно ставить не константное значение, а вычислять исходя из разницы ожидаемого времени и текущего (если оно больше нужного, секунд прибавлять не 1 а на сколько оно дальше убежало)
    Ответ написан
    Комментировать