Задать вопрос
  • Где почитать статьи про безопасную работу/передачу/обмен информацией в интернете?

    @rPman
    Первое и самое главное - для начала определите для себя что такое 'безопасность'! Это комплексное понятие включает в себя не только сетевые протоколы и интерфейс пользователя но и набор правил, которым должны следовать пользователи (та же присловутая бумажка с паролем на мониторе).

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

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

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

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

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

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

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

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

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

    @rPman
    Кажется htop не умеет группировать процессы, попробуйте atop
    В консольном интерфейсе нажмите последовательно m а затем p (до или после нажмите a чтобы вкл/выкл отображение всех процессов а не только значимых по потреблению ресурсов)
    Это включит режим сортировки по потреблению памяти а затем сгруппирует записи по одинаковому процессу (слева будет колонка с количеством) так вы найдете процесс, который запущен в нескольких копиях и по одной потребляет мало но суммарно много.

    Что показывает free -g или free -m (g - гигабайты, m - мегабайты)? возможно у вас половина памяти отведена под кеш и буфера операционной системы, это нормально, она будет освобождена автоматически.
    Ответ написан
  • Что нужно для записи с камер на удаленный компьютер?

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

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

    Для просмотра видео просто подключаетесь с помощью любого плеера (тот же vlc или mplayer или ffplay) по rtsp по второму линку к камере. Настройте себе прямо в проводнике линки либо простейшую html страничку (гуглите проигрывание rtsp в браузере, почти наверняка это будет flash плеер но с управлением по javascript), где ссылка - это будет картинка с тех же камер, обычно камеры отдают текущую картинку в виде jpeg по спец ссылке. В простом виде задача не выглядит сложной (если только смотреть), но если вам нужно еще и управление (повортные камеры, вкл/выкл led освещение, ночное видение, зум и т.п.) то тогда придется заморочиться и изучать api этих камер (отреверсить их html страничку, скорее всего там простые post запросы). Я бы рекомендовал на своей управляющей страничке сделать ссылки на админку каждой камеры, т.е. ничего програмировать не придется, тупо указать список ссылок на html страничке и все.

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

    p.s. у дешевых камер (<=$15) с которыми я игрался дома обычно проблемы с отдачей кодированного потока mpeg, например подвисания камеры. С mjpeg проблем не было но от них идет очень тяжелый по трафику поток (десяток мегабит если HD) и ни один сетевой канал наружу десяток таких камер не протолкнет, поэтому почти наверняка у вас останется только вариант перекодирование видео на вашем сервере. Какое подобрать железо для того чтобы перекодировать поток с десятка камер, отдельный разговор, если найдете свободный софт, способный это делать используя GPU, все вам скажут спасибо.

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

    @rPman
    GpGpu для программиста на текущий момент выглядит так - на неком языке (все поддерживают opencl, а nvidia в частности свою cuda, но онро идеологически похоже), очень похожем на c++, пишется код, с одним callback методом, который будет вызываться последовательно и параллельно (это решит драйвер видеокарты, вы этим не почти управляете) для элементов вашего массива, который по факту - текстура в памяти (на низком уровне вы тут не заморачиваетесь) и сохраняет результат в другой.

    Передача данных между обычным обычной оперативной памятью и видеокартой, объективно самая дорогая операция, и обычно стараются свести такие копирования к минимуму (т.е. на старте и под конец, для получения результата). Причем на столько, что к примеру получение содержимого экрана в оперативную память и копирование ее обратно в формате, понятному вашему cuda приложению будет занимать 99% времени если не 1099% (вы же хотите fullhd/4k 60 fps? а скорости может тупо не хватить), не говоря уже о самом преобразовании форматов.

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

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

    p.s. nvidia уже вроде несколько лет назад пиарилась на том что разработала такие алгоритмы для эффективного стриминга экрана приложений и игр по сети с минимальной задержкой, в т.ч. в железе.
    https://developer.nvidia.com/nvidia-video-codec-sdk
    Ответ написан
    Комментировать
  • Генерация аудио файла с помощью сообщений?

    @rPman
    Из бесплатных (и наверное полулегальных) можно воспользоваться обычным android + google apps, там возможна установка гугловского синтезатора речи, для кучи языков, и по каждому можно подгрузить языковые данные для работы offline. Попробуйте все это в эмуляторе.

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

    @rPman
    С каждым годом все больше сервисов используют шифрование трафика по умолчанию, следующие версии http и подавно не имеют варианта без шифрования, плюс повальное использование CDN, анти-ddos сервисов и прочего, превращают трафик от веб/приложений в кашу из шифрованных потоков к разным сервисам.

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

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

    Мало того, получив расшифрованный трафик - это пол дела, его нужно еще логически разобрать, вы же хотите понимать что именно делает приложение. Эта задача по затратам ресурсов и подавно высокая, особенно если приложение closed source.

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

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

    У разработчиков приложений и зачастую у пользователей, способов защититься от подобной деятельности гораздо больше чем у провайдера, и они дешевле.
    Ответ написан
    Комментировать
  • Что делать, если поставил не те драйвера на видеокарту(OpenSuse Leap 15)?

    @rPman
    отключите запуск X
    https://askubuntu.com/questions/16371/how-do-i-dis...
    для запуска однократно в текстомов режиме нужно нажать в grub загрузчике e и отредактировать строку запуска linux (по ссылке есть скрин) добавив туда text в опции
    Ответ написан
    Комментировать
  • В чем может быть проблема невозможности установки или обновления приложений через Google Маркет?

    @rPman
    Возможно ваш провайдер устроил mitm атаку на гугловскую инфраструктуру лично для вас? в РФ это теперь норма.

    Что происходит, если попытаться зайти с телефона на https://play.google.com
    Ответ написан
  • Хочу попробовать асинхронность PHP 7 с помощью REACTPHP, нужен совет?

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

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

    Грешу на материнку, почти наверняка контроллер, потому что смена диска (SSD, разных производителей) ситуацию не исправило, но на этой машине терпит так как происходит ОЧЕНЬ РЕДКО, разы в месяц.

    Еще причина, диск в windows работает в IDE режиме, потому что там так и не смог завести ACHI (нет прямых драйверов, есть гайды, которые советуют ставить сторонние драйвера не работают, я сильно и не заморачивался).
    Ответ написан
    1 комментарий
  • Печать документов в браузере Chrome без Google Cloud Print?

    @rPman
    Объясните, о чем идет речь? Что такое WinPrint?

    Чтобы открыть стандартную форму печати странице в браузере, необходимо просто вызвать print(), никаких облачных принтеров, штатная форма хрома, на выбор печать в локальный pdf и выбор списка локальных принтеров операционной системы, то же самое выводится при нажатии ctrl+p

    p.s. без диалога

    ну и еще, никакими способами, из javascript на странице вы не сможете получить доступ к реальным принтерам, вам нужна прослойка в виде плагина или расширения, это вопрос безопасности, иначе злоумышленники так смогут ддосить организации, выводя на их принтеры всякий мусор
    Ответ написан
    Комментировать
  • Почему возникает ошибка при подключении БД Access в VBA?

    @rPman
    в системе нет необходимых компонент: Microsoft Access Database Engine 2010 Redistributable
    p.s. тыц
    Ответ написан
    Комментировать
  • Какой протокол(технология) существует для remote mobile control?

    @rPman
    Вам так критично работать с удаленным управлением на низком уровне или лучше взять готовые инструменты? Что то типа crome/firefox desktop sharing (гуглите, названия разные, стандарт пришел с десктопа).

    Чуть более низкий уровень и достаточно старый протокол - vnc, библиотеки к нему есть наверное даже под чайники.

    Еще есть штатные инструменты разработчика, с помощью adb.
    Ответ написан
    Комментировать
  • Апгрейд видеокарты)?

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

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

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

    Есть такое универсальное правило - разделяй и властвуй.
    Разделите вашу 'идею' на визуально несвязные задачи и раздайте ее на исполнение разным разработчикам. К сожалению чтобы грамотно составить ТЗ таким образом чтобы итог можно было соединить вам нужно хоть немного разбираться в программировании (а по уму в проектировании и т.п.) либо опять таки доверить свою идею кому то.

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

    В итоге, чтобы восстановить вашу идею, разработчикам необходимо будет как то узнать друг о друге и договориться. то традиционно очень сложно. В идеальном случае для начала нужно вообще в принципе догадаться о такой необходимости.
    Ответ написан
    Комментировать
  • Как в C# Windows Form прочитать названия сепараций в PDF файле?

    @rPman
    В общем случае никак! pdf это считай картинка с опционально текстовой информацией.

    В вашем случае можно попробовать конвертировать pdf файл в картинки, вырезать из определенной области кусок (imagemagic) и отправить его на распознавание с помощью того же tesseract.
    Ответ написан
    Комментировать
  • Как ускорить работу Ubuntu в VmWare?

    @rPman
    Проверьте, возможно вы в настройках виртуальной машлины не включили опцию 2D и 3D ускорения. Да и для установки драйверов ускорителя на сколько я помню нужно специально запускать гостевую windows систему в safe mode.

    p.s. Недавно ставил winxp в virtualbox и для теста в vmware (esxi), не смог заставить работать их эмулированный видеоускоритель, но я точно помню несколько лет назад это работало очень быстро! Вполне возможно что это большие дяди (oracle) так нагадили, специально. Так везде сейчас происходит, к сожалению.

    upd. только что в win7 гостевой при использовании virtualbox установил как описал выше 3D ускорение, в браузере скролинг плавный, скринсейвер 3D буквы крутятся...
    Ответ написан
  • В чём проблема при установке Windows на жёсткий диск?

    @rPman
    Если вы можете вытащить жесткий диск, очистите его, удалив разделы, тогда загрузчик UEFI BIOS не будет пытаться с него загрузиться.

    p.s. есть ли в вашем биосе legacy boot? возможность загрузиться со внешнего устройства не имеющего раздела efi по старинке через mbr. Загрузочные диски установщика windows могут и legacy и efi. Так же вы можете сделать себе live usb ubuntu скачав ее с офф сайта или торент и запустить ее, почистить диск прямо в ноутбуке, проверить его на ошибки и прочее.
    Ответ написан
    Комментировать
  • В чем разница между указателями в си?

    @rPman
    Есть еще символ & который позволяет описывать переменные, доступ к которым синтаксически ничем не отличается от прямого доступа но по факту это ссылка:
    class MyClass
    {
    public int value;
    MyClass(int _value):value(_value){}
    }
    
    MyClass *tmp=new MyClass(10);
    MyClass &object=*tmp;
    object.value=20;
    delete(tmp);

    99% различий кроются в способах инициализации (и освобождении памяти), и в последние 10 лет в c++ наплодили столько изменений именно вокруг этого.

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

    p.s. используйте & для определения типов параметров передаваемых в функции, чтобы происходило не копирование а передача по ссылке, и при этом синтаксически вы бы работали с объектами напрямую.
    Ответ написан
    Комментировать