• Как перенести свободную память с sda3 на sda2?

    @rPman
    грузишься с livecd/liveusb любой linux и запускаешь gparted, в gui нормально все двигаешь и пермещеаешь
    Ответ написан
  • Как настроить NAT на windows server с одним физическим сетевым адаптером?

    @rPman
    Попробуйте установите виртуальный драйвер сетевой карты microsoft loopback ethernet adapter (управление драйверами - установка старых устройств) как минимум получите сетевой адаптер, не подключенный никуда (я так глюки майкрософтовского сетевого моста решал, добавив такой адаптер, сетевой мост всегда онлайн, даже если кабель вынимать у добавленного в него реального ethernet)
    Ответ написан
    Комментировать
  • Как задать запрос в базу mysql с массивом данных?

    @rPman
    Философия тут простая - ВСЕ данные, которые участвуют в запросе, должны присутствовать в базе данных.

    А это значит, либо данные заливать перед самим запросом во временную таблицу (что имеет смысл делать только при очень большой нужде, например большой объем данных и мало оперативной памяти на бакэнде) либо, все данные уже есть в базе, и выбирать их по идентификатору, добавляя их список в where id in (1,2,3,...)

    Так же есть неплохой по моему мнению (но считается говнокодом) подход - когда данные это сам запрос, что то типа указывая данные для фильтрации по одному
    select ... where name like '%sdf%' union
    select .. where name like '%zxcvx%' union ...
    или подготовив вложенную виртуальную таблицу с данными
    select ... from (
      select 1,2,3 from dual union
      select 5,6,7 from dual union ...
    ) x where ...


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

    Понятно этот подход нужно использовать с умом и не вставлять в любое место бездумно.

    Реляционная база данных - это компромис, когда ты платишь сложностью работы с данными, кучей ограничений и низкой скоростью, за универсальность, легкий многопользовательский доступ и автоматический контроль за целостностью (транзакции), и вот когда этим можно пренебречь, появляется возможность делать так как описал
    Ответ написан
    Комментировать
  • Перенос Linux c vhdx на hdd?

    @rPman
    Для начала метка активного диска это очень устаревшая методика, работает только с legacy mbr boot и только с dos и старыми windows.

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

    Самое простое и универсальное (не важно какой биос), загрузиться с livecd/liveusb (любую систему linux той же архитектуры, т.е. x86/x64/... в идеале той же версии но не обязательно), смонтировать корневой раздел в какой-нибудь каталог типа /mnt (причем если root состоит из нескольких разделов типа /boot /home и т.п. то нужно смонтировать их все в правильном порядке) и запустить команду
    grub-install /dev/sda --root-directory=/mnt
    где /dev/sda это устройство с диском с которого нужно грузиться (где лежит efiboot или biosboot или для старых mbr дисков где будет загрузочный сектор)
    а /mnt - каталог, в который смонтирован корневой раздел файловой системы твоей перенесенной ОС.

    p.s. grub все сам проверит, восстановит и настроит, и если какая ошибка - напишет

    Дополнительно удостовериться, что в /etc/fstab указаны верные устройства монтирования а лучше перевести на UUID
    Ответ написан
  • Скачанное видио не удаляется на телефоне, что делать?

    @rPman
    В галерее показаны иконки, так происходит, если файл удалить 'сторонними' средствами а иконки (это отдельные файлы, по уму лежат тут же но переименованные с точкой в имени в начале) нет.

    Достаточно удалить файл еще раз из галереи и он исчезнет.

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

    @rPman
    Очень не хватает скрина этого 'введите код' приложения youtube.

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

    Можно найти системные логи (есть приложения для их чтения, но лучше из android studio на десктопе их смотреть), можно перепроверить что на смартфоне стоят именно те приложения что были изначально (потому что название и иконка не является чем то уникальным, мало того, после того как на смартфоне появились сторонние app store (те же китайские или российские), бардак увеличился кратно, ведь и китайцы и россия желают присосаться к потоку пользовательской приватной информации и полностью контролировать смартфоны пользователей.
    Ответ написан
    4 комментария
  • Как настроить работу через VPN только одного приложения KRDC в Manjaro Linux?

    @rPman
    Если полный нуб, то подними vpn в виртуалке и там же запускай нужное приложение.

    Формально для данной задачи подойдёт cgroup network namespace, достаточно сложно для настройки
    Ответ написан
  • Может ли ПО удаленного доступа узнать о карте захвата в моём ПК?

    @rPman
    Короткий ответ - часто да, а в общем нет.

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

    При подключении карты захвата к hdmi/dsub детектировать почти невозможно, есть протокол общения с монитором, где передаются параметры поддерживаемых разрешений и куча другой информации, именно эта информация поможет детектировать карту захвата, но нужно будет изучить рынок устройств и банально собрать базу этих EDID
    Ответ написан
    Комментировать
  • Как сделать так, чтобы nvidia a100 заработала в yandex cloud с драйвером 535 и cuda 12.2?

    @rPman
    У меня только один вопрос, пробовал ли ты устанавливать необходимые версии софта в docker?
    Ответ написан
    3 комментария
  • Синхронизация двух директорий через ssh?

    @rPman
    rsync более чем покроет все твои задачи, и он считается стандартом defacto в мире синхронизации файлов, но чтобы добавить полезной информации - у всех механизмов синхронизации на основе файлов есть легкий недостаток, информацию об изменении файла они получают из метаинформации (размер файла, флаги или даты модификации), которая не защищена от изменения, т.е. возможна ситуация, когда файл изменен но его дата нет.
    spoiler
    А еще есть проблема еще больше, обычно файлы копируются целиком, даже если в них были только минимальные изменения (вопрос что есть изменения - отдельный и философский), классический пример - вставка или удаление новой строки в текстовый файл, с помощью утилиты diff можно сравнить старую версию и новую версию файла, и получить diff patch, текстовый файл, содержащий только информацию об изменениях (так же построчно а не посимвольно), но для проведения этого сравнения нужно прочитать старую версию файла и новую, а так же потратить порядка n^2 памяти (в универсальном случае для binary diff), поэтому этим не пользуются именно для синхронизации файлов, а копируют файл по сети целиком (но помните об этом если у вас есть память для хранения копии старых файлов но очень медленный канал связи).

    Теперь о важном - если использовать cow файловые системы типа btrfs/zfs, то можно максимально быстро (без затрат памяти и лишних чтений с диска) получить максимально эффективный патч простых бинарных изменений (без сдвигов содержимого файла) с минимальным размером куска файла - размером с кластер файловой системы (обычно 4 или 8 кб) и послать его по сети, а затем применить его на удаленную файловую систему (btrfs snapshot send), при этом это еще и максимально эффективно для медленных дисков hdd (так как утилиты пытаются обрабатывать данные последовательно а не случайно), в общем никакой другой алгоритм так эффективно синхранизацию больших объемов не сможет сделать (точнее можно, если использовать binary diff и хранить локально копии удаленных старых версий, но это очень ресурсоемко и по памяти и по процессору)
    Ответ написан
    Комментировать
  • Какие библиотеки и как использовались для создания Minecraft Bedrock?

    @rPman
    Майнкрафт был создан на собственном движке и написан на java, позже часть движка значительно модернизирована с помощью мода optyfine (текстур паки и шейдеры, поддержку этого в Майнкрафте так и не допили), там ещё есть моды движка но не такие значимые.

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

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

    @rPman
    Два способа - универсальный (так не работают только те программы которые специально заточены на запрет одновременного запуска, любой браузер не такой) и встроенный в браузер:
    * универсально - создаешь новый профиль пользователя, устанавливаешь браузер под этим пользователем, если приложение ставишь в профиль пользователя app data, обычно это если не требуется администраторских прав, либо заранее установив его в program files (это требует администраторские права), а затем, залогинившись под изначальным пользователем, запускаешь приложение по его ярлыку (публично доступному) нажав правую кнопку, вабрать в меню 'Запустить под пользователем' или используя консольное приложение runas.
    На каждый экземпляр приложения потребуется свой профиль пользователя
    * Воспользоваться штатным механизмом профилей браузера
    chromium:
    --user-data-dir=путь_до_каталога_с_профилями
    (внутри будет создан один каталог с профилем по умолчанию)
    или
    --profile-directory="Имя профиля"
    будет создан профиль в дефолтном каталоге профилей, их может быть сколько угодно
    firefox:
    -P
    откроет интерфейс создания и выбора профиля (один раз рекомендую запустить с этим ключом после всех манипуляций, с профилем по умолчанию и отметив внизу чекбокс - по умолчанию, иначе при следующем запуске firefox без ключей будет использован последний профиль)
    -p имя_профиля
    запустит браузер с выбранным профилем, рекомендую еще ключ --no-remote этот ключ отключит реакцию браузера на внешние приложения (типа открой эту ссылку), в этом случае можно использовать профиль по умолчанию как обычный браузер а остальные профили как независимо работающие.
    Ответ написан
  • Удаление скриптов с веб-страницы возможно автоматизировать в браузере?

    @rPman
    Если блок однозначно идентифицируется css селектором, то хватит uBlock Origin chrome, firefox.

    Иначе придется писать javascript код для поиска и удаления/сокрытия блока и инжектить его с помощью чего то типа tampermonkey
    Ответ написан
    2 комментария
  • Можно ли пропатчить платные расширения браузера?

    @rPman
    обычно все расширения складываются в профиль пользователя как есть в виде исходников (с оговорками про webpack и т.п.) ты можешь их копировать и редактировать... например в fiefox прямо в каталоге extensions лежат .xpi файлы, это zip архивы где все в виде исходников.

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

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

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

    @rPman
    первым, кто открывает файл, должен использовать функцию flock над идентификатором файла fopen
    $file = fopen('filename.txt', 'r');
    // пробуем установить эксклюзивную блокировку
    if (flock($file, LOCK_EX)) {
        // выполнение операций чтения
        // ...
        
        // освобождаем блокировку
        flock($file, LOCK_UN);
    } else {
        echo "Не удалось установить блокировку на файл.\n";
    }
    fclose($file);


    это системная фича posix, не привязанная к языку программирования

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

    @rPman
    Всегда в вопросах формулируй исходную задачу а не вопрос по одному из возможных решений, возможно выбран не тот путь?

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

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

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

    @rPman
    static int Print(){
    это ФУНКЦИЯ
    для ее вызова нужно использовать скобки
    Bacteria::Print()
    иначе ты получаешь ее адрес
    Ответ написан
    7 комментариев
  • Как сделать из компьютера прокси сервер для личного использования?

    @rPman
    Это сделать очень просто на основе ssh сервера, который идет в поставке как с windows (устанавливается штатными средствами) так и само собой с linux.

    Без каких либо особых настроек, ssh сервер поддерживает создание socks прокси, для этого на машине, чей ip адрес необходимо использовать нужно установить ssh сервер (если машина скрыта за фаерволом или NAT, что обычно сейчас происходит при использовании роутера, то на роутере необходимо настроить перенаправление порта 22 или любого другого, что максимум потребуется указывать в параметрах подключения клиентом) а на машине, на которой будет запущен браузер или приложение, использующее socks proxy, необходимо запустить ssh клиента (формально не обязательно на этой же машине, достаточно чтобы обе машины, браузер и ssh клиент, были в одной локальной сети), с подключением к ssh серверу и ключом -Dлокальный_ip_адрес:порт и этот ip адрес и порт указать в настройках прокси браузера (ip адрес машины на которой запущен ssh клиент, если не указывать адрес -Dпорт то будет использован localhost), дополнительно, ключ -N позволит убрать функционал терминала, оставив только функционал прокси сервера.

    По умолчанию ssh сервер будет требовать ручной ввод пароля пользователя, но это можно заменить на беспарольную аутентификацию на основе ключей (на самом деле там много способов, но это самый простой). Настроив беспарольную аутентификацию, команду на подключение к ssh серверу можно будет прописать в бесконечном цикле типа while true;do ssh .......;done в качестве автозапускаемой службы (или аналогичный скрипт cmd на windows в диспетчере заданий).
    Ответ написан
  • Какую кодировку выбрать для бд чтобы хранить фото?

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

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