• Почему bat-файл не запускает нужную программу?

    @rPman
    У тебя слеши между именами дисков, каталогов и файла в пути не в ту сторону, в windows нужно использовать '\'

    Еще момент, но в данном случае он не должен быть причиной, первым аргументом start.exe - должен быть заголовок окна, если запускается консольное приложение, это вылезает, если путь с программой заключить в двойные кавычки, например чтобы экранировать пробелы в именах, start запустит просто cmd.exe с заголовком с указанным путем, и рекомендуется сразу этот заголовок указывать, например пустым:
    start "" "d:\New Folder\My program.exe"
    Ответ написан
    2 комментария
  • Какой библиотекой открыть odt и заменить в нем текст по поиску?

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

    Неправильный но простой и быстрый способ, это открыть файл как zip архив, найти в нем content.xml и отредактировать, он текстовый (точнее xml), если делать все аккуратно и следовать формату xml, обычная замена текста не потребует даже обработки по правилам xml.
    Ответ написан
    Комментировать
  • Как отобразить окно активной машины virtualbox?

    @rPman
    Проблема странная, в virtualbox есть режим headless но в него нужно входить специальной командой из консоли, только тогда появится пункт меню но до выключения, меня появляется при попытке закрыть окно с машиной или по правой кнопоке меню Стоп.

    Как частное решение именно в твоем случае, я рекомендую включить rdp доступ к машине, и подключаться с помощью клиента удаленного доступа (штатная утилита windows)
    Ответ написан
  • Как написать программу для решения уравнения на C#?

    @rPman
    Зачитываешь данную формулу буквально, функция равна тому то если выполняется такое условие, иначе равно другому если другое условие... максимально подробно, не упуская ни одного момента.

    Затем практически каждое слово можно перевести в программу (можешь промежуточно алгоритм нарисовать если тебе так удобнее)

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

    p.p.s. формулу то хоть читать умеешь?
    Ответ написан
    5 комментариев
  • Как работает static final?

    @rPman
    static по определению, без каких либо final и прочего, это поле класса а не экземпляра, сколько бы ты экземпляров объекта не создал, переменная будет одна и та же. Ты можешь (будешь) обращаться к этой переменной даже не имея экземпляра, т.е. ClassName.static_member_name, но конечно синтаксически ты можешь обращаться к статическому члену и через экземпляр объекта object_variable.static_member_name.

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

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

    Единственная причина выбирать ноутбук для работы - вынужденная мобильность.

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

    Ноутбуки и планшетники это устройства потребления контента
    Ответ написан
    Комментировать
  • Авторизация через аккаунт google?

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

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

    @rPman
    Вот так не работает?
    Newtonsoft.Json.JsonConvert.DeserializeObject<List<MyClassWithCode>>(строка_с_json)


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

    int[] собирай уже сам

    в этом случае ты сможешь обрабатывать огромный json файл массив последовательно
    тут пример как вручную не следить за объектом в процессе
    Ответ написан
    4 комментария
  • Как Узнать откуда с какого сайта перебросило на ссылку?

    @rPman
    Под ссылке никак, владелец веб сервера m.olimp.bet может смотреть по referer в логах сервера
    Ответ написан
    Комментировать
  • Как правильно расставить права на файлы и директории сайта на VPS?

    @rPman
    Первое число - права для владельца, второе число - на группу, третье - для всех
    5 и 7 отличаются от 6 и 4 тем что там установлен бит x - executable, его нужно ставить на каталоги, но на файлы не обязательно (их ставят на скрипты и бинарники, которые нужно запускать, и в случае скриптов это не обязательное условие, просто запуск +x файлов возможен просто указанием файла /path/file)

    5 - права на чтение и запуск, 7 - права на чтение+запись и запуск, 4 - права только на чтение, 6 - права на чтение и запись.

    скорее всего у тебя по каким то причинам на скрипты твоего бакэнда требуется +x флаг, у тебя там cgi?
    почему у тебя работает? потому что ты ставишь 5 на всех пользователей.

    Веб сервер работает от пользователя www (или apache или http что там у тебя настроено) а файлы ты скорее всего заливаешь от пользователя root или какого ты создал пользователя для работы

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

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

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

    @rPman
    Проблема византийских генералов, решалась в криптовалютах, успешно только с помощью proof of work.

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

    Если обнаружено расхождение состояний при минимум двух частниках, то игра заканчивается, при трех и более участников можно считать истинными тех участников, количество одинаковых состояний у которых наибольшее, если это определить нельзя - игра заканчивается, иначе возможно исключение виновников
    Это позволит решить:
    * необходимость бороться с подтасовками (изменение своего баланса)
    * необходимость бороться с клеветой (изменение чужого баланса)

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

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

    @rPman
    sox (штатно идет с любым linux), если я верно понимаю ключ synth
    Ответ написан
  • Можно ли комфортно играть с внешнего SSD по usb?

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

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

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

    Худший вариант можно проверить, вставив usb3 флешку и сравнить скорость чтения с нее с заявленными производителем, если она будет ниже, то это будет твоя планка (правда у флешек скорости обычно значительно ниже чем у ssd), с высокой вероятностью дешевый ноутбук с usb3 даст сотню мегабайт/сек, это хуже ssd в разы (а nvme на пару порядков).
    Ответ написан
    4 комментария
  • Что делать если лагает видео в режиме "картинка в картинке" после смены видеокарты?

    @rPman
    Драйвера нужно переустанавливать при смене устройства, даже если они ранее были уже установлены, одно время для amd драйверов требовалось даже удалять предыдущие с перезагрузкой, иначе нормально новые не устанавливались (повторяю, даже если это те же самые драйвера с того же установочного файла), это особенность подсистемы драйверов windows
    Ответ написан
  • Как опубликовать программу?

    @rPman
    Тебе нужен vcredist, об этом говорится в документации, подбираешь под свою версию студии и архитектуру, под которую собрано приложение.
    Это намеренно созданное усложнение от майкрософт с целью
    иметь возможность что-нибудь требовать от разработчиков (ведь распространять этот пакет по лицензии нельзя), то же самое есть и для других фреймворков и сред разработки, например у borland c++/pascal но там компания логично не могла бы включить эти компоненты в поставку windows.

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

    я помню с юридической точки зрения об это споткнулись когда народ в wine запускать приложения начал, причем эта ловушка как бы не используется на практике, но юридически оставляет за компанией возможность нажать на любую компанию разработчика, и скорее всего это активно практикуется, втихую
    Ответ написан
    5 комментариев
  • Альтернативы бд пайтон?

    @rPman
    sqlite3 база данных это буквально файл. Для переноса базы данных требуется тупо скопировать один файл.

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

    Открываешь документацию с примерами и читаешь как
    Ответ написан
    4 комментария
  • Что означают такие параметры при авторизации на сайте? Как перейти дальше на главную страницу при помощи python requests?

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

    В обычной ситуации для авторизации требуется 3-4 поля с данными.

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

    @rPman
    ты отключи сначала mdadm, он же монопольно держит диск и не отдает (но тогда должны были бы быть ошибки!)
    cat /proc/mdstat
    выдаст что то типа

    Personalities : [raid1] [raid6] [raid5] [raid4]
    md1 : active raid1 sdb2[1] sda2[0]
    136448 blocks [2/2] [UU]

    md2 : active raid1 sdb3[1] sda3[0]
    129596288 blocks [2/2] [UU]

    md3 : active raid5 sdl1[9] sdk1[8] sdj1[7] sdi1[6] sdh1[5] sdg1[4] sdf1[3] sde1[2] sdd1[1] sdc1[0]
    1318680576 blocks level 5, 1024k chunk, algorithm 2 [10/10] [UUUUUUUUUU]

    md0 : active raid1 sdb1[1] sda1[0]
    16787776 blocks [2/2] [UU]

    unused devices:

    определяешь какой из массивов из твоихдисков попытался построиться (но не смог скорее всего) и делаешь ему stop
    mdadm --stop /dev/md1

    и вот тогда уже манипулируешь с дисками и стираешь их
    Ответ написан
    Комментировать
  • Как ввести ограничения для использования сети для windows10?

    @rPman
    Штатно задача решается с помощью cgroup, но настраивать сложно.
    Просто - виртуализация или паравиртуализация lxc (собственно это фактически gui к cgroup).

    Недостатки виртуализации - придется заморочиться с настройкой gui, обычная виртуализация будет работать но 3d ускоритель не будет доступен и можно встретить проблемы даже с проигрыванием видео выше fullhd@30

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

    Кстати snap предлагает так же систему контейнеризации приложений, основанную на cgroup, т.е. установив приложение из snap оно уже сидит в своей песочнице, и ей нужно выдавать соответствующие права для доступа ко всему, от принтера до файлов на диске (рабочая директория пользователя доступна но все иное кроме root нет, т.е. нет флешек, нет смонтированных дисков и т.п.). В ubuntu firefox например уже поставляется в snap.
    p.s. лично мне не нравится, но скорее всего я не умею его настраивать

    Для доступа к gui из lxc песочницы есть 2 способа, настроить доступ к xserver (при использовании xubuntu например) или использовать ssh с ключом -X, в этом случае песочница воспринимается как удаленная машина и трафик gui шифруется и сжимается как бы по сети (правда localhost)

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