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

    @rPman
    тебе нужно использовать штатный <input type=radio...
    Ответ написан
    Комментировать
  • JS. Как конвертировать данную строку в массив?

    @rPman
    Ответ написан
    Комментировать
  • Как спарсить котировки в Google Sheets?

    @rPman
    Потому что эта цифра формируется на javascript, там с помощью ajax делается что то типа (не факт что я верно угадал, тупо поиском в инспекторе браузера нашел)
    https://futsseapi.eastmoney.com/static/115_OI409_mx/11?callbackName=jQuery35104319374984631833_1697039773745&token=1101ffec61617c99be287c1bec3085ff&_=1697039773761

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

    Если отреверсишь логику, теоретически сможешь ее повторить на javascrpt в google docs
    Ответ написан
    Комментировать
  • Если ли библиотека блокировщик реклам?

    @rPman
    javascript веб сайта работает с пониженными правами доступа, ограниченными только своим доменом. К iframe 'с видео' доступа нет.

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

    @rPman
    Можно исключить историю в принципе сделав SPA (single page application) а переходы внутри приложения это изменения содержимого страницы (как вариант, страницы сайта это части этой единой страницы, но сокрытые стилями display:none, текущая часть сайта просто устанавливается видимой)

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

    Не надо так ломать пользовательский опыт, не делайте так. Многие при создании SPA подхода мучаются чтобы история все же была (через anchor навигацию url#id)
    Ответ написан
    Комментировать
  • Как заблокировать возможность делать скриншоты на моем сайте или хотя бы по нажатию на PrtScn возвращать серую картинку вместо изображение сайта?

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

    Поддерживается всеми браузерами (но не на всех платформах, особенности оборудования, OS и к примеру виртуализация), может быть отключено (тогда сайт работать не будет) и на сколько я знаю, взламывается.

    p.s. правильно тебе говорят, что если что то ты видишь глазами, значит ты это можешь сфотографировать, записать и проанализировать.

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

    @rPman
    Выгодная траектория, это значит тебе нужен критерий оценки выгоды, в зависимости от него и будет алгоритм.

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

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

    @rPman
    Дублируй, это не недостаток, а прямое следствие оптимизации
    Ответ написан
    Комментировать
  • Собственное поле для ввода на чистом JavaScript?

    @rPman
    Первый же запрос в гугл выдал
    Очевидно свой input потребует закодировать огромное количество ситуаций, выделение в т.ч. по дабл- и трипл-клику, вставка через буфер, работу с правосторонними шрифтами и вообще мультиязычная поддержка это ад (невидимые символы, меняющие поведение)
    Ответ написан
    Комментировать
  • Где достать словарь с городами и регионами на русском и английском языках?

    @rPman
    Первый же из гугла не подходит?
    Ответ написан
    Комментировать
  • Почему гаснет экран смартфона при просмотре видео?

    @rPman
    Если я верно понимаю ситуацию, некоторое время назад (год или два вроде бы) android обновили политику автоматического отключения экрана и меньше стало зависеть от браузера. Смотрите в настройках браузера, ищите настройки сна android (зависят от вендора)
    Ответ написан
    Комментировать
  • Как научить нейронку выигрывать в моей Phaser.js игре?

    @rPman
    Если RL для тебя сложно, используй менее эффективный но очень простой подход - генетический алгоритм.
    Это очень тупой и простой для реализации подход, ты реализуешь свою игру в виде метода (ты его всеравно должен бы сделать для RL), с помощью которого ты будешь тестировать своего бота:
    * независящего от реального времени (т.е. внутренний таймер есть но игра проходит максимально быстро в реальном времени без пауз)
    * фиксированным сидом для случайных событий (т.е. повторный запуск с теми же параметрами должен выдать тот же результат)
    * пропускающего вывод графики
    * на вход которого подается твой алгоритм управления (не важно чем он будет, главное чтобы он однозначно описывался какими то числами), т.е. управлением занимается метод который ты передашь в вызове
    * на выход этот метод выдавал бы давал оценку, на сколько хорошо выбранный алгоритм прошел игру (0 - умер, и плюс число за звезду)
    * добавляешь в этот метод лимит по внутреннему времени (т.е. чтобы - возвращало за невыполнение задания, в твоем случае это не собрал звезды)
    * можно привязать оценку ко времени, например разделить собранные звезды на затраченное время (добавь какой-нибудь коэффициент влияния времени на итог).

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

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

    Задача будет решена, но времени (вычислительных ресурсов) для этого может потребоваться очень много.

    Если интеллект твоего робота будет из двух сетей, то та что моторная можно обучить отдельно, другими алгоритмами, так как для нее легче сделать функцию ошибки (1/расстояние до цели например), это значительно сэкономит время. Так же можно вместо управляющей нейронки написать тупой код (например управляющая принимает решение, какие звезды собрать и когда уворачиваться от бомбы, просчитывая ее положение на основе известных тебе игровых алгоритмов)
    Ответ написан
  • Как правильно отрезать часть строки?

    @rPman
    тут два подхода

    Первый, считаем количество точек, до символа 'не точка', либо
    удалить начало строки до первого пробела
    считаем количество символов до пробела.
    Затем простым substr вырезаем строку с найденной позиции.

    Второй способ, написать регулярное выражение (промышленный стандарт по работе со строками, просто но часто избыточно по ресурсам) которое выделит нужную строчку, и посмотреть ее размер или сразу вызвать что то типа string.replace(/регулярное выражение/,'')

    в регулярном выражении символ начала строки - ^, повторение символа + после этого символа, точка и плюс в регулярных выражениях зарезервирована, значит нужно добавить \ перед ними, типа так: /^\+\.+/

    Если количество точек может быть нулевым (т.е. плюс и сразу пробел) значит вместо + использовать *
    Ответ написан
    Комментировать
  • Как отслеживать изменение локального файла в директории через js?

    @rPman
    Сама идея приложения у тебя максимально неправильная но да ладно.

    В тегах у тебя php, на нем обычно пишут бакэнд - серверную часть, вот и отслеживай изменения в файле через него. Т.е. к примеру на javascript из браузера по таймеру (setInterval) раз в 1-10 секунд делаешь запрос на сервер вида - выдай мне изменения в файле начиная с такой то даты (например новые строки) или пустой ответ. А на php код должен проверять дату последнего изменения в файле метод filemtime (осторожно, результаты кешируются, поэтому перед проверкой сбрасывай кеш) и сравнивать с датой, которую запросил браузер.

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

    @rPman
    тебе так сложно нажать правую кнопку в инспекторе на нужной ветке и выбрать copy as css selector?
    не всегда оно красивое но браузер старается
    #processor > option:nth-child(1)

    по теме, воспользуйся css selector по значению атрибута
    #processor > option[value="6398"]

    p.s. тебе точно нужно выбирать по значению цены? может правильнее использовать querySelectorAll и перебирать каждое значение, проверять по условию и действовать?
    Ответ написан
    Комментировать
  • Не получается использовать метод toFixed() в javascript на значение массива, как это сделать?

    @rPman
    там строка а не число, преобразуй ее в число с помощью parseFloat сначала (и по уму проверить на ошибки)
    Ответ написан
    1 комментарий
  • Почему не срабатывают скрипты после XMLHttpRequest запроса?

    @rPman
    console.log(xhr.status) перед if-ом, проверь, возможно у тебя твой бакэнд возвращает не 200
    а еще в отладочной консоли и networks браузера смотри, если ошибки там про это будет написано
    Ответ написан
    1 комментарий
  • Как из запускаемого в браузере локального HTML с JS создать файл в локальной же файловой системе?

    @rPman
    Есть косвенное решение - разрешить в браузере сохранять загрузки автоматически без запроса места сохранения (на сколько я знаю это поведение по умолчанию) и из скрипта сформировать файл через File, Blob или MediaSource, создать для него ссылку с помощью createObjectURL (на сколько я помню это будет data uri строчка) и кликнуть по ней.

    var file=new Blob([JSON.stringify(obj, null, 2)], {  type: "application/json"});
    var url=URL.createObjectURL(file);
    var a = document.getElementById("a"); // где то на странице невидимая ссылка
    a.href = URL.createObjectURL(file);
    a.download = 'myfilename.json';


    Как вариант строчку сделать самому и отправить его прямо в location, что то типа location.href='data:text/plain;charset=utf-8,test').

    Твое python приложение пусть ожидает файл в каталоге для загрузок, указанном в настройках браузера. Будь готов, что браузер добавить ' (xxx)' к имени файла, если такой же там уже есть.

    Я примерно таким образом добавленным через консоль (или расширением типа greasemonkey) скриптом кликал и собирал данные в веб приложении, после отправлял их на сохранение в виде csv-шника, а затем собрал кучу сохраненных файлов уже десктопным приложением.
    Ответ написан
    Комментировать
  • Как запустить чужой проект веб-приложения с GitHub на своем компьютере?

    @rPman
    При открытии html локально javascript отключается (или лимитируется, точно не разбирался), сделано это чтобы открывая злонамеренный html не получить проблемы.

    Достаточно выложить файлы этого проекта в любой веб север, хоть однострочник от php (php -S 127.0.0.1:8080) и открыть этот адрес в браузере - все работает
    Ответ написан
    Комментировать