Задать вопрос
  • На своем сайте надо организовать возможность онлайн трансляции через iр камеры. Как это сделать?

    @rPman
    Самое 'простое', установить на сервере ffmpeg и используя простую публиковать видеопоток в нужном формате
    гуглить ffmpeg webcam video streaming
    например вот
    Ответ написан
    Комментировать
  • Есть ли приложения генерирующие анимацию облака точек по видео?

    @rPman
    Задача может быть решена аппаратно, 3d камеры от того же intel в примерах в sdk предлагают софт именно для этого, дают облако точек, но пользоваться этим невозможно

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

    Вектор угла направления взгляда/положения лица будет прыгать как сумашедший от кадра к кадру, я еще про эмоции не сказал, каждая эмоция тоже параметризована, все это не позволит дать точное соответствие одной и той же точки на лице на соседних кадрах, т.е. построив к примеру поверхности по этим точкам они просто не сойдутся на следующем кадре, в результате будет сильный шум, затрудняющий хоть какую то адекватное применение (игрался я с 3d камерами от intel, сильный шум результата делает все бессмысленным)
    Ответ написан
    Комментировать
  • Существует ли видеоплеер для Android приставки без навигационной панели (Play, Stop, Next, Previous и т.д.)?

    @rPman
    Самое простое - браузерный

    написать html из пяти строчек с тегом video, скопировав из примеров документации, прописать атрибутами что без контролов, в цикле, все прекрасно работает локально из файлов без сети

    из недостатков, автоматически не включится fullscreen, может autoplay не заведется (но можно плагин поставить к браузеру, типа greasemonkey)
    Ответ написан
    Комментировать
  • Как правильнее будет синхронизировать удаленную бд локально?

    @rPman
    правильно - master-slave репликация, все изменения главной базы автоматически, допускается с некоторым лагом, прилетают на подчиненную slave, с этой базой можно работать в readonly режиме как с обычной базой, и ее нагрузка никак не скажется на нагрузку основной.
    Ответ написан
  • Как запустить сервер на своем ПК?

    @rPman
    Настоятельно рекомендую не использовать готовые мега сборки для разработки, а взять чистую linux операционку (пусть и серверных ревизий но не обязательно) и установить ее в виртуальной машине (можно в windows wsl использовать но я так же настоятельно не рекомендую этого, так как проблем это добавит а для начинающего лишние они не нужны), для начинающих пользователей рекомендую VirtualBox

    Этот подход подготовит начинающего разработчика к тому что его ждет на VDS-ках и позволит научиться базовым основам администрирования.

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

    @rPman
    Делать все из другой системы (например загрузившись livecd)

    Конвертируешь файловую систему /dev/sda2 в btrfs с помощью btrfs-convert
    добавляешь к получившемуся устройству /dev/sdb с помощью btrfs device add /dev/sdb /mnt (на сколько я помню добавится без raid в режиме single, когда диски наполняются по мере необходимости и могнут быть разного размера)
    Правишь /etc/fstab

    p.s. бакапы! подобные операции, какими бы надежными они не казались, могут привести к потере данных
    Ответ написан
    Комментировать
  • Почему роутер не видит MAC адресов HyperV виртуалок?

    @rPman
    bridge с wifi картой родительской машиной
    боюсь причина в этом, когда wifi переподключается сетевой подсистеме windows плохеет.

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

    Почему это может помочь, loopback устройство включено всегда, сетевой мост активен пока активно хоть одно устройство в нем, т.е. виртуальная машина будет работать со всегда активным сетевым подключением
    Ответ написан
    Комментировать
  • Как получить GMT+3 время в миллисекундах?

    @rPman
    #include <chrono>
    ...
    using namespace std::chrono;
    
    milliseconds ms = duration_cast< milliseconds >(
        system_clock::now().time_since_epoch()
    );
    unsigned __int64 count=ms.count();

    конвертнуть в нужную timezone to_local либо просто добавив (или вычесть?) заранее посчитанное количество миллисекунд
    Ответ написан
    3 комментария
  • Возможно ли узнать время, за которое запрос приходит на сервер?

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

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

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

    @rPman
    а почему ждешь именно 201 статус?
    раз есть отклик в консоли значит fetch отработало, смотри код сервера, пропиши там отладочной информации
    Ответ написан
    2 комментария
  • Оптимизация работы с апи, что использовать?

    @rPman
    Причина тормозов - неправильно оформленный запрос, то что можно посчитать на sql сервере, почему то считаешь на бакэнде.

    Даже не изучая код, видно что вместо того чтобы делать 100500 запросов, по одному для каждого $this->room[$cart_min]->Room_id, достаточно собрать эти идентификаторы в список и сформировать один запрос на выгрузку сразу всех room_images (так как работа списка не зависит от ответа от sql сервера)

    Если количество идентификаторов меньше тысячи, то это можно сделать с помощью select ... from ... where id in (1,2,3,4,5,...)
    если больше, то подумать, может пусть списком идентификаторов сам сервер сразу и заведует, храня их в какой-нибудь табличке
    Ответ написан
  • Аналоги RDP в винде?

    @rPman
    Обычно все используют vnc для реализации (даже если модифицируют его до неузнаваемости), навешивая поверх дополнительный функционал и удобства подключений через сторонние сервера (тот же teamviewer и anydesk например). Все они дают доступ только к активной консоли.

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

    А если что, без удаленного управления из обычной windows можно сделать многопользовательский терминал (много мониторов, клавиатур, мышек) с помощью ibik aster

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

    @rPman
    нет, но можно открыть доступ только на чтение, а каждый пользователь при открытии будет получать копию таблицы (меню файл - сделать копию)
    Ответ написан
    Комментировать
  • Возможно ли сделать прокси-сервер который использует другие прокси? Или делать через VPN?

    @rPman
    Если на машине, чей ip авторизуется в прокси, есть возможность настройки iptables или любого другого фаервола, то можно настроить простой nat port mapping, пропиши в правилах фильтрацию входящих ip адресов чтобы ограничить доступ к прокси только с них.

    И совсем простой вариант, любой ssh умеет настраивать проброс портов в любую сторону (от клиента к серверу или от сервера к клиенту, ключи -L и -R соответственно), т.е. настраиваешь беспарольную авторизацию, и простым скриптом (его можно как службу прописать)
    while(true);do ssh xxx@yyy -L ..... -N;sleep 1;done

    делаешь автопереподключение (в конфиге ssh сервера советую прописать keepalive на случай нестабильного интернета)
    Ответ написан
    2 комментария
  • Почему не получается обновить до php7.3 на Ubuntu 16?

    @rPman
    Потому что 16-ая версия ubuntu xenial устарела на два lts релиза, а через месяц уже будет три
    В указанном ppa нет сборок под xenial

    есть неофициальные архивы, так что с осторожностью:
    https://launchpad.net/~sergey-dryabzhinsky

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

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

    @rPman
    Что и главное от кого защищаешься? от этого зависит ответ и он будет сильно разный.

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

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

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

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

    Само собой правильно - администратор должен не настройкой заниматься, а создавать и настраивать инструменты автоматического развертывания (например образ docker или конфиги ansible), т.е. минимум два человека - один делает всю работу но не имеет доступа к паролям, только тестовые данные, другой только проверяет работу и запускает в бой.

    Разделяй и властвуй - не держи все в одном месте, разделяй сервис на несколько, чтобы критичная информация могла быть размещена отдельно от основной логики в виде простого и дубового модуля, требующего минимального и редкого обслуживания
    Ответ написан
    Комментировать
  • Как связаться с DHCP сервером после переезда ПК:)?

    @rPman
    Создала новое подключение через набор номера, все ок, но интернета нет.
    Что? набор номера это подключение с помощью модема, очнись, ты в 2021 году а не 2000. Этого делать не нужно в принципе, удали это подключение.
    Если подключение к интернету идет через ethernet провод, то ничего создавать не нужно, если в системе установлены все необходимые драйвера то сетевое подключение уже есть и по умолчанию оно в режиме - автоматическая настройка.

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

    Как именно производится подключение к интернету? варианты:
    1. напрямую через провод, который приходит из подъезда (оборудования провайдера)
    2. у тебя в доме установлен роутер (приобретен или предоставлен провайдером), и компьютер проводом подключен к этому роутеру (или по wifi)

    Если вариант 1, то тогда, вместе с договором на подключение к интернету должна идти дополнительная бумажка, либо приложение либо либо как часть самого договора, в которой прописаны параметры подключения, иногда даже скриншотами интерфейса настройки подключения, как минимум там должна быть информация об ip адресе, если автоматически он не настраивается... в теории возможны извращения с динамическим ip адресом без локальной сети, но если нет инструкции и служба поддержки топает больше 4 суток, то советую убежать от такого провайдера подальше и по быстрее

    Если вариант 2 то все сложнее, ведь сначала нужно настроить роутер
    Ответ написан
  • Как получить всю БД в виде csv?

    @rPman
    Формат csv для данной задачи наиболее неподходящий, теряется информация о структуре, особенно когда на очередной строчке количество колонок меняется и еще страшнее - если не меняется, что там лежит, что в какой колонке - не известно, машина не прочтет а человек обматерит изобретателя этого бреда.

    Вторая проблема - денормализация, вот это объединение записей. Причина простая - реляционные базы данных по определению не хранят достаточно информации для понимания, чем является данные. В некоторых случаях можно что то вытащить из типа индексов (fk и pk) и ограничений constraints но в общем нет. Как понимать связь М-1-М? какую таблицу брать за базовую а какую второстепенной, т.е. что выбирать left join, right join или inner join? Да, для простых справочников, когда таблица является лепестком в графе связей 1-М можно 'смело' связывать такую таблицу, дублируя данные справочника по foreign key индексам, но опять - зачем? ведь при чтении уже не будет видно что использовался справочник.

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

    в c# есть унифицированный инструмент по подключению к базам данных - ado.net (вся возня - в построителе connection string, плюс таскать с собой по больше драйверов от разных бд), плюс есть системный odbc (уже устарел но для старых баз данных это иногда единственный способ подключения) для которого есть поддержка ado.net
    Ответ написан
    1 комментарий
  • Настройка репликации между двумя веб серверами?

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

    Существует способ организации работы, когда синхронизация идет на блочном уровне файловой системы. Например DRBD (когда несколько блочных устройств в сети настраиваются как raid1 mirror). Или файловые системы типа glusterfs, когда сетевое хранилище организуется на базе файловой системы, в догонку еще варианты типа lustre или ceph.

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

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