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

    @rPman
    делать периодические запросы к WMI
    https://docs.microsoft.com/en-us/windows/win32/wmi...
    смотреть performance data provider

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

    @rPman
    Простейшие комбинаторные алгоритмы.

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

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

    Если путей нет бегунок удаляется.

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

    p.s. можно по хитрому реализовать хранение пути в бегунке, чтобы оптимизировать затраты на n*логарифм от размера лабиринта, вместо квадрата.
    Ответ написан
    1 комментарий
  • Как раздать WiFi на 50 смартфонов?

    @rPman
    Никак, либо быстрая скорость и дорого и сложно, либо медленно но бюджетно.

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

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

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

    @rPman
    Как таковой миграции именно с proxmox нет да и не думаю что актуальна такая примитивная операция как пункт меню в интерфейсе.
    https://pve.proxmox.com/wiki/Migration_of_servers_...
    Ответ написан
    Комментировать
  • Насколько хорошо/оптимально использовать хранимую процедуру для полинга?

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

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

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

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

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

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

    По окончанию работы счетчика вы должны снова запросить из базы данных список задач которые опоздали или должны быть исполнены сейчас, вычисляя разницу между расчетным количеством исполнений (now - creation_time)/exec_interval и счетчиком исполнений (тут же проверяем лимит количества запусков, и при его превышении задачу удаляем, не забыв доделать нужное количество запусков). Для каждой задачи получаем количество исполнений - запускаем эти задачи и по окончанию каждой итерации увеличиваем счетчик исполнений.

    p.s. разделение задач по разным таблицам в зависимости от длины интервала никак на производительность не повлияют, только усложнят алгоритм
    Ответ написан
  • Можно ли использовать mysql в качестве широковещания в laravel?

    @rPman
    Можно ли микроволновкой гвозди забивать?

    mysql не предназначена для передачи сообщений - это инструмент хранения и анализа данных.

    Конечно, сделать можно все что угодно, вы программист или кто, но зачем? эффективность реализации будет ниже плинтуса.

    p.s. у разных баз данных есть штатный механизм рассылки нотификаций клиентам, но именно у mysql его нет, реализуется плагинами, правда, внезапно, там будут те же сокеты :)
    Ответ написан
    Комментировать
  • Как делая программу на java (groovy) передать параметр в plsql не строкой, а байтовым массивом?

    @rPman
    tr1ck1, вам сообщение об ошибке, на русском языке, совсем ничего не подсказывает? даже нисколечки?
    PLS-00172: строковый литерал слишком длинный


    Наверное вы пытаетесь вставить в одну единственную запись типа varchar, string куда запихали 11к строк, оно тупо не помещается наверное?

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

    @rPman
    Вопрос содержит две подзадачи:
    1. подключение между двумя подсетями, в зависимости от того как 'далеко' они находятся, задача будет усложняться
    2. виртуальная машина, с точки зрения настроек сети - просто еще одна машина, в зависимости от настроек виртуальной машины, либо подключенная напрямую к сети через виртуальных свитч, либо через виртуальный роутер со своей виртуальной подсетью (виртуальная машина такой делает, включая в нем NAT), это значит в зависимости от ответа на первый вопрос, будет меняться ответ на этот второй.

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

    @rPman
    Писать серверную часть можно и на php, и да, даже если нужна работа с сокетами

    Например реалтайм браузерную игру (не пошаговую, когда используется http rest архитектура) можно написать с использованием websocket (например реализация Ratchet).

    Если хотите хоть какой то надежности от 'взлома' (от появления читеров) то ваша игра должна идти на сервере, а клиент - только отображение, т.е. это например классический игровой цикл запускаете на сервере, клиенты подключаются и передают свои действия и забирают изменения состояния мира. Если у вас реалтайм и не хотите лагов, то клиент должен как то сам додумывать как должна идти игра в следующие сотню миллисекунд, т.е. возможно на клиенте будет так же запущен тот же игровой цикл, с оглядкой на то что верить можно только серверу, т.е. например возможны откаты состояния мира если клиент додумал его неправильно (во время лага сервер думает что пуля все еще летит, когда как на сервере врезалась в цель, которая удачно изменила свое направление под пулю перед началом сетевого лага).
    Ответ написан
    6 комментариев
  • Нужно что-то вроде бесплатного VPS/VDS под Linux, где взять?

    @rPman
    amazon aws free tier 1год бесплатно
    Ответ написан
    Комментировать
  • Возможно ли предотвратить декомпилирование приложения?

    @rPman
    Единственный способ гарантированно защититься от взлома - передавать клиенту итоговую 'картинку', а с клиента пересылать его действия. Вырожденный случай - игроки подключаются к вашему серверу с чем то типа remote desktop (такая возможность достаточно давно появилась в игровых движках).

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

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

    @rPman
    А причем тут vue или python?

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

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

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

    @rPman
    Не обязательно все делать именно в mysql так что если я говорю база это значит может быть в т.ч. к примеру локальные переменные сессии веб-сервера.

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

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

    Человека идентифицируйте сессией, понятие сессия есть во всех фреймоврках для вебсервера, например php - смотрите session_start()
    Ответ написан
  • Как сделать скриншот с одного компьютера на другой?

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

    Для браузера - https://developer.mozilla.org/ru/docs/Web/API/Scre...
    Ответ написан
    Комментировать
  • Как получить JS-объект через dev tools в Chrome?

    @rPman
    Смотрите по коду как к объекту обращается сайт.

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

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

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

    @rPman
    что за бред, все линии будут пересекаться, в точках.

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

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

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

    Проект по вашей ссылке выше по мне так идеален под сформулированную задачу, тормозит скорее всего неправильно сконфигурированное железо (нет драйверов на видеокарту) либо вообще нет GPU
    The ResNet architecture is recommended for computers with even more powerful GPUs.
    Ответ написан
  • Можно ли перенести жесткий диск с windows на другой пк?

    @rPman
    Обычно главную проблему переноса составляет смена архитектуры intel <--> amd а точнее проблемы с контроллером жесткого диска, обычно драйвера/службы одной архитектуры не работают на другой, а так как дефолтные универсальные при этом отключены - система бует уходить в bsod

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

    p.s. а еще слетит лицензия, нужно читать внимательно что она говорит о смене железа. например предустановленные ОС (OEM) легально так переносить нельзя
    Ответ написан
    Комментировать