• Авторизация через аккаунт 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)

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

    @rPman
    Rsync прекрасно работает на windows, как нативный так и wsl, очень небольшие различия в символических ссылках, на windows они только на каталоги, а на файлы только жёсткие...
    Ответ написан
    Комментировать
  • Как перенести базу данных из СУБД Postgresql в MySQL?

    @rPman
    Если ты программист, то написать программу в 10 строчек, копирующую содержимое заданной таблицы из одной базы в другую для тебя не должно быть проблемой. Как минимум на php с использованием PDO проблем не возникнет.

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

    p.s. экспортировать и импортировать данные в своем формате умеют некоторые универсальные GUI для баз данных, например та же WorkBench, там тоже можно сделать экспорт отдельно в виде insert-ов и отдельно структуру.

    p.p.s. ну перенесли вы данные, но данные это самое легкое, запросы тоже переносить нужно, а вот тут совместимость может быть слабая.
    Ответ написан
    Комментировать
  • Какая сфера в IT/яп лучше подходят для работы параллельно с учебой?

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

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

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

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

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

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

    Облако таких точек выгружается в трехмерный редактор (или в этом же приложении) и соединяется поверхностями так же в полуручном режиме.

    К сожалению я не могу сказать, в каком именно софте можно найти подобный функционал. Почти наверняка дорогие профессиональные версии это умеют. Погугли бесплатные программы типа colmap, meshroom, micmac, regard3d, visualsfm, openmvg.

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

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

    Если твой автомобиль угловатый, имеет только углы и ровные поверхности (и их не много, а-ля кибертрак от теслы) то возможно такого маленького количества фото хватило бы. Но чем больше неровностей на объекте, тем больше фотографий под разными углами нужны, чтобы можно было бы что то сделать... грубый пример, каждая неровность должна хотя бы на одной фотографии попасть на контур.
    Ответ написан
    1 комментарий
  • Как получить доступ к lvm vg на iscsi таргете?

    @rPman
    Ты можешь раздавать не диск целиком, а отдельные разделы (vg volume) но монтировать такой диск будет проблематично из windows (на сколько я знаю он не умеет работать с диском как разделом)

    надеюсь ты понимаешь что на запись одновременно к одному и тому же разделу нельзя подключаться? даже нельзя подключаться в режиме readonly если раздавать для записи.
    Ответ написан
    Комментировать
  • Как сделать так чтоб хвост змейки двигался по направлению головы winforms C#?

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

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

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