Задать вопрос
  • Как рассчитать "нужды" NPC в числовом виде на основе его требований и инвентаря?

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

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

    Почти наверняка это будет функция с какими то граничными условиями и коэффициентами... твоя задача подобрать эти значения таким образом чтобы например максимизировать время его жизни (или у тебя там другие целевые критерии). Обычно пишут оценочную функцию, так же на основе состояния, которую и максимизируют. Например собирай оценку счастья NPC на основе событий в его жизни, как часто испытывает сытость, как долго живет, с каким количеством других сущностей он контактировал, умножаешь каждый параметр на коэффициент, складываешь и полученную функцию максимизируешь. Есть алгоритмы многомерной (по многим параметрам) оптимизации минимизации (если тебе нужно максимизировать f(x) а алгоритм умеет только минимизировать, то работай с 1/(f(x)+1)). Эти алгоритмы хороши если параметров мало и функция имеет мало ловушек (локальных минимумов).

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

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

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

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

    Области - реверсинженеринг, низкоуровневая оптимизация и низкоуровневая отладка unmanaged кода (т.е. к примеру c,c++). Все это можно встретить и в разработке для микроконтроллеров, и в оптимизации кода для gpu и поиске причины, почему простой цикл кратно работает медленнее из-за вот этой 'безобидной строчки'.

    Но повторюсь, без ассемблера живется неплохо.
    Ответ написан
    9 комментариев
  • Как запретить телефону писать на MicroSD карту?

    @rPman
    Отвечать в лоб на поставленный вопрос - отформатировать карту файловой системой ntfs, если смартфон android то скорее всего он эту fs не будет знать (по лицензионным соглашениям, хотя exfat как то с майкрософт договорились)

    Правильно - разобраться в причинах отвала карты, с высокой вероятностью это аппаратные проблемы, либо карта либо контакты картридера в телефоне
    Ответ написан
    3 комментария
  • Чем технически и физически обусловлена частота обновления ЖК экрана?

    @rPman
    ИМХО
    Исторические наслоения, видеокарты были готовы к тому что монитор будет получать данные покадрово. Считай это не монитор виноват а видеокарты. А те в свою очередь разрабатывались еще со времен DSUB где за переключение они и отвечали буквально (поэтому могли этим гибко рулить). Мониторы теперь это эмулируют, содержат свой буфер кадра и обрабатывают соответственно.

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

    Собственно введение технологий вида g-sync/freesync это отказ от фиксированного FPS и добавление в протокол управления этим процессом со стороны видеокарты.
    Ответ написан
    Комментировать
  • Plex не види медиафайлы?

    @rPman
    в правах, на /media права явно root (от того пользователя, от которого работаешь?) а к samba ты подключаешься под другим пользователем (у тебя там еще guest ok = no стоит), так же нужно будет завести пользователя samba smbpasswd задав тот же пароль что в plex
    Ответ написан
  • На какой nvme ставить ос?

    @rPman
    Винду на более медленный диск, игры и программы - на быстрый.

    Формально, для работы сам системный диск windows может стоять даже на медленном hdd (с оговорками, своп файл тогда перенести), и это повлияет больше на запуск ОС после включения и возможно небольшое понижение запуска приложений если оперативной памяти мало (сейчас это 8Гб и меньше).

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

    @rPman
    А когда спама было много, на сайте было невозможно общаться пользователям, потому что кругом спам, пользователи создадут 3 поста в ленте, а сверху бот 100 постов и т.д.
    это и есть атака DDoS - Distributed Denial of Service. Атака на сервис, в результате которого пользоваться им не получается. В данном случае спам.

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

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

    @rPman
    Вы используете tcp, значит организовать можно как угодно, 'биты будут сочиться'

    Мало того, чтобы утилизировать несколько сетевых устройств, потоки создавать не обязательно, если использовать асинхронные сокеты (в linux это зовется неблокирующие, флаг socket() - SOCK_NONBLOCK), любым удобным для вас инструментом, то простая передача данных не потребует особых ресурсов и спокойно отработает на одном ядре (исключение - 10+гбитный поток, ну может речь уже должна идти о 100+гбит? это на грани возможностей железа и для него нужно использовать специализированные инструменты, предоставляемые сетевой картой, а значит про tcp придется забыть, хотя хз может там все уже удобно сделали)
    Ответ написан
    Комментировать
  • Какова разница потребления электроэнергии в ПК и Мини-ПК?

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

    Соответственно никакой разницы по энергопотреблению, про сравнении с теми же комплектующими - нет.

    p.s. осторожно, мини-пк обычно хуже отводят тепло, это особенность плотной компоновки, при нулевой нагрузке это не страшно, но если сервер на долго будет нагруженным, система охлаждения может не справиться (это вопрос к производителям этого ПК, учли ли они это, а так же к софту и настройкам ОС)
    Ответ написан
    Комментировать
  • Зачем в образ 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 комментария