Задать вопрос
  • Как, используя PHP, скачать страницу с динамической подгрузкой?

    @rPman
    У тебя 2 основных способа:
    1. разобраться в том как работает этот сайт, какие http запросы отправляет, как их собирает (можно отследить в инспекторе в браузере по F12 закладка network, можно сохранить запросы в json . har файл и анализировать позже, в худшем случае придется анализировать js код) и написать свое приложение, которое будет отправлять те же самые запросы, библиотек полно, например curl, есть одноименная утилита так и поддержка в языках программирования, в т.ч. на php, кстати в инспекторе браузера, нажав правую кнопку мыши на запросе можно скопировать curl команду для его повтора.

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

    2. используя полноценный браузер, например инжектить свой javascript на его страницу с помощью расширения или вставив код прямо в консоль, или используя удаленное управление из своей программы, например selenium

    этот подход заметно проще, например javscript который будет нажимать на кнопку Подписаться на странице хабр qna:
    $('.btn_subscribe').click()
    Помимо всего, этот способ позволяет обойти большинство защит от автоматизации, так как это буквально кликать мышкой по кнопкам но главный недостаток - на каждого пользователя будет требоваться полноценный браузер (иногда можно сэкономить), что очень затратно по ресурсам
    Еще одна проблема этого способа - нет универсального способа определить момент, когда окончилась загрузка страницы, в каждом случае придется выявлять самостоятельно критерии (например появление определенного html элемента), большинство просто выставляют таймаут по больше, но если будут проблемы с интернетом или на стороне веб сервиса, этот подход даст сбой.
    Ответ написан
  • Почему после синего экрана не удается запустить windows 10?

    @rPman
    Изначально была проблема в синем экране.

    Изначально нужно сказать - 'Вот работало, я сделал что то и появился синий экран'. Что произошло между 'работало' и 'перестало'?
    Я решил переустановить Винду,а именно при запуске нажать ф5 и снести диск под ноль
    чистая установка (сброс до заводских настроек) дает с высокой вероятностью гарантии что причина проблемы не программная а аппаратная

    Чтобы окончательно удостовериться что конфиг более менее рабочий (и причина точно в драйверах или комбинации программ) - запусти livecd linux, да это не совсем в полной мере позволит протестировать GPU (хотя есть способы) но даст хоть какой то ответ (например на случай если проблему создал именно windows)
    Ответ написан
    Комментировать
  • Платёжную систему на сайт, какую выбрать?

    @rPman
    Пользуйся криптовалютами, стейблкоины, размещенные на блокчейне можно отслеживать без необходимости их пересылать 'сайту'
    Ответ написан
    Комментировать
  • Как правильно пропарсить лабиринт в граф?

    @rPman
    Лабиринт в форме - ячейка это либо стена либо проход (0/1)?

    Заводим класс - 'Вершина графа', ребра которого - его параметры ссылок на Смежные вершины, для каждой стороны вверх, вниз, налево и направо. Если нужно выявление замкнутых подмножеств, то добавляем параметр - номер подмножества (значение 0 - неизвестно)

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

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

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

    @rPman
    Важно как ты получаешь уведомление об окончании просмотра, колбек должен отправить рекламная сеть
    https://support.google.com/admob/answer/9603226?hl=ru

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

    Если всю информацию о игроке хранить на сервере, то мест где можно схитрить не будет, максимум пользователь может не видеть рекламу, но время ждать придется
    Ответ написан
    Комментировать
  • Стоит ли делать кэширование результата запроса из бд?

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

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

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

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

    Вот от сюда и думай, что хранить, где хранить надо ли делать запрос в базу или можно из памяти и т.п.
    Ответ написан
    2 комментария
  • Как сделать бекап ubuntu 18.04 для удаленного развертывания из образа?

    @rPman
    Не каждая вас такое позволит, например на базе kvm можно простым tar сделать копию

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

    Не kvm (типа openvz/lxc с паравиртуализацией) может создать проблемы, с восстановлением, смотреть по месту

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

    @rPman
    Хост - однозначно linux, это на случай совсем проблем с windows (получить мертвую виртуалку гораздо безболезненее чем получить в принципе мертвый парк машин), либо готовый xen либо kvm, можно даже virtualbox (вот уж с чем справится любой будущий админ но не рекомендую), мне нравится не готовый гипервизор а полноценный linux с запущенным на нем libvirt, машины можно настраивать как с полной виртуализацией так и lxc контейнеры.

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

    По отказоустойчивости, если сеть между машинами выше гигабит, можно настроить файловый кластер (любой), виртуальные машины спокойно будут мигрировать в пределах кластера по клику, но из коробки красиво обычно все это доступно только если хранилище на NAS (iscsi), иначе ручками. Баы данных (sql) при наличии возможности настройки master-slave/master репликации, лучше держать не на кластерной fs, да в этом случае восстановление после сбоя потребует больше телодвижений, но эти решения просто эффективнее и шустрее работают.

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

    Бакапы инкрементальные на nas, любыми средствами, можно как средствами хост машины так изнутри виртуалки (если сеть гетерогенная получится, то будут разные инструменты для win и для linux, но зато не будет привязки к гипервизору, что очень полезно в долгосрочной перспективе)

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

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

    @rPman
    stream remote должен быть запущен внутри виртуальной машины
    но в принципе этот способ будет давать накладные расходы виртуалки (10%-30% на cpu и вплодь до невозможности игры из-за gpu)

    настоятельно рекомендую вместо запуска игры в витуалке запустить ее нативно, использовав на выбор:
    1. ibik aster, никакого удаленного управления по сети, нативная работа игр и программ, десктопная версия windows (не серверная) при этом из мощного компьютера легко можно сделать с 10 рабочих мест (на самом деле без ограничений, сколько железо позволит), достаточно подключить нужное количество мониторов, клавиатур и мышек, 10-20 метров без особых затрат (дальше понадобятся удлинители, например при 100 метрах цены в 10-20 т.р. только за кабель монитора). Умеет работать с 1 gpu (когда то давно так успешно запускали какую то ммрпг на двоих)
    Недостаток - одновременно одна и та же игра может не запуститься, так как к этому не готовы античиты (но советую все же попробовать, запускать игру под разными пользователями windows, установив ее в разные каталоги, да неэффективно по месту на диске, но в частных случаях это тоже можно решить)
    2. ibikaster + steam remote - то же самое, только игровое место транслируется с помощью steam (мне кажется у них самый эффективный алгоритм трансляции видео в пределах локальной сети)
    3. rdp - штатный протокол удаленного управления, не всякая 3d игра сможет корректно использовать видеоускоритель, если будет запущена в окне удаленного рабочего стола, но к примеру старые 2d игры вполне идут, отзывчивость в таком режиме, при наличии хорошей локальной сети (гигабит) - очень хорошая
    ограничение десктопных windows на одновременное подключение снимается утилитой rdpwrap

    p.s. одновременно несколько рабочих мест как ibik aster можно сделать бесплатно на linux с помощью ее штатного инструмента multiseat (на каждое рабочее место своя видеокарта) а с помощью xserver xephyr и в пределах одной видекарты (но придется поковыряться), а там возможно ваша игра уже поддерживается официально (вот к примеру только что в офф стим клиенте установил ark survival ребенку, идет даже шустрее чем на win) или не официально с помощью wine (но античит почти наверняка помешает)

    Ну и штатно xserver умеет транслировать видео по сети (поковырять настройки, убрать шифрование и сжатие), я помню очень давно для теста запускал кажется quake, оно в принципе работало и даже не лагало (просто не высокий fps) отзывчивость была явно выше vnc/rdp, но там использовался ускоритель клиента, сейчас наверное это можно как то настроить
    Ответ написан
    2 комментария
  • Если я в Гугле изменю свое местоположение, то смогу ли я зайти к примеру в Инстарграм? То есть будет ли работать смена геолокации как VPN?

    @rPman
    в 99.9999% случаев нет
    каждый сервис самостоятельно определяет твою геолокацию и не только по ip адресу или тому что ты укажешь в профиле

    ну а в данном случае гугл никак не связан с инстаграммом, а значит смена каких либо настроек в аккаунте гугла не повлияет
    Ответ написан
    1 комментарий
  • Как лучше сформулировать sql-запрос для поиска по историческим данным?

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

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

    @rPman
    Судя по описанию вместе с панелью уже идет инвертор на 1500ват 220вольт, но так как не сказано какой он там, лучше спросить об этом продавца
    Так же тебе понадобится аккумуляторная батарея (в нормальном инверторе они идут внутри но на картинках нарисовано что батарея тут внешняя)

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

    На 220 выходить надо когда у тебя мощности в среднем у батарей будут от полукиловата, а так лучше старайся все от 12/24в питать, благо автомобильные блоки питания есть наверное для всего (а на 50ватт у тебя наверняка 1-2 потребителя плюс смартфоны)
    Ответ написан
    Комментировать
  • Как скрывать часть ссылки в адресной строке?

    @rPman
    На php это делают на строне сервера, обычно этим занимается сам веб сервер а не бакэнд, например к apache mod_rewrite, к nginx мод rewrite

    На javascript напрямую так делать нельзя, ведь сервер должен все равно должен понимать ссылку /coil и возвращать ту же страницу что и /a/coil но если у тебя SPA (single page application) и генерация контента происходит на стороне клиента, то почти наверняка ссылки у тебя уже будут site.com/#a/coil а значит подмену нужно будет делать прямой перезаписью в window.location.href
    Ответ написан
    2 комментария
  • Можно ли в Беларуси зарегистрироваться в Oracle Cloud Free Tier?

    @rPman
    для free tier хоть у oracle хоть у amazon нужно вводить свою банковскую карту (это такой способ авторизации у них), в этот момент тебе откажут

    если тебе нужна сверх дешевая слабая vps-ка, топай на lowendstock, выбирай машину, смотри, если ли там оплата криптовалютой (а в случае низких цен лучше bitcoin lightning) и пользуйся. Осторожно, сверх дешевые машины 'оверселят не по децки', т.е. будут слабые медленные и не надежные, но всеравно можно под задачу найти очень дешевый вариант, у меня одна машина годами оплачивается по 16$ в год криптовалютой, слабая но скрипты спокойно работают, а 3-баксовая в месяц так вообще отличная (брал для скриптов с высоким сетевым трафиком)
    Ответ написан
    Комментировать
  • Как можно определить отправил ли пользователь больше 3-х раз одну и туже команду?

    @rPman
    Если один пользователь нажимая на кнопки может вызвать ddos у бота, то что то не так ты там сделал

    на практике достаточно пользователю ограничить нажатие кнопки чаще чем определенное количество за N секунд, для этого сохраняешь в боте последние нажатия с timestamp их нажатия не больше time()-Nsec, и если количество записей в этом списке больше лимита (например 10) - возвращаешь сообщение - 'я тебе потыкаю, не тыкай мне'
    Ответ написан
    Комментировать
  • В чем сделали это?

    @rPman
    это называется deep fake, первый же результат из гугла (инструкцию не проверял)
    Ответ написан
    1 комментарий
  • Есть SSD согласно CrystalDiskInfo с ним все "Хорошо", но по факту нет, как можно ещё проверить диск?

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

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

    @rPman
    Подключай свой телефон к компьютеру по usb кабелю, с помощью adb настраивай перенаправление портов на твою прокси и пользуйся
    adb forward tcp:6100 tcp:7100
    adb reverse tcp:80 tcp:3000
    эти команды настраивают в разные стороны перенаправление портов, т.е. смартфон может подключаться к vpn через кабель через локальный интернет машины, и так же к прокси на смартфоне можно подключиться через форвард
    Ответ написан
    Комментировать
  • Что расходует ресурс диска?

    @rPman
    https://habr.com/ru/post/476414/
    собирай статистику работы с диском по процессам

    сам nginx только пишет логи, но что делают сайты на php 'одному богу известно', выявляй, анализируй
    Ответ написан
  • Опасность копирования текста из интернета и затем вставления его в cmd?

    @rPman
    Везде где есть 'активное содержимое', т.е. к примеру в excel можно вместе с буфером в формулах что-нибудь скопировать или скорее какой-нибудь ole объект (это буквально бинарник), в отладочную консоль браузера (при первом копировании оно об этом честно предупреждает и требует пройти типа капчи)
    Ответ написан