Задать вопрос
Ответы пользователя по тегу JavaScript
  • Как при нажатии на ссылку скопировать её название?

    @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 а на сколько оно дальше убежало)
    Ответ написан
    Комментировать
  • Как можно сделать обработку запросов извне?

    @rPman
    чтобы передавать сообщения в обе стороны, есть следующие технологии:
    * websocket - client <-> server
    * webrtc - client <-> client напрямую
    Ответ написан
    Комментировать
  • Возможно ли узнать время, за которое запрос приходит на сервер?

    @rPman
    Логирование и синхронизация точного времени на сервере и клиенте.

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

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

    @rPman
    Правая кнопка - инспектор/исследовать, смотри

    в играх с высокой вероятностью это будет canvas, а это значит текст выводится без использования dom и чтобы его получить придется заниматься распознаванием
    Ответ написан
    4 комментария
  • Как в txt файле оставить только 2 строчки после определенного слова выше?

    @rPman
    * завести int status переменную, определяющую статус, что сейчас делаем, поиск подстроки (если значение 0) или вывод (если значение 1 или2, т.е. это количество выводимых строк))
    * читать файл построчно в цикле, пока он не закончится
    * для каждой строчки проверять искомую подстроку, если найдена - status =2 и continue
    * если status >0 то выводим строку
    * если status =2, выводим ': ' если status=1 то выводим '\n'
    * если status >0 уменшаем на 1
    Ответ написан
    Комментировать
  • Могут ли ошибки в консоли Хрома забить оперативную или постоянную память, если да, то как это предотвратить?

    @rPman
    само по себе сообщение об ошибке занимает мало времени и чтобы это стало заметно нужно действительно много
    но вот отладочная информация, когда в console.log выводится объемный объект и очень много - занимает прилично оперативной памяти (так как весь объект копируется и хранится в памяти чтобы в интерфейсе его можно было посмотреть) у меня был пример когда окно firefox работало больше суток и отладочная информация нагрузило так сильно оперативную память что был задействован своп файл и сам браузер дико тормозил, но очистка консоли тут же все исправило

    вызывай скриптом consloe.clear() типа такsetInterval(()=>console.clear(),3600*1000)для автоматической очистки консоли раз в час, этого будет более чем достаточно
    Ответ написан
    Комментировать
  • Ограничение работы 2 пользователей на одном сайте?

    @rPman
    направления решения задачи многопользовательского редактирования:

    - нулевое, самое злобное для клиентов, выдавать ошибку, при попытке сохранить документ, если его редактировали, обновлять форму и предлагать ввести все заново, реализуется полем 'last modified time', которое загружается на форму и отправляется с запросом на обновление, если сервер видит их разными - писать ошибку.

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

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

    - третье, наилучшее в современных реалиях, применять изменения и выводить их в тот же момент как они вносятся на форму, как документы google docs, видно в какой ячейке какой пользователь сейчас поставил курсор, можно даже подсвечивать цветами, с затуханием. Рекомендуется, как ни странно достаточно проста в реализации, если интерфейс client side javascript а не генерация html на сервере.

    Все три способа требуют оперативную информацию о наличии блокировок пользователями, что реализуется с помощью вебсокет
    Ответ написан
    Комментировать
  • Как можно ускорить парсинг json?

    @rPman
    897kb
    надо почти мегабайт скачать! я не верю что у тебя с твоим интернетом за 80миллисекунд это происходит, скорее все из кеша берется

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

    p.s. на c++ есть парсер simdjson, он в десять раз быстрее парсит, но делает он это не в память, а по лексемам, прямо в процессе анализа результата, там что то типа, получить следующую лексему, смотрим ее тип, имя и либо пропускаем (включая объхекты) либо рекурсивно работаем с объектом

    браузер так не умеет, в теории можно попробовать написать такой парсер на javascript но я не верю что это будет быстрее

    upd: https://www.npmjs.com/package/simdjson
    Ответ написан
    2 комментария
  • Как реализовать проверку и подгрузку файлов между серверами?

    @rPman
    Не советую изобретать свою систему, пользуйся готовым rsync, который может работать как по своему протоколу (рекомендуется, для этого на обоих сторонах запускается rsyncd) так и к примеру по ssh, так же штатно scp умеет копировать только изменившеися файлы по ssh, ничего дополнительно настраивать и устанавливать не надо.

    по теме, я пилил простенькую програмку, на сервере-источнике маленький php сервер, возвращающий список новых файлов (у меня было много серверов источников файлов, и один клиент, он запрашивал список с каждого, проверял наличие их локально и скачивал отсутствующие), а каталог с файлами расшарен как обычный каталог со статикой в веб сервере, файлы загружались с помощью wget (у него штатная поддержка докачки прерванных, но можно что-нибудь еще поискать)
    Ответ написан
    Комментировать
  • JS: Бесконечная загрузка контента без лагов страницы - какие есть библиотеки?

    @rPman
    это называется virtual scrolling
    погугли готовые решения есть, чаще заморочки с поддержкой одновременно pc/mobile

    по функционалу это очень простая библиотка, чтобы не лагало, нужно запрашивать данных больше чем выводится, т.е. окно данных в памяти должно быть больше раза в 3-5 чем то что выводится на экран, и при скроллинге запрашивать доп данные для этого виртуального окна в памяти.

    Совет, если человек скролит с меньшим интервалом времени или сразу следующую страницу, запрашивай у бакэнда большего размера окно чем обычно, так как это типичный паттерн проскролировать 'подальше'
    Ответ написан
    Комментировать
  • Как проверить ссылку RSS?

    @rPman
    если ссылку спрашивать у пользователя, то он сам дурак, если даст неверный тип контента

    с высокой вероятностью в ссылке будет слово rss (либо type=rss, так многие cms-ки экспортируют свои статьи туда либо .rss) но само собой никто ничего не гарантирует, никаких стандартов на это нет

    как правильно - запрашиваешь по ссылке заголовки, без контента, и смотришь Content-Type должен быть тип text/rss+xml или application/rss+xml, редко бывает text/xml или application/xml но тут дальше только по содержимому
    Ответ написан
    Комментировать