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

    @rPman
    Если параметры задают вероятность дискретно (на картинке кстати у вас не дискретно а сложные нелинейные зависимости, т.е. 1 встречается почти в 50 раз реже 10, смею предположить что вам ТАК не надо) на интервалах, типа от [0-10) - 50 то решайте проблему в лоб, сначала выбирайте интервал в соответствии с вероятностями (если задаете количественно, то это сумма заданых значений - максимальное значение, а интервал значения rand - соответствующее значение для суммы до этого интервала и с ним, после выбора интервала просто делаете повторный rand так как в пределах интервала вам нужно равномерное.
    Ответ написан
  • Как правильно вырезать данные html из переменной?

    @rPman
    apiReplay= $('#song'+id).text();
    Ответ написан
    Комментировать
  • Визуальное программирование на js. Куда копать?

    @rPman
    Готовое, например https://github.com/google/blockly

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

    p.s. в вашем случае 99% работы - интерфейс пользователя. Хранить можно уже готовый код, на клиенте парсить заново, визуальные параметры (положение блоков на экране) хранить рядом в коментариях
    Ответ написан
    4 комментария
  • Как скачать с этого сайта файл https://abc.vvsu.ru/book/2145181393/index.shtml?

    @rPman
    Никуда оно не ссылается, Том 2.pdf - это имя файла из которого было получено содержимое этой страницы.
    Страницы - набор картинок
    скрипт там примитивный, на scroldown делает запрос
    https://abc.vvsu.ru/book/2145181393/file3
    где 3 - номер страницы
    возвращает html текст

    вы можете запрашивать их чем угодно и объединять простой конкатенацией, полученный документ html так же необходимо догрузить (там в основном картинки) либо программно либо натравить на него curl с ключом -p
    Ответ написан
    Комментировать
  • Как реализовать вывод результата расчета из фрейма?

    @rPman
    Если вы говорите про немодифицированные браузеры без плагинов то доступ к данным iframe возможен только в пределах того же домена (отдельный вопрос про поддомены, скорее всего можно) с единым типом подключения (http/https). Если это так то простой скрипт
    window.frames['myIFrame'].document.getElementById('myIFrameElemId')
    позволит анализировать элементы во фрейме (например по таймеру) и даже взаимодействовать с ними (например симулировать клики и заполнять поля значениями).

    Иначе это запрещено политиками браузеров (иначе это был бы ад с вопросами безопасности, ведь можно было бы открыть ваш вконтактик/банковский сайт во фрейме и делать там что хочешь).

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

    p.s. а подключить скрипт не во фрейме а на своей странице не получится?
    Ответ написан
    1 комментарий
  • Как обойти JS скрипт, мешающий спарсить страницу?

    @rPman
    Смиритесь, пол интернета уже javascript based.

    Загружать страницы headless браузерами, компоненты браузера есть по до все известные языки програмирования и платформы, основанные либо на webkit (например у java webengine) либо на основе firefox (mono webbrowser) либо iexplore (.net - webbrowser).
    p.s. php - https://github.com/chrome-php/headless-chromium-php

    Страницу получать либо прямо из языка програмирования, запрашивая webengine.document.innerHTML или делать скрин картинки, либо инжектить javascript на страницу и работать с ней как вам заблагорассудится, в т.ч. эмулировать нажатие кнопок и вообще пользователя.
    Ответ написан
    3 комментария
  • Как правильно спарсить HTML, получив размеры элементов?

    @rPman
    рекурсивно пробегаете по всем элементам на странице (начиная с document, первый потомок node.firstChild перебираете nextSibiling), положение ноды на экране берете getBoundingClientRect() и если width или height равны нулю то это невидимый объект на экране.

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

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

    include это частный случай шаблонизатора. Сами шаблонизаторы очень простые, фактически можно без каких либо библиотек просто использовать $('#replace_element_id').innerHTML='html text string' а саму html брать тут же из документа, разместив его например в скрытых div или как рекомендуют <script type="text/html">....</script> (будьте осторожны со скриптами внутри и валидностью верстки)

    Эта стратегия называется single page app когда абсолютно все необходимое размещено в одной странице, статике, которая загружается однократно и кешируется на клиентской стороне. Страницы веб приложения и их параметры разделяются с помощью anchor (index.html#page/arguments/etc), в этом случае будет корректна работать история браузера, разбираются они javascript простым анализом url. Никаких библиотек для этого не требуется, это стандартная фича в любом браузере.

    Если же вам нужны нестатичные данные, они загружаются с вашего веб-сервера в виде json файлов (такие файлы легко разобрать в javascript с помощью JSON.parse(text) с помощью ajax (или XMLHttpRequest если вы не хотите подключать библиотеки)
    Ответ написан
    Комментировать
  • Как получить цвет ссылки, который грузиться с стороннего сервиса?

    @rPman
    Вы явно где то ошиблись, не важно, как dom строится, с помощь javascript или загружается прямо из файла, javascript должен иметь к самой его последней версии.

    Исключение, доступ к iframe, со стороннего домена.
    Ответ написан
    Комментировать
  • Сайт не корректно отображается на ноутбуке, как быть?

    @rPman
    Наверняка - корявые плагины в браузере у заказчика, к сожалению это наша реальность и с этим ничего не поделаешь. Попробуйте для отладки сохранить на сервере содержимое document.innerHTML и сравните с вашим.
    Ответ написан
    Комментировать
  • Как найти координаты белых областей на картинке через JS?

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

    По завершению у вас метод вернет список областей, являющихся белыми.

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

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

    @rPman
    ключевые слова:
    javascript
    ajax
    websocket

    p.s. ладно вы и сами это поняли. Вы должны формировать страницу не на серверной стороне в php, а на клиентской, в javascript на onload (фреймворков шаблонизаторов пруд пруди, но никто не мешает вам делать все самим), и опрашивая либо по таймеру сервер (плохая практика) либо используя вебсокеты, ожидать от сервера данных.
    Ответ написан
  • Как передать управление аккаунтом телеграм программе?

    @rPman
    Какими инструментами, приложениями или библиотеками можно воспользоваться, чтобы оперативно отслеживать новые сообщения на публичных каналах telegram?
    там решение https://github.com/TehDmitry/tg-cli

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

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

    p.s. очень грустно будет жить нам в будущем, все приложение в вебе, корявее некуда.
    Ответ написан
    2 комментария
  • Какие хитрости есть при работе с большим количеством данных в js?

    @rPman
    Если подгрузка на лету не подходит, используйте шаблоны, работайте с DOM элементами как с текстом везде где это возможно, так как быстрее чем со строками работать в принципе не возможно.

    В вашем случае можно вставлять сразу целой строчкой (тег и содержимое tr) или даже подготовить всю таблицу в виде строки а потом вставить ее просто поместив ее в innerHTML нужного div.
    Ответ написан
    Комментировать
  • Знаете ли вы решения для peer-to-peer тоннелей через Websocket?

    @rPman
    наверное самый легкий вебсервер и клиент к сокетам, идеален для IoT:
    https://github.com/jeremyhahn/cwebsocket

    вообще то их много, гуглить websocket client c (или arm или iot)

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

    @rPman
    Шаблон должен иметь описание требуемых изменений в базе данных.

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

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

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

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

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

    @rPman
    Только если оба сайта подконтрольны вам, те.. вы можете добавлять туда свой код!

    Если без заморочек - через свой сторонний сервис, GET HTTP запросами, кодируя нужные вам данные в параметрах (до 64кб после кодирования).
    Оба сайта должны делать запросы к нему с пометкой, запрос данных или получение.

    К сожалению, если у вас https, вас сервис тоже должен использовать https.
    Ответ написан
    Комментировать
  • Какие есть библиотеки (скрипты) для автозаполнения документов?

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

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

    Я писал подобное на java, совсем давно были эксперименты на mono (c#), там используется основанный на firefox движок, работает неплохо и в безголовном варианте на любой дешевой vps-ке.

    Если нет необходимости скрывать интерфейс (запуск в виде службы), можно использовать какие-либо плагины к браузеру (тот же tempermonkey/greasemonkey) и реализовать все полностью на javascript.
    Ответ написан
    Комментировать