Задать вопрос
  • Как исправить проблему зависания Google Chrome при копировании кода?

    @rPman
    Сначала исключить потенциальные проблемы из-за расширений, отключи все либо создай новый пустой профиль и протестируй там, если проблема не повторится значит по одному включай расширения и повторяй тесты пока не найдешь виновника. Как частный случай - зайди под новым пользователем ОС.

    если проблема не в расширениях, следующим шагом я бы сменил операционку (в смысле загрузиться с usb уже готовую win/linux и установить там google chrome и проверить)

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

    @rPman
    Во первых веб браузеры не умеют работать с обычным универсальным tcp/udp советами, им нужен определенный протокол, т.е. приложение, которое слушает сокет (socket_listen) должно работать по совместимому протоколу (сейчас это http, его расширение websocket, а для udp - webrtc).

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

    Про 'ваш сервер', я встречал виртуальный хостинг, обычно точно дешёвые так делают, когда сервер сидит в локальной сети, а порты по тарифу подбрасываются nat, т.е. Только разрешенные порты так работают
    Ответ написан
    Комментировать
  • Чем загрузчик в виртуальных процессорах отличается от реального? Какой жизненный цикл запущенной ОС на виртулальном?

    @rPman
    Виртуальная машина jvm и виртуальный процессор того же qemu это очень разные вещи.

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

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

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

    @rPman
    Раз в месяц такие вопросы, такое ощущение что авторы после получения ответа его удаляют.

    Решение - каскадное подключением через другого пользователя, миновал об отключении не пойдет на второе внутри первого сеанса rdp

    Настоятельно рекомендую не использовать для этого windows, лучше linux и xserver-xvfb
    Ответ написан
  • Как понять нормальная прошивка андроид?

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

    Так делает и Гугл и Китай, но они производители, своего трояна ставят на заводе.

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

    @rPman
    сделай $UserId global или передай в объект/массив (они по ссылке передаются), прописанный в use.

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

    @rPman
    если нужно по каждой категории - добавь к запросу group by категория, в select будет sum(сумма) и категория

    если выбор критерия вычисляемый, пропиши его формулу в select сумма as field_name ... group by field_name
    Ответ написан
    Комментировать
  • Как запустить чужой проект веб-приложения с GitHub на своем компьютере?

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

    Достаточно выложить файлы этого проекта в любой веб север, хоть однострочник от php (php -S 127.0.0.1:8080) и открыть этот адрес в браузере - все работает
    Ответ написан
    Комментировать
  • Есть какие нибудь инструменты для работы с VBA?

    @rPman
    Microsoft Visual Studio, умеет работать как с Visual Basic так и с VB.net (VB.net похож на VB script и зачастую код можно даже тупо копировать)

    Начни от сюда
    Ответ написан
    6 комментариев
  • Как отключить распечатку документа в браузере?

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

    @rPman
    Отключаяя сессию rdp для машины это сигнал блокировки экрана, браузер это отлавливает и тормозит обработку скриптов (точно так же как и при минимизации окна/смены таба)

    Полагаю headless версии браузера тебе не подходят? те что selenium к примеру запускают?

    Решения:
    - универсально, рекомендую - рекурсивный rdp, сессия, где запущен браузер должна быть открыта в другой сессии (другой пользователь, и не обязательно с этой же машины, но нет смысла заводить вторую машину), вот уже к этой второй сессии можно подключаться удаленно, при ее отключении открытое окно сессии mstsc к браузеру не будет передавать сигнал о дисконнекте, ее даже можно безопасно минимизировать (не проверял)
    - запускать браузер не в rdp сессии а в консоли сервера (это та что подключена к монитору), используя vnc/teamviewer/anydesk и аналоги
    к сожалению на серверах ее может не быть или она недоступна, к тому же она только одна на машине.
    - виртуализация, установи виртуальную машину, где запускай хоть десктопные версии windows (это легально только с pro/ultimate версиями), каждый браузер будет запущен в своей сессии-консоли, доступ по rpd средствами виртуальной машины
    - смени операционную систему на linux, тебе ведь только браузер запускать, там с помощью xserver-xvfb можно запускать любое количество серверов xserver, подключаться к ним по vnc (есть врапперы rdp), это будет проще и дешевле в обслуживании
    Ответ написан
    Комментировать
  • Как сократить количество допустимых запросов от поисковых роботов?

    @rPman
    Поисковые боты не 'ходят с сайтов', у них не должно стоять заголовка referer.

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

    Если же это обычные запросы и кто то жалуется что люди ходят по ссылкам с вашего сайта на чужой и это создает ему нагрузку.... уберите эти ссылки, но что то мне говорит что их наличие и есть часть партнерства.
    Ответ написан
  • Какую key-value БД использовать с данными в 10 млрд строк записей?

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

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

    Достоинства - максимальная из возможных производительность (файл данных и индексный файл могут храниться без файловой системы прямо в блочных устройствах), буквально 2 запроса на запись/поиск (при использовании файловых систем операций будет в несколько раз больше), ни одна универсальная база данных не даст такой. Кода - строк 20-30 на любом языке программирования, красиво можно пользоваться memory mapped files (они дают самую быструю работу с файлами и удобную под задачу). Данные пишутся линейно на диск (оптимально для hdd, само собой если не одновременно с чтением), большинство файловых и операционных систем поддерживают sparce файлы (будут накладные расходы, но константа), это значит можно с некоторыми оговорками пользоваться большими пропусками в порядке индексов (дырка в файле вернет нули, на диске храниться не будет).

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

    Пример - временной ряд, в секунду происходят тысячи событий, хранить группами по секунде, т.е. ключевое поле для индекса - это timestamp-стартовое время файла, при среднем размере информации о событии в 100байт и 4 тысячи событий в секунду, на 3терабайтовый диск hdd индексы будут порядка 30 мегабайт, что прекрасно влезает в оперативную память. У меня самый дешевый toshiba3тб выдавал 60 req/sec случайных запросов (как в синтетических бенчмарках), при этом запрашивать можно было сразу большими интервалами, что роняло скорость максимум в 2-3 раза, пока данные влезали на дорожку (в зависимости от расположения там по разному). Последовательное чтение данных само собой работало на максимуме скорости диска в 150-200мб/с.
    p.s. от такой модели отказался за ненадобностью, данные хорошо упаковывались большими блоками (в 10 раз), храню теперь просто в архивах большими блоками по несколько часов, на время работы нужные данные переливаются во временные файлы.

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

    @rPman
    Главный инструмент обучения нейросети (не единственный) - это создание функции ошибки и подбор параметров для ее минимизации.

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

    Классический но не единственный способ определения функции ошибки - это сумма всех расстояний (если вектор состояния это координаты в многомерном пространстве) между ожидаемым выходом и полученным текущей сетью. Самая простая метрика расстояния для одного 'эксперимента' - квадратный корень суммы квадратов разницы значений векторов, т.е. A(a1,a2,a3,...) - это вектор из обучающей выборки, а B(b1,b2,b3,...) то что вернула сеть, то расстояние sqrt((a1-b1)^2+(a2-b2)^2+...), соответственно полученные ошибки нужно просто сложить для всей обучающей выборки, и получить полную ошибку.

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

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

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

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

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

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

    @rPman
    хватит школьных знаний

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

    @rPman
    Нет, процесс хрома, управляющий вкладкой (на самом деле сложнее) уже берет все что может (пример, у меня жена играет в какую то игрушку во ВК, так эта недопрога там 'майнит' на всех доступных ядрах так что машина лагает (на минуточку - linux).

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

    windows пишет загрузку от количества ядер, т.е. 100% это загрузка всех твоих 6 ядер (это я вангую что у тебя за машина), твои 21% это притмерно одно ядро плюс по мелочи (браузеры давно что могут стараются сами оптимизировать, например отрисовка фоном там идет, но javascript работает в одном потоке вкладки, чтобы использовать больше нужно использовать воркеров)
    Ответ написан
    1 комментарий
  • Какая библиотека лучше всего использовать для голосового ассистента (бесплатно без регистрации) на C#?

    @rPman
    Хорошее и бесплатное не совместимы, можешь попробовать 'воровать' у Гугла, запилив веб приложение и запускай его в google chrome, на сколько я знаю оно использует облачное распознавание, тебе можно то же самое использовать от Яндекс браузера, у этих обоих лучший движок распознавания русской речи
    Ответ написан
  • Как в windows 11 посмотреть какой процесс грузит видеокарту?

    @rPman
    Наличие колонки нагрузки GPU по процессам зависит от версии драйверов, например старый драйвер catalyst (есть у меня машина с amd rx 5030) есть под win10 но возможность смотреть нагрузку по GPU не дает.

    upd. попробуй в консоли, запущенной под администратором, запустить команду
    lodctr /R
    Ответ написан