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

    @rPman
    c++11 и есть стандарт std::thread, std::mutex, std::lock_guard, std::unique_lock, std::condition_variable
    типа так:
     std::mutex m;
     // ...
     {
      std::lock_guardstd::mutex lock(m);
      // критическая секция
     }
    Ответ написан
  • Сможет ли чайник собрать костюм с помощью chatGPT и добрых Хабровчан?

    @rPman
    Неправильные вопросы задавал chatgpt
    сейчас, любители делают motion capture с помощью обычных камер и софта, вот например
    Ответ написан
    5 комментариев
  • Может ли мобильный оператор блокировать интернет при подключении компьютера?

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

    @rPman
    Да в некоторых случаях возможно защититься от создания фейковых видео.
    Контент на записываемом сайте должен быть невоспроизводим заранее и это можно было бы проверить.

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

    Т.е. в твоем случае Сайт 1 и Сайт 2 должны на своих страницах в ключевых местах оставлять такую цифровую подпись на изображении и предоставить механизмы проверки видео на наличие в них подписи (т.е. нужно будет покадрово анализировать изображения и сообщать что вот в этом кадре вот в этой области есть информация и она подписана)

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

    Так же лучше подписывать не все изображение целиком, а разделить его на области (например прямоугольная сетка) и подписывать каждую по отдельности, тогда метод записи будет не так критичен (например человек может записывать внешней камерой, трясущимися руками)
    Ответ написан
    1 комментарий
  • Насколько вероятна поломка БД Oracle при использовании контрольных точек Hyper-V?

    @rPman
    Есть два разных снимка.
    1. снимок ФАЙЛОВОЙ системы (Production Checkpoints у hyper-v)
    2. снимок файловой системы и ОПЕРАТИВНОЙ памяти (standart)

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

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

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

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

    p.s. если перед созданием снапшота сервер базы данных остановить, то проблем никаких это не создаст.
    Ответ написан
    Комментировать
  • Чем заменить репликацию Hyper-V?

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

    Например VirtualBox позволяет все это делать, причем из командной строки утилитой VBoxManage (она вообще все с виртуалками позвляет делать)

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

    Ну и совсем все удобно, если виртуальные машины будут запускаться не с локального диска а по iscsi по pxe (т.е. nas стоит отдельно в локальной сети), тогда виртуальные машины вообще будут переноситься путем остановил на одном хосте и тут же запустил на другом.
    Ответ написан
    Комментировать
  • На чём создать прогу для обработки больших данных?

    @rPman
    Смутно помню десятилетия назад у меня была задача приведения данных из разных структурно форматов (миниатрюные базы данных из нескольких таблиц с какими то полями, структура была простой, что то типа дерева - объект и вокруг него описания, но списки полей, отсутствие единых справочников и т.п. превращали процесс в ад), так вот, утилита для причесывания всего этого легче всего писалась на microsoft visual studio с использованием WinForms, на нем было невероятно просто писать простой интерфейс к базе данных, особенно когда у тебя много разных простых но уникальных формочек, большая часть работы была мышевозекательной, а программирование оставалось для граничных ситуаций, обработки ошибок и собственно аналитика.

    В последствии я краем глаза поглядываю на то что предлагается разработчикам для решения такого типа задач, и мне не нравится тенденция к усложнению. Если говорить конкретно про microsoft visual studio, то WinForms заменил WPF, мне показалось это не так удобно, сложнее.. может писать действительно сложные вещи с долгой поддержкой на современных инструментах было бы правильнее, но когда у тебя проект здесь и сейчас и через пару суток ты его уничтожишь за ненадобностью (данные обработал, конвертировал и забыл), альтернативы я не вижу.
    Ответ написан
  • Как добавить в приложение видео из html-фреймов (youtube, vk, vimeo)?

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

    yt-dlp позволяет не только скачивать, но и получить прямую ссылку (если это в принципе возможно) которую можно использовать в ffmpeg/vlc или любом другом плеере, который можно реализовать самому или встроить в приложение.

    p.s. приложение в виде библиотеки нет, есть только прослойки
    Ответ написан
  • Как на компе с виндой набивать голосом текст на русском языке, с качеством не хуже чем у клавиатуры gboard для Android?

    @rPman
    win11 - в любом поле ввода работает win+H, работает только онлайн, как и все в win11 (я не шучу, даже поиск по компьютеру адекватно не работает, даже проводник лезет куда то, и это еще онлайн аккаунт не создан)

    Если все еще интересно онлайн и есть понимание что диктовка текста это не просто надиктовал и получил слово в слово, вот посмотри этот проект (это первое что нагуглил но видео мне понравилось их)

    оффлайн есть утилиты на базе openai whisper или на базе vosk-api, точно помню была mozilla deep speech, на базе sapi было тьма утилит но из-за плохой реализации распознавания русского не прижилось.

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

    Найдешь что то интересное, тут отпишись.
    Ответ написан
    7 комментариев
  • Как обосновать применение реляционной БД на интервью по System Design?

    @rPman
    Реляционные базы данных функциональнее других, обычно за это приходится платить ресурсами, но бывает не приходится.

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

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

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

    @rPman
    https://learn.microsoft.com/en-us/windows/wsl/basi...
    в консоли с правами администратора
    wsl --list --all
    # смотрим список установленных виртуалок
     wsl --unregister <имя>
    # удаляем образ
    Ответ написан
  • Как подключить монитор в компьютер без видеовыхода?

    @rPman
    Съехидничаю, linux помню может в качестве терминала использовать что-нибудь, подключенное на com или lpt порт, например принтер, или другой компьютер. Пользы сегодня от этого не густо но возможность такая есть до сих пор (ее используют к примеру что бы запускать linux в вируталке, перенаправляя вывод в консоль хост машины)
    Ответ написан
  • Почему в команде man echo нет информации об аргументе -e но он работает?

    @rPman
    Потому что man echo говорит про /usr/bin/echo а в bash используется встроенная в bash команда echo (т.е. это команда языка а не утилита), соответственно и документацию нужно смотреть в bash
    https://www.man7.org/linux/man-pages//man1/bash.1.html
    echo [-neE] [arg ...]
                  Output the args, separated by spaces, followed by a
                  newline.  The return status is 0 unless a write error
                  occurs.  If -n is specified, the trailing newline is
                  suppressed.  If the -e option is given, interpretation of
                  the following backslash-escaped characters is enabled.
    Ответ написан
    4 комментария
  • Есть ли разница между *p++ и p++?

    @rPman
    *p++

    Унарный оператор * (если знак перед операндом и слева нет другого операнда) это значение по адресу, на который указывает операнд (в твоем случае это p который ссылка на char (*char) выше равен buf, который инициализирован массивом символов строки "123456\x00" (0 символ в конце не показывают и не учитывают в типе константы, но он есть)
    Затем идет унарный оператор ++ (правосторонний) который увеличивает на 1 значение операнда слева, т.е. *p
    Т.е. данная строка увеличивает на 1 первый (точнее нулевой) элемент массива, и кстати в твоем коде это строка-константа, и так делать нельзя и поведение будет неопределенным (зависит от компилятора).

    *p++ - увеличит ссылку p на следующий элемент и вернет его значение, совсем забыл про приоритеты, сам я стараюсь брать в таких случаях в скобки *(p++)
    p++

    увеличение адреса на 1, т.е. теперь p будет указывать не на нулевой элемент а на первый.
    Ответ написан
  • Какие вам известны хостинги для обхода блокировок?

    @rPman
    lowendstock.com и аналогичные поисковики, socks прокси не требует установки никаких приложений, используется штатный ssh (ключ на клиенте -D1080)
    Ответ написан
    Комментировать
  • Где найти созданные на WordPress страницы?

    @rPman
    В базе данных в таблице wp_posts

    Дизайн хранится в файлах темы header.php, footer.php, page.php...

    Первый же результат из Гугла на тему структуры хранения wordpress https://wp-staging.com/docs/the-wordpress-database...
    Ответ написан
    5 комментариев
  • Как отобразить при случайном порядке уникальность страниц?

    @rPman
    Если скорость исполнения не критична (что маловероятно но вдруг) можно обойтись без random, а сортировать строки по хешу от crc32(row_id*MAX_USER_ID+user_id) или представив числа как строки например:
    select * from table order by md5(concat(id,'|',$user_id))

    советую использовать числовые хеши типа crc32, по уму они быстрее.

    MAX_USER_ID это максимальное значение user_id, что бы значения не пересекались, так как если просто сложить id+user_id то 1+3 выдаст тот же результат что и 3+1. Можно чуть сократить сдвиг (особенно если хочешь поместить результат в 32-битный int), если убрать из интервала неиспользуемые минимальные user_id - id*(MAX_USER_ID-MIN_USER_ID)+(user_id-MIN_USER_ID). И конечно можно битовыми сдвигами пользоваться.

    Достоинство - это полностью вычисляемый алгоритм, ничего хранить не придется.

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

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

    p.s. как пользователь скажу, что этот подход лучше не применять, мало того, как пользователь я не вижу пользы в случайных статьях.
    Ответ написан
    Комментировать
  • Ретранслятор для управления дроном через интернет?

    @rPman
    Проблема у тебя возникнет гораздо раньше - на аппаратном уровне (до выбора протокола).

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

    Но если прямо очень очень надо и есть время и деньги на эту возню, то:

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

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

    - подумать о легальности процесса, в россии (да я думаю так или иначе везде) кажется без разрешения такого типа дроны запрещены, детские игрушки пускать можно только в прямой видимости и только на небольшой высоте (есть карты разрешений, на каких высотах где можно а где нельзя, на сколько я помню там очень много мест 'нельзя')
    Ответ написан
    2 комментария
  • Есть ли алгоритмы АНТИ антиалиасинг?

    @rPman
    Открываешь тот же GIMP и начинаешь экспериментировать (прямо на своем примере)
    * Меню Цвет -> Порог
    задаешь минимальный и максимальные значение яркости, до тех пор, пока размытое изображение не станет желаемым (по факту при изменении будет утолщение или утоньшение букв, так как антиалиасинг делает плавное изменение яркости в зависимости от условного расстояния до середины линии)
    45/255
    67c201f8c943d817348494.png
    172/255
    67c2020148aae438116236.png
    248/255
    67c202080e314927836371.png

    Алгоритм примитивный - для выбранного канала RGB/HSI (или расчетное типа суммы или среднего или что душе угодно) задается пороговое значение, если значение попадает в него - выбираем цвет 1 иначе 0 (итоговое изображение монохромное)
    * Фильтры -> Улучшения -> Повысить резкость
    * Изображение -> Режим -> Индексированный
    'Создать оптимальную палитру' установить 2 цвета
    (по уму это то же самое что порог, но забитый в коде, значения не очень оптимальные но под твою задачу могут подойти, зависит от разрешения изображения)
    Ответ написан
    4 комментария
  • Сurl и какие права ему нужны?

    @rPman
    список ссылок это бывший .m3u8, так собирайте из ссылок его (можно вставлять https ссылки внутри) и открывайте ffmpeg напрямую, он его понимает и умеет конвертировать.

    Это примитивный текстовый формат, обычно достаточно заголовка и ссылок на куски в порядке их просмотра
    Ответ написан
    Комментировать