• Зачем в образ docker в качестве первого слоя устанавливают linux дистрибутив?

    @rPman
    Потому что за установку и использование windows (а в виртуалке так еще и лимиты на версии) компания майкрософт требует деньги, много, жадно. Нормальная ситуация - десяток одновременно работающих docker образов и сотня, ожидающие запуска, вы готовы за каждый платить порядка 20$ в месяц?

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

    А еще windows даже на синтетических бенчмарках в большом количестве задач - медленнее (есть объективные и не очень причины почему так)... извините, но windows живет только благодаря легаси, пока крупные поставщики софта по инерции будут требовать windows (невозможно чаще всего перенести на другую ос но есть лазейки), компания будет держаться на плаву... как только наберется критическая масса - этот монстр потонет, погребая за собой много хороших проектов (например monodevelop был убит как конкурент vs?)
    Ответ написан
    3 комментария
  • Как восстановить данные с флешки после обновления ядра Linux?

    @rPman
    Немедленно прекратить что либо делать с флешкой, так как любые глупые действия кратно уменьшают вероятность восстановления.
    /dev/sdb1 лежит папка lost+found
    значит файловую систему отформатировали, это значит удалена информация о файловой системе и начальном каталоге.

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

    Что нужно сделать, чтобы восстановить данные самому:
    Первое, снять посекторную копию с диска, причем не раздела а всего диска.. Делать это можно с помощью утилиты dd, внимательно смотреть на сообщения и понимать что они говорят.

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

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

    P.s. весь интернет завален напоминаниями делать бакапы. Помните того парня, что год копался на помойке, а поисках диска от ноутбука? Но нет, люди продолжают хранить важные данные в одной копии на флешке! Которая умирает просто от лежания в ящике просто потому что технология такая
    Ответ написан
    1 комментарий
  • Возможно ли создать такую программу, которая позволила бы просматривать торент файлы в которых содержаться видео и фото, или пдф файлы, или html?

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

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

    Поэтому самое простое в реализации - это создать ramdisk в оперативной памяти и указать торент клиенту его как место для загрузки файла. Почти все торент клинеты умеют загружать выбранные файлы из торент (или даже части). Для этого подойдет любой headless torrent демон или web api к обычному, и допиливаешь до желаемого.

    Ну и конечно, берешь libtorrent и реализуешь все желаемое, в любой форме.
    Ответ написан
    Комментировать
  • Будет ли совместим монитор 2К с моим ноутбуком Asus K53SD?

    @rPman
    С высокой вероятностью нет, в мануале нет информации о версии hdmi (а на сайте асус даже нет технических характеристик), видеокарта умеет 2k в режиме dual link dvi но у тебя только один разъем hdmi (можно конвертировать hdmi->dvi пассивным переходником) и само собой монитор должен тоже это уметь.

    Этот ноутбук из тех времен, когда hdmi не умели передавать 2k и 4k и поэтому были хаки на основе передачи видео по двум hdmi/dvi...
    Ответ написан
    1 комментарий
  • Какую карту видеозахвата лучше взять?

    @rPman
    отзыв про espada:
    Всё выглядит, как на VHS кассете, только в 1080р.

    есть вероятностью что это проблемы настроек но маленькая.

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

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

    Если у вас нет никакого ip адреса, то либо покупать его у провайдера либо использовать vpn сервер (не рекомендую этот вариант, он добавит лаги, критичные для майнкрафт серверов), который этот ip адрес будет выдавать. напомню, что уже несколько лет как ipv4 испытывает заметный дифицит, и выдавать его налево и направо бесплатно провайдерам уже не так просто, и даже облачные провайдеры продают его за порядка 100 рублей в месяц +-.
    Ответ написан
    Комментировать
  • Как запустить LLM на встроенной видеокарте?

    @rPman
    На встроенной видеокарте не запустить большие языковые модели, потому что не хватит оперативной памяти. Но даже если умудриться выделить в биосе для встроенной gpu нужный объем памяти, работать это будет медленнее чем llama.cpp на процессоре.

    При использовании llama.cpp требования можно снизить за счет квантизации (на самом деле код есть и для python tensorflow реализации, но там не так удобно все организовано, придется изучать и ковырять), но даже в этом случае начальный обем vram где то 8Gb (с 4бит квантизацией и 7B модели, будут работать плохо, минимально рекомендованная это 5_1 квантизация, штатный tensorflow код с которым релизятся модели, без проблем умеет 8бит квантизацию), не жди от 7B моделей хорошего качества, и тем более при использовании квантизации, они и так уже уменьшены по максимуму.

    p.s. llama.cpp умеет часть матриц переносить в gpu, это имеет смысл если vram не хватает чуть чуть, т.е. модель влезает почти полностью добавляй ключ --n-gpu-layers N где N число слоев нейронки, которые нужно перенести в vram, подбирать экспериментально пока не начнет ругаться на нехватку памяти.

    скорее всего тебе придется пересобрать ее с ключом OPENBLAS или CLBLAS
    mkdir build
    cd build
    cmake .. -DLLAMA_BLAS=ON -DLLAMA_BLAS_VENDOR=OpenBLAS
    cmake --build . --config Release

    (полистай документацию возможно еще ключи добавлять)
    Ответ написан
    Комментировать
  • Каков уровень надежности подключения SSD дисков по NVMe?

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

    Т.е. если один разработчик будет создавать серверное железо sata с гарантиями, а другой будет для десктопа подешевле клепать nvme - то первый с большими шансами будет надежнее.

    Если говорить с точки зрения технологии то nvme на порядок надежнее, потому что проще, в нем значительно проще контроллер, большую часть работы там вообще перенесли в процессор и оперативную память компьютера. Вся идея nvme была разместить память поближе к процессору без посредников, прямо на шину pci-e и за счет этой простоты достигается высокие скорости и относительно низкая цена.
    Ответ написан
    1 комментарий
  • Нужна нейросеть, которая сможет выбрать оптимальный вариант удаления фона?

    @rPman
    Универсально таких нет

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

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

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

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

    @rPman
    Конечно возможна, мало того разрушаемые здания были реализованы порядка 15 лет назад (red faction: guerilla) и да это не воксельная графика!

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

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

    p.s. реализовать правильное разрушение в сетевой игре можно но опять все споткнется об оптимизацию и работу с нетиповым железом пользователей... в попытке оптимизировать нагрузку потеряется точность вычислений и результат расчета будет расходиться на машинах с разным железом (особенно если речь идет о разных вендорах intel/amd/nvidia)
    Ответ написан
    Комментировать
  • Какие драйверы нужны при установке win10 на vds?

    @rPman
    Драйвера интегрируют в установочный образ с помощью ntlite, но я не уверен что virtio драйвера это могут.

    Настоятельно рекомендую установить систему дома в kvm (ванную именно этому систему виртуализации), настроить сначала на типовом железе, потом добавить virtio устройства и доустановить драйвера, и уже затем оставить только их. Позже можно перенести установку любым инструментом резервного копирования.
    Ответ написан
    3 комментария
  • Есть ли реальная необходимость использовать Git LFS?

    @rPman
    Мое мнение - абсолютно бесполезен (из-за особенностей реализации и избытка функционала).

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

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

    git-lfs работает очень не эффективно, банальный git clone репозитарием из 20-гигабайтовых файлов требует сравнимый объем оперативной памяти, потому что там на любой файл идет diff/patch, что бессмысленно для бинарных файлов в подавляющем большинстве случаев.
    Ответ написан
    Комментировать
  • Как вывести double число c определенным числом знаков ДО ЗАПЯТОЙ и После в сумме?

    @rPman
    Преобразовываешь в строку toString и берешь первые n символов подстроки Substring

    p.s.
    идеально выровненные числа вывести
    это отвратительно выровненные числа, пользоваться этим будет невозможно

    правильно выравнивать числа по правой стороне, зафиксировав количество знаков после запятой (что бы разделительная точка была на одной линии
    1 322.0000
      133.4400
       12.4440
        0.3333
    Ответ написан
    Комментировать
  • Администрирование сервера, вопрос про ssh - пользователи и screen сеcсии, как правильно использовать?

    @rPman
    Если сделаете следующий шаг в изучнеии, screen умеет создавать по нескольку терминалов, запуская в каждом свое приложение, начните с хелпа ctrl+a, ? (это последовательность нажимается отдельно), например ctrl+a,c - создание нового, ctrl+a, a - переключение на предыдущее, ctrl+a, " - выводит список с возможностью выбора стрелками...

    И вообще, зачем тебе в данной ситуации screen мне не ясно, у тебя бот по stdin принимает команды управления? Обычно необходимы возможности - посмотреть логи stdout/stderr и перезапустить, все это решается другими средствами. Логи перегаправляются в файлы, а процессы убиваются kill. Есть штатный механизм служб в операционной системе systemd, где и логи, и перезапуск, и отслеживание ошибки (скрипт 100500 раз быстро перезапускается)... если лень все это настраивать можно запилить свое на базе штатного nohup и bash скрипта (а точнее однострочника) для автоперезапуска приложения:
    nohup bash -c "bash_loop_pid=$$;while true;do myscript >myscript.log 2>myscript.err;sleep 1;done" &

    nohup запускает приложение, которое не будет остановлено по закрытию сессии ssh (больше к ней доступа не будет), символ & в конце заставляет делать это в фоне, кстати он же создаст nohup.out куда будет вывод записан
    bash -c это чтобы запустить скрипт while
    $$ - вернет pid этого bash скрипта, обслуживающего цикл while (в примере в переменную bash_loop_pid) если понадобится остановить этот бесконечный цикл
    while - будет в цикле перезапускать скрипт, с паузой sleep в 1 секунду
    myscript >myscript.log 2>myscript.err - запуск скрипта с перенаправлением сообщений в файлы
    В другом окне можно кратковременно запускать:
    tail -f myscript.log
    и это будет выводить новые строки из файла с ожиданием их

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

    Обычно для штатного перезапуска скриптов добавляют секретный api ключ, команду боту на перезапуск, которая просто вынудит его завершить работу, чтобы не лезть в консоль (консоль это если все повисло и не отвечает).
    Ответ написан
    5 комментариев
  • Почему выдается ошибка sql во время импорта данных?

    @rPman
    Access denied for user
    пользователю (в mysql это пара 'юзер%хост') не выданы права на вызов insert, 'обратитесь к вашему администратору базы данных', вполне возможно пользователь был верно настроен для создания резервной копии (требуется только чтение) а на модификации нет
    Ответ написан
    Комментировать
  • Как веб-разработчикам обеспечить хорошую производительность CSS на устройствах начального уровня?

    @rPman
    Совет. Смартфоны и планшетники из mid-end и low-end (самые дешевые или 3-5 летней давности) по производительности сравнимы с десктопными компьютерами 10-летней давности или даже раньше

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

    Можно использовать пессочницы типа debian noroot/termux/... которые позволяют поставить xorg сервер на android и запускать десктопные приложения без особых ограничений (поддержка ускорителя с оговорками но полагаю если речь и рендерере css и svg то тут все сравнимо), это не виртуализация, а нативный запуск приложений (соответственно arm архитектуры).
    Ответ написан
    Комментировать
  • Для чего выполнять функцию в assert?

    @rPman
    assert будет вызван только когда сборка проекта в отладочном режиме и будет проигнорирован в релизе, т.е. переменная _debugIsSelecting будет true для режима release и false - для debug, после вызова этого assert
    Ответ написан
    Комментировать
  • Варианты объединения двух мониторов в один виртуальный?

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

    Я нашел упоминание о лимите в 10 мониторов у win10 но этот лимит исключительно в штатном интерфейсе и с помощью сторонних приложений его можно обойти, с ходу не нашел как и какой там максимум.

    В linux как я понял лимит на количество мониторов xorg сервера 16

    Но есть другая проблема - в генерации этого контента, я встречал упоминание лимита в 8к пикселов по любой оси, т.е. ты можешь поставить 10 мониторов в ряд в линию, но суммарное разрешение не должно превышать 8к (точнее, как я понял речь идет о 7680). Т.е. если приложение должно быть готово генерировать контент сверх этого лимита, выделяя к примеру по окну (возможно даже в своем virtual desktop с точки зрения win32) на каждый кусок изображения или вообще в оперативной памяти по своим правилам.

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

    Точно помню были библиотеки для microsoft rdp, когда ты транслируешь часть экрана виртуального рабочего окна на удаленную машину, т.е. ты можешь запустить сразу несколько трансляций на разные машины, где мониторы объеденены в большой экран до лимита . Само собой libvnc то же самое позволит.. ну тут вопрос в предельно допустимых лагов и возможностей сетей.

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

    @rPman
    Это называется кросскомпиляция, формально она возможна, так как промежуточно nuitka генерирует c++ код, и его уже после компилирует с помощью gcc, который в свою очередь умеет и разные архитектуры и разные ос (с оговорками).

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

    Нужный тебе issue все еще открыт, но там обсуждают как это сделать.
    Ответ написан
    Комментировать
  • Как избежать повтора в запросах многие ко многим?

    @rPman
    Left join, оставит записи из левой части, где обычно базовая таблица, а справа подчинённые и справочники (если порядок другой то right join)
    Ответ написан
    Комментировать