elleremo, спасибо за похвалу. Не поймите меня неверно, моя симуляция не претендует на роль ответа, просто самому было интересно. Насчет ускореня все расписал в последнем комментарии к Вашему воросу.
elleremo, ускорение которое получают планеты пролетая вблизи других планет не является ошибкой!!!
Этот эффект называется "гравитационный маневр" или же "гравитационная праща" и как следует из названия, придает существенное ускорение, величина которого тем выше, чем ближе пролетает ускоряемый объект к другому объекту. В Вашей симуляции этот эффект усугубляется еще и тем, что объекты проходят сквозь друг друга в тех случаях, когда они в реальности должны были бы столкнуться что позволяет им проходить своими центрами масс мимо друг друга на расстояниях стремящихся к нулю, тем самым придавая ускорение стремящееся к бесконечности, а также тем, что статичные объекты прибиты гвоздями к небосклону, что является своего рода точкой опоры гравитационного рычага, также увеличивая ускорение пролетающих вблизи объектов.
Для решения данной проблемы необходимо:
1. Отказаться от статичных объектов
2. Обрабатывать события столкновения объектов
3. Обрабатывать события пролета объектов на тех расстояниях, при которых реальные объекты развалились бы на части от взаимного влияния гравитации.
Все эти меры не устранят ускорения, но существенно его уменьшат до величин, считающихся естественными
В этом примере все что на листе полностью отрисовывается на канвасе и перерисовывается каждый кадр (фон, сетка, объекты), при этом функции отрисовки доступные через ctx вызываются не напрямую, а через враппер, отвечающий за масштабирование рисуемого контента. Даже на моем стареньком компе это не тормозит.
Stalker_RED, если много, то может и притормаживать:)
intersection observer - пока все еще экспериментальный а вот прикрутить throttle - вполне здравая мысль, если не поленюсь - прикручу. А сейчас спать, пол ночи игрался с гравитацией в этом вопросе:)
Это может привести к путанице и недопониманию происходящего в коде даже у программистов привыкших их использовать.
Именно поэтому и заменил на обычные if-ы и снабдил их комментами.
Кристина, Вы бы по подробнее описали суть задания, особенно откуда взято требование рекурсивности, потому как приведенный Вами ассоциативный массив с питомцами совершенно не нуждается в рекурсии.
На всякий случай попытался изобразить рекурсивную функцию (получился правда какой-то рекурсивный монстр, абсолютно бессмысленный:)
Практика использования моего бота на основе node-telegram-bot-api показала что решения с polling постоянно тормозят, пропускают сообщения а изредка даже начинают обрабатывать одно и тоже сообщение несколько раз. При использовании прокси ситуация только усугублялась.
В качестве решения был вынужден арендовать недорогой забугорный хостинг и использовать node-telegram-bot-api с опцией webhook.
Denoro55, ответьте если я Вас правильно понял, Вы хотите внести изменения (добавить роутеры и/или обработчики) в ваши серверные скрипты и не перезагружая их (серверные скрипты) иметь возможность обращаться к ним (измененным/добавленным роутерам и/или обработчикам)?
kentos, Вы имеете ввиду текстовое описание?
Если да, то наиболее короткое описание звучит как - стек FIFO
Но Вы должны понимать что это очень обобщенное описание, не отражающее в полной мере всех особенностей eventloop-а.
Shane Matte, nedb по умолчанию хранит данные в ОЗУ, при этом для каждой операции над данными дописывая в конец файла по строчке, описывающей эту операцию.
Если вы стираете содержимое файла с данными во время работы вашего скрипта, подключенного к данному файлу, то при завершении процесса скрипта nedb перезаписывает файл последними актуальными данными из ОЗУ.
Чтобы удалить данные из файла выполните следующую последовательность действий:
завершите Ваш скрипт;
удалите данные из файла;
запустите Ваш скрипт.
miliko mikoyan , удалил свой ответ, перенеся содержимое сюда:
Хотелки это хорошо, но Ваша хотелка абсолютно бессмысленна, если не сказать больше - вредна :))
По существу:
Это вполне возможно, можно написать целый сервис, который будет по запросу выдавать сообщения упавшие в серверную консоль, в довесок написать расширение для браузера, которое будет эти сообщения запрашивать и выводить в консоль браузера, но прежде чем заняться такой глупостью, ответьте на несколько вопросов:
1. Вы отдаете себе отчет что js в браузере и js на сервере это 2 разных программы?
2. Вы понимаете что смешав выводы console.log (а еще упаси бог console.error) в консоли браузера вы запутаете сами себя, в разы усложнив отладку?
3. Вы умеете пользоваться терминалом?
4. Вы умеете подключатся к серверу по ssh?
5. Вы понимаете разницу между скриптом запущенным в фоне (как демон) и обычным запуском скрипта в консоли?
6. Если вы положительно ответили на все предыдущие 5 вопросов, то зачем вам вывод серверного console.log в консоль браузера?
А теперь вернемся к истокам, не могли бы Вы поделится ходом своих мыслей и проблемой, столкнувшись с которой Вы задали этот вопрос? Не стесняйтесь, новичков тут редко обижают, излагайте все как есть, не упускайте подробностей и тогда возможно Вы получите более вменяемый ответ на Ваш вопрос чем дал Вам я.
Роман писал: Павло Пономаренко, пусть тогда установит расширение для браузера, которое умеет подключаться к серверу по ssh. Сможет из браузера отправлять команды серверу и видеть все что валится в серверную консоль, хоть mc запускай или видосики в ascii.
Мне не очень нравится что Вы так и не выбрали ни одного ответа, хотя люди Вам полностью раскрыли ситуацию. Поэтому удалил его, перенеся содержимое сюда:
Даниил, такого селектора не существует. но вы можете перепроверить меня.