Задать вопрос
  • Администрирование сервера, вопрос про 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)
    Ответ написан
    Комментировать
  • Диск С полностью заполнен, как его можно очистить?

    @rPman
    утилита WinDirStat покажет куда делось место
    p.s. если у тебя миллионы файлов то возможно туда еще сотни мегабайт уйдет, каждый файл будет отнимать, помимо данных, еще на метаинформацию и выравнивание до размера кластера (обычно 4-8кб)
    Ответ написан
  • Почему виртуальная машина не получает ип хоста?

    @rPman
    В настройках сетевого устройства VirtualBox выбери тип сети - сетевой мост (bridge) и выбери сетевое устройство хоста, которое подключено к провайдеру (там где стоит dhcp сервер, раздающий нужный тебе ip)

    там же настраивается mac адрес, так как провайдер выдает ip адреса соответственно этому mac.
    Ответ написан
    2 комментария
  • Как выяснить причину загрузки потока процессора на 100%?

    @rPman
    Установи майкрософтовский sysinternals processexplorer, там искать причину удобнее будет

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

    @rPman
    Как узнать подтвердил ли свой аккаунт Google пользователь с телефона?
    это вроде не доступно разработчикам сайта, это внутренние механизмы защиты самого гугл от злоумышленников

    p.s. предлагай регистрацию через другие платформы, например телеграм ;)
    Ответ написан
  • Как специально не знать пароль?

    @rPman
    Да, ты помнишь часть пароля, вторую часть пароля получаешь вычислениями из первого.

    Самые надёжные алгоритмы - это криптографические хеши, считаешь хеш от хеша от хеша... N-раз, это не распараллелить на кучу компьютеров.

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

    @rPman
    При переходе по указанной ссылке видео в браузере не качается, а идет переход на страницу с youtube роликом, но по 'счастливой оплошности' разработчика этого сайта идентификатор youtube ролика размещен прямо в ссылке:
    presaver.com/youtube/qU5A0MLHtyE/download/22?title=treiler2023

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

    Это значит, выделяешь из ссылки этот код (например с помощью регулярных выражений метод preg_match или с помощью комбинации parse_url выделив путь с помощью PHP_URL_PATH и explode, разбив путь по '/'), и запускаешь утилиту
    yt-dlp "https://www.youtube.com/watch?v=qU5A0MLHtyE" -f код_формата

    если запустить с ключом -F то будет выведен список доступных форматов и их кодов, при наличии ffmpeg в можно будет объединять аудио и видео потоки

    все это запускать из php с помощью `обратных ковычек` либо вот список вариантов

    p.s. yt-dlp рекомендую ставить с помощью pip, там обновляется оперативнее чем тот что ставится из репозитария ubuntu и других.
    Ответ написан
  • На какой микрокомпьютер нормально встанет CentOS7?

    @rPman
    В следующем году поддержка этого динозавра закончится
    Ты хотя бы погуглил?

    p.s. на текущий момент 'лучшие' микрокомпьютеры это x86 mitx машины с intel процессором, (существуют pico/nano но неадекватные цены и очень маленький выбор, а вот mitx хороший выбор)
    Ответ написан
    4 комментария
  • Что делать если потерял ресивер от геймпада?

    @rPman
    обратись в сервисцентры, обзвони с указанием модели, у них больше опыта в поиске информации и комплектующих
    Ответ написан
    Комментировать
  • Непонятный ssd толи новый толи б\у?

    @rPman
    aliexpress/ozon/wb/... это не магазины, это электронный рынок (базар, барахолка), где в качестве торговца могут выступать как компании так и частники. Никакого контроля, ни за качеством товара, ни гарантийного ремонта,.. возможно посредничество компании для решения спорных ситуаций, типа товар не доехал, не рабочий или приехало не то что заказано, площадка может выступить как арбитр, придерживая у себя сумму и давая возможность ее вернуть покупателю... но с момента покупки aliexpress mailru качество даже этой опции упало ниже плинтуса (я читал о случаях когда товар не просто не доехал, он по статусу заказа больше месяца даже не выехал от продавца, но aliexpress деньги покупателю не вернул)

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

    @rPman
    по типу гугла
    гугл один из сложнейших сайтов для автоматизации, они защищаются от ботов десятилетиями

    Правильно, авторизуешься вручную с сохранением авторизации и переносишь куки в профиль браузера, используемого в selenium

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

    Если защиты нет то элементы ищутся легко тем же css - document.querySelector('css selector'), полученный объект можно менять типа .value='текст' а ссылки и кнопки кликать .click()
    Ответ написан
    1 комментарий
  • Как получить доступ к контенту iframe?

    @rPman
    На javascript с правами вебсайта ты этого не сможешь сделать, браузер не дает доступ к сторонним доменам в iframe, за исключением доменов-потомков (типа твой domain.ru а iframe - zzz.domain.ru, такой вариант доступ имеет), потому что там сайт открывается с куками пользователя, т.е. можно было бы открывать критичные сайты в iframe и собирать доступы к ним нахяляву.

    Доступ к iframe в браузере имеют плагины и скрипты, запущенные из консоли (плюс все что управляется из selenium).

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

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

    Но если специально никто не следит, то можно поднять на своем сервере прокси, который будет заворачивать в твой домен указанный (например сайт domain.ru в iframe - yoyo.com, а ты создаешь yoyo-com.domain.ru как копию yoyo.com и открываешь уже этот сайт в iframe, доступ будет с твоими куки (а не куки пользователя).

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

    @rPman
    wireguard на халяву не загнать в tcp, так как он udp, поэтому потребуется посредник, типа udptunel

    Вот пример настройки через udp2raw (он еще и этот трафик 'спрячет' за пингами к примеру, само собой это фигня, нормальный dpi это обнаружит)
    Ответ написан
    Комментировать