Задать вопрос
  • Чем пользоваться по минималке при работе с аудио файлом?

    @rPman
    alsa (оно на более низком уровне, ниже только в /dev/dsp писать напрямую, это подсистема OSS)
    pluseaudio (стало почти стандартом, но в принципе возможна установка без него)
    sdl audio - высокоуровневая библиотека, может использовать любой бакэнд
    p.s. пообщзался с ИИ, оказывается есть новые jack и pipewire, самостоятельные аудиосервера, к ним тоже есть соответствующие библиотеки но не думаю что тебе это нужно
    Ответ написан
    1 комментарий
  • Я переустановил Windows и у меня возникла проблема с приложением для заметок Obsidian, как мне востановить свои заметки?

    @rPman
    По уму obsidian написан на electron, данные хранятся там же в sqlite так что правильно смотришь в c:\users\username\AppData\Roaming\obsidian\ просто копируешь с заменой (по умолчанию он ставит тудаже и приложение)
    Ответ написан
    Комментировать
  • Какие есть сервисы для обработки форм на сайте?

    @rPman
    Все скрывается за
    нужен приятный интерфейс


    потому что обычные html формы пишутся буквально чем они являются, и ничего другого не требуется
    <form action="doit.php">
    <input name="xxx" value="yyy"/>
    <input type="submit"/>
    </form>


    Большая часть работы разработчика - это рюшечки, безопасность и поддержка кода в команде и во времени
    Ответ написан
  • На каком альтернативном маркете android самая простая регистрация/публикация/модерация?

    @rPman
    android не дает возможности установки приложений без подтверждения пользователями, эти права есть только у device owner (т.е. тех кто разработал прошивку) ну или при наличии root

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

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

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

    недостатки подхода, интернет все еще нужен, так как все браузеры для push-уведомлений используют свои сервисы, но они тоже заменяемы.
    Ответ написан
    7 комментариев
  • При запуске комп сразу выходит в BIOS?

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

    И кстати, оно должно писать подробно почему нужно F1 жать.
    Ответ написан
    Комментировать
  • Про извлечение квадратных кор... значений из health bar'ов. Как?

    @rPman
    Придется заниматься реверсинженерингом, с unreal engine это заметно сложно.

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

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

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

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

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

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

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

    @rPman
    Самое первое и тупое - сделать резервную копию, и пересоздание разделов (можно даже для надежности очистить первые сектора на диске с помощью dd).

    Вообще странно, sgdisk -e должен был бы помочь, ну попробуй сделать
    sgdisk --backup=файл_для_бакапа /dev/sda
    sgdisk --load-backup=файл_для_бакапа /dev/sda

    Если фиксить, попробуй консольный gdisk /dev/sda и в интерфейсе нажать v (проверить и починить) и w (записать изменения)

    p.s. осторожно с ИИ, они дают идеи но косячат с ключами, каждый их ответ перепроверяй ими же, добавив в контекст документацию по утилите
    Например anthropic:claude sonnet посоветовал
    sudo sgdisk -g /dev/sdX # синхронизация таблиц
    но это не совсем верный совет, ключ -g
    -g, --mbrtogpt
    Convert an MBR or BSD disklabel disk to a GPT disk. As a safety measure, use of this option is required on MBR or BSD disklabel disks if you intend to save your changes, in order to prevent accidentally damaging such disks.
    Если в mbr копии будет неправильная таблица, эта команда все сломает

    поэтому, если важны данные, делай сначала бакапы
    Ответ написан
    Комментировать
  • Можно ли спрятать процесс на дистрибутивах GNU\Linux?

    @rPman
    Функционально такой вирус создать конечно же можно, мало того, на linux все вышеописанное даже легче реализовать, за небольшим исключением.

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

    Пример путей проникновения - win-way пути запуска их как скачал-запустил, например .AppImage образ, изначально в нем должна поддерживаться песочница, но большинство примитивных приложений что я смотрел типа чат для ИИ (chatbox тот же) - требуют для запуска необоснованное отключение песочницы.

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

    Запуск приложений что в windows что в linux это вопрос ДОВЕРИЯ их разработчикам. Отличный пример rustdesk, опенсорс, но это приложение столько телеметрии отправляет (а в исходниках бинарники забиты) а еще на глюке начинает нагружать одно ядро процессора тупо в цикле ps запускать. Есть песочницы по типу snap/flatpak а так же штатно lxc, но интерфейс для их использования не для обывателя (нужно в консоли писать команды, с неудобной документацией по настройке прав доступа и т.п.) поэтому пока это не изменится, linux будет таким же дырявым с точки зрения простоты заражения как и windows.
    Ответ написан
    1 комментарий
  • Можно поменять серийный номер жесткого диска для конкретного приложения?

    @rPman
    Можно виртуализацией, самый простой способ. Внутрь виртуалки пробрасывается диск как образ (в qemu или virtualbox он так и прописывается, как файл). Диск аппаратно для программы будет другим, а содержимое то же самое что на оригинальном... так же можно пробрасывать конкретный раздел, тогда можно подменять в т.ч. и бут сектор
    Ответ написан
    Комментировать
  • Видимая точка входа в VPN?

    @rPman
    Что бы хостер vpn с выходным ip не видел ВАШ ip, используйте еще один промежуточный.
    Вы -> Промежуточный VPN -> Выходной VPN -> интернет

    В этом случае ваш провайдер 'не будет знать' (нет), какой выходной в интернет ip адрес у вас, а выходной vpn не будет знать какой ваш ip. Промежуточный vpn будет знать ваш ip но не будет знать выходной в интернет ip.

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

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

    На сколько я знаю чуть выше уровень защиты против тайминг атак - у i2p, там в трафик подмешиваются случайные данные...

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

    Живите честно и самая лучшая защита - быть 'неуловимым джо'
    Ответ написан
  • Как и где сохранять данные в next js?

    @rPman
    Проблема в том что в nextjs а используется подход stateless (а скорее всего http rest), когда каждый запрос клиента это новый запуск приложения, а состояние нужно будет заново восстанавливать и естественно где то хранить, например в базе данных.

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

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

    Если хостинг не позволяет хранить файлы и сам по себе является stateless, есть отвратительный но используемый метод, который используется, в тч.. майкрософтом, когда пишешь веб приложение в visual studio (может уже изменили?). Храни состояние в сетевых пакетах, т.е. cookies (пользователь их сможет увидеть и изменить, помни об этом). Так же можно передавать данные, добавляя их как GET, добавляя к каждой ссылке информацию в виде параметров, но в этом случае эти данные будет видеть пользователь прямо в ссылке и это нехорошо для SEO. Так же не советую использовать для этого POST запросы, это скроет состояние от пользователя но помешает ему нажимать кнопку 'Обновить' в браузере (будет выскакивать непонятное многим сообщение подтверждение повторной отправки данных).
    Ответ написан
  • Не сходится общее время работы HDD и m.2 NVMe почему так?

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

    А nvme почти полностью живет за счет материнской платы и процессора (а значит ОС и драйверов) и не удивлюсь что оно может засыпать (hdd тоже могут но менее агрессивно, так как это механика и постоянные вкл/выкл ей вредят) и не считать время работы
    Ответ написан
    Комментировать
  • Как при загрузки с флешки перенести восстановить windows boot manager windows 10 на НОВОМ диске?

    @rPman
    нужно взять установочный диск windows той же архитектуры и желательно версии (в 10-ой они скопом в одном диске вроде), загрузиться в режиме восстановления, командная строка:
    - создать любыми способами раздел efi boot 128мб (можно в загрузочном диске командной строке diskpart либо я пользуюсь liveusb linux и там с помощью gparted или fdisk) и отформатировать его fat32
    - если используется не uefi метод загрузки но на диске таблица разделов gpt (а не старая dos/mbr) то нужно будет создать раздел bios boot 1мб.
    p.s. размещение этих разделов желательно не дальше 2тб от начала диска
    - восстановить загрузчик написать:
    bcdboot d:\windows /s c: /f ALL
    В данном случае d:\windows это путь до windows каталога, а c: = имя диска efi boot. Порядок и наименования дисков будут отличаться от системы к системе поэтому предварительно посмотреть dir c: на списки файлов, вместо ALL можно написать UEFI если нужно только восстановить запись загрузчика в биосе, ну а BIOS если используется старый метод legacy compatible mode или его еще mbr или dos называют.
    Ответ написан
    1 комментарий
  • Как автоматически очищать кэш у клиента на странице?

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

    Ну а исторически, проблема кеширования при обновлении веб приложений решается заранее, имя файла (или добавлять ?xxx к ссылке) должно содержать хеш от его содержимого, т.е. все файлы проекта (те что в html коде, т.е. js и css) перед деплоем должны пройти переименование и соответствующую правку когда/шаблонов в местах, где переименованные файлы используются.
    Ответ написан
    1 комментарий
  • Необходима автоматическая авторизация на сайте, через один ip-адрес, то есть через прокси с разных устройств?

    @rPman
    Универсально - написать небольшой скрипт для greaseminkey/tempermonkey (расширение для браузера для внедрения в сайт своего скрипта) и организовать какой то способ обмена cookies после авторизации (т.е. какой то веб сервер, где будет храниться куки, откуда ваш скрипт будет запрашивать и соответственно сохранять при успешной авторизации)... Все вполне примитивное (там от слов несколько строк кода), особенно если только внутри локальной сети, иначе придется какую то защиту от злоумышленника на этом сервере.
    Ответ написан
    Комментировать
  • Как создать чат бот для проверки домашних дел у ребёнка?

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

    Можно дообучить модель - классификатор, затратив не сильно много денег (есть google-ские vl модельки от 2b, есть qwen-овские и 2b и 9b и 90b на любой вкус и деньги), но даже в этом случае скорее всего качество распознавания 'в лоб' будет порядка 70% ну и обучающую выборку создавать нужно будет долго и кропотливо, каждый раз снимая фото до и после (желательно много раз с разных ракурсов и в разные моменты уборки).

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

    p.s. а можно не использовать нейронку, а делать фото из одного и того же места (закрепить камеру) и сравнивать фото в момент, когда комната была прибрана и когда нет, по количеству расхождений... а вот что именно сравнивать уже вопрос.
    Ответ написан
  • Как быстро войти в тему разработки ChatGPT, LLM Agent и т.п.?

    @rPman
    Разве эта задача решается легко? а как ее решали до сегодняшнего дня? что является критерием оценки качества беседы?

    У тебя вроде все указано нужное - whisper получает текст, может с временными метками (хз что такое faster-whisper-xxl, есть есть официальная утилита на python - pip install whisper в консоли задаешь модель и кучу параметров и получаешь текстовый файл).

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

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

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

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

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

    upd. настоятельно рекомендую использовать 70b модели (та же qwen или llama3.3 например). При использовании младших моделей, старайся не использовать квантизацию, она их ломает сильнее чем для старших версий... используй 8bit, не меньше.

    Мне нравятся модели deepseek distilled qwen 14b или 32b? 14b с полным контекстом можно запустить на 2x16gb nvidia 4060ti, при этом рекомендую использовать vllm а не llama.cpp (каждая стоит 50т.р. дешевле ну просто некуда) на скоростях с батчингом до тысячи tps (16 параллельных запросов мне давали 800tps ну а vllm при запуске обещал 31k tps)... внимание, промпты и ответ только на английском, но русский вроде понимает
    Ответ написан
    Комментировать
  • Почему скрипт запуска виртуальной машины перестал работать?

    @rPman
    какое красивое садамаза, скрипт запускает сам себя на javascript являясь bat, да еще и внутри powershell, как это читать и отлаживать, известно только его разработчику :)

    И самое главное, вам точно нужно GUI для смены даты? И уж точно для этого не требуется ни powershell ни повышение прав доступа (хотя может у вас там так настроено)

    У virtualbox есть соответствующие команды VBoxManage, которые можно было просто прописать в текстовом файлике, назвать blablabla.bat и запускать
    upd. нужно считать разницу в миллисекундах между текущим временим и целевым, на bat это сложно, поэтому лучше сразу писать на чем то типа javascript, не изобретая паровоза (и от туда же запускать vboxmanage)

    p.s. кайфую с современного ИИ, который это сумел разобрать и по полочкам разложить этот кошмар
    anthropic:claude sonnet 3.5
    ...
    проанализируй этот скрипт для windows, почему тут сместь cmd и javascript, и начни описание, что именно делают первые строчки
    Давайте разберем этот интересный гибридный скрипт:

    Первые строки скрипта представляют собой "полиглот" - код, который может быть интерпретирован несколькими языками программирования:

    ```
    set @x=0; /*
    @echo off
    ver |>NUL find /v "5." && if "%~1"=="" cscript.exe //nologo //e:jscript "%~f0"& exit /b
    ```

    Это хитрая конструкция, которая:
    1. Начинается как cmd-скрипт (`@set @x=0;`)
    2. Открывает многострочный комментарий в JavaScript (`/*`)
    3. Выключает вывод команд в cmd (`@echo off`)
    4. Проверяет версию Windows и если скрипт запущен без параметров, перезапускает сам себя через cscript.exe в режиме JavaScript

    Последняя строка скрипта:
    ```javascript
    */new ActiveXObject('Shell.Application').ShellExecute (WScript.ScriptFullName,'Admin','','runas',1);
    ```
    закрывает JavaScript-комментарий и содержит код для повышения привилегий - перезапуска скрипта с правами администратора.

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

    Основная часть скрипта написана на PowerShell и использует Windows Forms для создания графического интерфейса. Согласно документации [learn.microsoft.com](https://learn.microsoft.com/en-us/dotnet/api/syste...), скрипт создает форму для ввода даты, которая будет использоваться для настройки BIOS времени виртуальной машины VirtualBox.

    Такая сложная структура используется для:
    1. Обеспечения запуска с правами администратора
    2. Совместимости с разными версиями Windows
    3. Комбинирования возможностей разных языков скриптования Windows

    продолжай дальше анализ, почему там еще и powershell?
    PowerShell используется в этом скрипте для основной функциональности, и его часть начинается после строк:

    ```
    ;@echo off
    ;@Findstr -bv ;@ "%~f0" | powershell -noprofile -command - & goto:eof
    ```

    Эта конструкция особенно интересна, потому что:
    1. Использует Findstr для фильтрации содержимого файла, пропуская строки, начинающиеся с `;@`
    2. Передает отфильтрованное содержимое в PowerShell через пайп (`|`)
    3. Запускает PowerShell без профиля (`-noprofile`) для ускорения загрузки

    PowerShell был выбран для основной части скрипта по нескольким причинам:

    1. **Объектная модель**: Как отмечается в [thenewandshiny.com](https://thenewandshiny.com/powershell-everywhere/), PowerShell работает с объектами, а не с текстом, что делает его более надежным для работы с системными компонентами.

    2. **Удобство работы с GUI**: PowerShell позволяет легко создавать Windows Forms для пользовательского интерфейса, что используется в функции `CustomInputBox`

    3. **Управление VirtualBox**: PowerShell предоставляет удобные средства для запуска процессов и управления VirtualBox через `VBoxManage`

    4. **Работа с датами**: PowerShell имеет мощные средства для работы с датами и временем, что критично для этого скрипта

    Важно отметить, что в скрипте используется разделение на Windows PowerShell и PowerShell Core. Как упоминается в [get-powershellblog.blogspot.com](https://get-powershellblog.blogspot.com/2017/10/wh...), это важно учитывать при работе с разными версиями PowerShell.

    Скрипт использует стандартный формат командлетов PowerShell `Verb-Noun`, хотя, как отмечается в [scoop-docs.vercel.app](https://scoop-docs.vercel.app/docs/misc/Why-PowerS...), такой формат может казаться излишне многословным, но он обеспечивает четкую структуру и понятность команд.

    Основная функциональность скрипта:
    1. Создает GUI для ввода даты
    2. Проверяет корректность введенной даты
    3. Настраивает время BIOS для виртуальной машины VirtualBox
    4. Запускает виртуальную машину с модифицированными настройками времени

    какими строчками настраивается время
    В скрипте время настраивается несколькими ключевыми командами:

    1. Сначала отключается синхронизация времени с хостом:
    ```powershell
    start-process $VB_MANAGE 'setextradata', $vmname, 'VBoxInternal/Devices/VMMDev/0/Config/GetHostTimeDisabled 1' -NoNewWindow
    ```

    2. Затем вычисляется смещение времени в миллисекундах:
    ```powershell
    $timeoffset_milliseconds='{0:0}' -f ([datetime]$date - [datetime]::Now).TotalMilliseconds
    ```

    3. И наконец, применяется смещение времени BIOS:
    ```powershell
    start-process $VB_MANAGE 'modifyvm', $vmname, '--biossystemtimeoffset', $timeoffset_milliseconds -NoNewWindow
    ```

    Здесь важно отметить несколько моментов:
    - Используется VBoxManage - утилита командной строки VirtualBox (путь хранится в переменной `$VB_MANAGE`)
    - Смещение вычисляется как разница между желаемым временем (`$date`) и текущим системным временем
    - Параметр `--biossystemtimeoffset` устанавливает смещение времени BIOS в миллисекундах

    После установки времени виртуальная машина запускается командой:
    ```powershell
    start-process $VB_MANAGE startvm, $vmname
    ```

    Похожий подход используется в проекте [github.com/bitbank2/rtc_setter](https://github.com..., где также реализована настройка времени, но для реального RTC (часов реального времени), а не виртуальной машины.

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

    Ответ написан
    5 комментариев