Задать вопрос
  • Что использовать для синхранизации данных?

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

    Соответственно каждое твое действие с документом должно логироваться в лог действий (пар действий).

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

    Теперь самое главное - нужен самый главный (сервер или в p2p среде случайно выбранный один из участников) которому весь лог отправляется и который перенаправляет действия остальным, на самом деле можно паралельно и напрямую отсылать для отзывчивости но главный разруливает конфликты, или даже не допускает (реальное изменение происходит как только главный скажет что данные дошли до всех клиентов, но визуально это лаги, это некомфортно). Разруливать конфликт можно просто откатом операции автоматически (например прописать приоритетность для каждого действия). Если сделаешь механизм ручного разруливания конфликтов - тебе пользователи спасибо скажут.
    Ответ написан
    Комментировать
  • Не запускается wine на Linux Manjaro?

    @rPman
    99% проблем с wine у пользователей - это необходимость установки компонентов с помощью winetricks (список компонентов определять эмпирически по логам, либо подсмотреть, что устанавливает и использует приложение при установке на реальную windows, да и просто распотрошить инсталлятор, и конечно гуглить.

    Типовые проблемы - нужен браузер (предлагается gecko), нужен .net фреймворк, нужны vc redist и т.п. Иногда может банально не хватать какого-нибудь шрифта, который запрещено из-за лицензионных соображений вместе с ОС но могут быть загружены скриптами.

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

    p.s. есть GUI утилита q4wine, дает какое то удобство, если тебе прямо в GUI надо, и логи посмотреть и префиксами порулить, и запущенные процессы помониторить

    p.p.s. настоятельно рекомендуется устанавливать wine не из репов ОС а самые последние версии с сайта winehq
    Ответ написан
    Комментировать
  • Какие есть хостинги для хранения видео и какие есть методы оптимизации видео?

    @rPman
    бесплатно нигде
    за деньги - как любые обычные данные

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

    а так да, если надо сэкономить - то пережимать

    p.s. кажется самый дешевый хостинг в мире, особенно когда речь о БОЛЬШИХ размерах - amazon s3 (какой-нибудь glacier хранилище для малоактивного контента с лагом извлечения - часы и другие уровни по дороже - для оперативного)

    само собой, весь контент лучше кешировать на локальном хостинге

    p.p.s. в свете санкций могу посоветовать криптовалюты, siacoin неплохой инструментарий имеет, вполне адекватная скорость, и цены сравнимые с амазоновским glacier
    Ответ написан
    Комментировать
  • Как найти схожий текст в Mysql?

    @rPman
    Akina абсолютно прав, но в качестве ответа - одним из простых критериев похожести может быть отличие в количестве символов (известный алгоритм levenstein)
    вот статья с примерами и реализациями на mysql
    для postgres есть штатная реализация но нативные индексы так и не поддерживаются

    p.s. повторюсь, sql базы данных для данной задачи к сожалению не подходит, чтобы это работало быстро потребуется предварительная обработка базы и построение псевдоиндексов
    Ответ написан
    Комментировать
  • Что делать, если не открывается приложения Windows Form?

    @rPman
    я тут вижу два разных языка - c++ и manged c (на нем написано приложение win form)

    выбор языка определяется в момент создания проекта, именно это определяет как это будет запускаться

    если же у тебя два проекта в solution то там же есть настройка, какой запускать

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

    пример доки, как вызывать из managed кода unmanaged (тот что ты на c++ хочешь)
    Ответ написан
    6 комментариев
  • Как встроить стороннюю страницу на подобие iframe но с некоторым функционалом?

    @rPman
    Браузеры защищают сайты с разными доменами у фрейма и основного, от подобной деятельности. Ни доступа к странице, ни к содержимому нет.

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

    Если твоя задача не состоит в краже пользовательской авторизации, то достаточно через проксирование сайта на своем домене открыть его как свою страницу и уже к ней будет полный доступ, можно получить document страницы, делать поисковые запросы querySelector и делать клики через .click()
    Ответ написан
  • Какой стек использовать для разработки SPA?

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

    Без этого понимания любой фреймворк для тебя будет черным ящиком, и любые даже минимальные проблемы решить самостоятельно не сможешь!
    Ответ написан
    3 комментария
  • Как сделать https в локальной сети?

    @rPman
    SSL Cloudflare отдает сертификат? или замыкает только на себя?
    если отдает то можно настроить dns (или локально на машине /etc/hosts) на свой локальный веб сервер, который этим сертификатом будет обеспечивать https
    Ответ написан
    2 комментария
  • Что будет, если открыть pdf с iOS в фишинговом письме?

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

    Само собой гарантии этого дать невозможно, но шансы проблем минимальны.

    p.s. что происходит когда приложение gmail открывает pdf? оно это делает внутри самого себя или передает pdf на системный просмотрщик?
    На сколько я помню гугл все внутри себя пытается замыкать, а значит контролирует этот процесс и проблем быть не должно
    Ответ написан
    Комментировать
  • Как в initrd вызвать bash/sh?

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

    первый же пример из гугла скрипта
    Ответ написан
  • Чем можно скачать страницу сайта кроме wget?

    @rPman
    гугли offline explorer или offline browser (там много разного софта было)
    когда то это был единственный способ бакапить сайты со скриптами.

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

    p.s. содержимое сайта с вероятность 99.(9) скам, будь осторожен
    Ответ написан
    Комментировать
  • Использовать лли ext4, или exfat для внешнего SSD, если планирую использовать его на всех 3х ОСях?

    @rPman
    исходить нужно от задач.

    ext4 будет максимально эффективно работать на linux и скорее всего mac
    exfat будет хорошо работать только в windows (когда я смотрел, на linux драйвер делает заметно больше обращений к диску)

    p.s. я помню под windows есть отличная утилита imdisk, она умеет не только ramdisk создавать но и монтировать образ cdrom и главное сделать его writable. На linux так же не будет проблем с записью cdrom (кажется фалйовая система udf), остается вопрос с macos

    само собой никаких прав доступа ни один из этих способов не обеспечит, по куче причин.
    Ответ написан
    2 комментария
  • Как скопировать диск на другойЁ меньшего объема?

    @rPman
    clonezilla (есть как загрузочный диск так и стандартный пакет в linux)

    Универсальный инструмент, умеет работать как с linux файловыми системами так и windows ntfs/exfat/fat32 (он использует утилиту partclone), автоматически скопирует как mbr и подправит таблицу разделов и главное максимально эффективно (быстрее чем dd, потому что пропускает свободное место) склонирует диск

    Есть проблема, возможна ситуация (редко), когда из-за фиксированного размещения таблицы ntfs mfat, возможности по уменьшению раздела будут ограничены, даже при наличии свободного места, тогда единственный способ корректно перенести раздел с системой будет backup-restore средствами windows (только он корректно переносит права доступа, символические ссылки и прочее)

    Еще одна проблема, ее может породить стандарт EFI (иногда не требуется), потребуется обновить информацию о загрузочных записях об ОС в биосе, запустив соответствующие утилиты, для windows - инструменты восстановления установочного компакт диска, а для linux переустановкой загрузчика (скорее всего grub) или вручную с помощью efibootmgr
    Ответ написан
  • Как формировать новый адрес для получения USDT для каждой транзакции?

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

    Генерация адресов usdt делать нужно инструментами, предоставляемыми блокчейном
    * bitcoin - можно использовать любой инструмент генерации адресов (их миллион, хотя бы определись с языком), так же рекомендуется использовать официальный кошель bitcoin omniwallet, он же и за балансами проследит.
    * ethereum - та же фигня, библиотек много, так же официальный geth вполне подойдет
    * tron - официальная библиотека (javascript - tronweb)
    ...
    Ответ написан
    Комментировать
  • Как перевести большой html файл на другой язык?

    @rPman
    раздели текст по абзацам и переведи, 10 минут покликать мышкой нет проблем.
    Ответ написан
  • TON Coin API на php?

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

    p.s. официально от разработчиков есть javascript и python библиотеки
    Ответ написан
    Комментировать
  • Как взаимодействовать с txt файлом, находящимся на сервере, с помощью с++?

    @rPman
    Вопросов тьма, от ответов на них зависит и результат
    Например - сервер доступен ли по какому то протоколу?
    во всех операционных системах можно настроить какой-нибудь протокол smb/nfs/ftp/http/ssh/... все они позволяют получить доступ к файлу так или иначе.
    Это вопрос не программирования а devops, настроить соответствующее приложение-сервер, на стороне клиента есть очень универсальная библиотека - libcurl (и одноименная утилита) умеет наверное все популярные и не очень протоколы.

    Само собой можно написать свой сервер по своим правилам (гуглить socket server c++) но стоит ли?

    p.s. netcat, консольная утилита, позволяет отправить через пайпы содержимое файла в сетевой сокет а на другой стороне соответственно наоборот принять, способ тупой, простой, на основе его и баш можно сделать однострочник сервер для отправки файла любому подключившемуся.
    Ответ написан
    6 комментариев
  • Архитектура сервиса обработки задач [PHP]?

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

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

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

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

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

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

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

    В итоге, любая задача будет запущена в виде процесса ОС, в linux это делается с помощью bash ... & а в windows - например start /min. Сам процесс обработки очередей будет занят сном, чтением списка процессов и проверкой pid уже запущенных, на это не требуется никаких особых ресурсов (при необходимости очередью может рулить этот процесс, буквально вместо базы данных слушать сокеты и принимать заявки на исполнение, в phpreact для этого все готово, даже слабые машины могут легко тянуть десятки тысяч запросов, я эксприментировал с websocket)

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

    @rPman
    Для установки, начиная с 26 api (android 8) приложение должно иметь право REQUEST_INSTALL_PACKAGES.
    Устанавливать приложение нужно с помощью Intent.ACTION_INSTALL_PACKAGE (до api 29 т.е. до 10 андроида)или PackageInstaller API.

    p.s. за обход этого гугл делает атата, например запретили так делать (открывать apk дефолтным просмотрщиком как ты хочешь) разработчикам Total Commander под угрозой выкидывания из гуглстора
    https://www.ghisler.com/android.htm
    Removed all functions to install apk files manually by request from Google.


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

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

    Покажи что выдают
    fdisk -l /dev/vda
    pvdisplay -m
    lvdisplay -m

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

    Если файловая система ext2..4 то достаточно прописать resize2fs (причем кажется оно давно умеет это делать на лету без отмонтирования диска)
    Ответ написан
    Комментировать