• Как сузить диапазон генерации случайных чисел?

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

    Случайные числа на интервале на javascript получают с помощью Math.Random()*(максимальное число-минимальное) плюс минимальное. По ссылке пример с math.floor, округляющий число до целого, но осторожно, в этом случае максимальное число никогда не будет получено... возможно лучше тут использовать math.round
    Ответ написан
  • Многослойный перцептрон - как выполнить действия?

    @rPman
    input1..3 размерность N и output1..3 размерность M это вектора I и O соответственно, каждый со своей размерностью (в твоем примере одинаковая)
    размер скрытого слоя - K
    веса между input и скрытым слоем w1x это матрица A, размерность NxK
    веса между скрытым слоем и output w2x это матрица B, размерность KxM

    Формула
    sigmoid(I*A) получаем вектор H размерностью K
    следующий слой
    sigmoid(H*B) получаем вектор O размерностью M

    т.е. O = sigmoid(sigmoid(I*A)*B)

    входной и выходной вектора еще нормализуют
    Ответ написан
    Комментировать
  • Существует ли таймер которым можно управлять с другого компьютера?

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

    Напиши сам или закажи у других. Современные телевизоры уже давно умные, в крайнем случае можно приобрести у китайцев за 1-2т.р. мини ПК в формате hdmi-stick (чуть больше usb флешки) так же почти любой смартфон может транслировать изображение на TV по wifi. Т.е. 'запустить браузер на TV' не проблема. Удаленное управление - вопрос того от куда и как именно нужно это делать.
    Ответ написан
    Комментировать
  • Как вшить .mp4 файл в .exe С++?

    @rPman
    Используя пайпы. В зависимости от используемой ОС, можно создавать файл, содержимое которого будет определяться вашим запущенным приложением. Приложение соответственно будет извлекать файл из своих ресурсов (можно просто разместить в .data секции) и отправлять его в пайп.

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

    В windows есть механизм (требует admin доступа) регистрации своего windows filesystem filter driver, на более продвинутом уровне позволяет фактически симулировать файловую систему

    upd. еще проще, открывать сторонний плеер по http ссылке, а приложение запускает http веб сервер, отдающий файлы из ресурсов. Правда не все плееры умеют работать с сетью (смутно помню что штатный winxp не умел и нужно было скачивать media player у майкрософта)
    Ответ написан
    Комментировать
  • Как узнать сумму выброщенных чисел из массива?

    @rPman
    Мда, математику бы вам подучить.

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

    $foo = [1, 2, 3, 6];
    
    $n=end($foo);
    $asum=((1+$n)*$n)/2;
    echo $asum-array_sum($foo);
    Ответ написан
    4 комментария
  • Где можно создать виртуальную машину чтобы использовать андроид студио на ней?

    @rPman
    С вероятностью 99.(9)% облачные сервисы, позволяющие запускать приложения android не предоставляют возможности отладки.

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

    При наличии хорошего канала (либо сервер прямо в твоем городе) можно так работать почти без лагов, я рекомендую linux машину с x2go сервером (клиенты есть по до все) это очень дешево (но не будет поддержки видеоускорителя ни в каком виде, но тут с эмулятором android и так проблемы)
    Ответ написан
    3 комментария
  • Selenium не видит мой webdriver,что делать?

    @rPman
    С высокой вероятностью причина - русские буквы в пути.

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

    @rPman
    Лучшее что можно посоветовать это библиотеки ffmpeg или vlc (искать соответственно lib...) и другие. На сколько я понимаю самая простая библиотека это gstreamer, есть под windows.

    Я попросил gpt4 накорябать код чтобы проигрывание шло именно из ресурсов, не проверял, возможно он не будет работать как ожидается но идею можно взять из него. В данном случае он использует stream созданный из данных в памяти.
    spoiler
    #include <gst/gst.h>
    #include <glib.h>
    #include <iostream>
    #include <fstream>
    #include <vector>
    
    GstFlowReturn new_sample (GstElement *sink, std::vector<char>* data) {
        GstSample *sample;
        g_signal_emit_by_name (sink, "pull-sample", &sample);
        if (sample) {
            GstBuffer *buffer = gst_sample_get_buffer(sample);
            gst_buffer_fill(buffer, 0, data->data(), data->size());
            gst_sample_unref(sample);
            return GST_FLOW_OK;
        }
        return GST_FLOW_ERROR;
    }
    
    int main(int argc, char *argv[]) {
        GstElement *pipeline, *appsrc;
    
        /* Initialize GStreamer */
        gst_init (&argc, &argv);
    
        /* Build the pipeline */
        std::string pipeline_str = "appsrc name=source ! video/quicktime ! decodebin ! videoconvert ! autovideosink";
        pipeline = gst_parse_launch(pipeline_str.c_str(), NULL);
    
        /* Setup appsrc */
        appsrc = gst_bin_get_by_name(GST_BIN(pipeline), "source");
        if(!appsrc) {
          std::cout << "Unable to get appsrc" << std::endl;
          return -1;
        }
    
        /* Read data into buffer */
        std::ifstream file("file.mp4", std::ios::binary);
        std::vector<char> buffer((std::istreambuf_iterator<char>(file)), std::istreambuf_iterator<char>());
    
        /* Setup necessary signals */
        g_signal_connect(appsrc, "need-data", (GCallback)new_sample, &buffer);
    
        /* Start playing */
        gst_app_src_set_size((GstAppSrc*) appsrc, buffer.size());
        gst_element_set_state(pipeline, GST_STATE_PLAYING);
    
        /* Wait until error or EOS */
        GstBus *bus;
        GstMessage *msg;
        bus = gst_element_get_bus(pipeline);
        msg = gst_bus_timed_pop_filtered(bus, GST_CLOCK_TIME_NONE, (GstMessageType)(GST_MESSAGE_ERROR | GST_MESSAGE_EOS));
    
        /* Free resources */
        if (msg != NULL)
            gst_message_unref(msg);
        gst_object_unref(bus);
        gst_element_set_state(pipeline, GST_STATE_NULL);
        gst_object_unref(pipeline);
    
        return 0;
    }
    Ответ написан
    Комментировать
  • Как заблокировать рекламу перед фильмом?

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

    Если говорить про то, как можно было бы блокировать элементы страницы, которые adblock не умеет, то я советую воспользоваться любым расширением для инжекта javascript на страницу, например tempermonkey/greasemonkey. Вместо попыток все решить css селекторами, можно писать полноценный код, который перебирает указанные теги и ищет какие то иные характеристики
    p.s. пользуйся ublock origin, он лучше справляется с блокировкой рекламы ну и:
    Код, удаляющий похожие товары и другие рекомендации ozon
    // ==UserScript==
    // @name         Ozon flood remove
    // @namespace    http://tampermonkey.net/
    // @version      2024-04-14
    // @description  Удаляет группу 'Похожие товары'
    // @author       You
    // @match        https://www.ozon.ru/product/*
    // @icon         https://www.google.com/s2/favicons?sz=64&domain=ozon.ru
    // @grant        none
    // ==/UserScript==
    
    (function() {
        'use strict';
    
      setInterval(function() {
        let spans = document.querySelectorAll('span');
        spans.forEach(span => {
            if (span.textContent === 'Похожие товары'||span.textContent === "Покупают вместе") {
                let parentElement = span.parentElement.parentElement.parentElement;
                if (parentElement) {
                    parentElement.style.display = 'none';
                    let nextSibling = parentElement.nextElementSibling;
                    if (nextSibling) nextSibling.style.display = 'none';
                }
            }
        });
      },1000);
    
    })();

    Пример моего кода по автоматической пометке рекламных сообщений в чате ozon
    // ==UserScript==
    // @name         Close ozon window
    // @namespace    http://tampermonkey.net/
    // @version      0.1
    // @description  try to take over the world!
    // @author       You
    // @match        https://www.ozon.ru/my/chat/
    // @icon         https://www.google.com/s2/favicons?sz=64&domain=ozon.ru
    // @grant        none
    // ==/UserScript==
    
    (function() {
        'use strict';
        console.log("Отмечаем сообщения прочитанными");
        //setTimeout(function() {window.close();}, 10000);
        setTimeout(function() {
            document.querySelector('button[style="color: rgba(0, 26, 52, 0.4);"]').click();
            console.log("Закроем это через 10 секунд");
            setTimeout(function() {window.close();}, 10000);
        }, 5000);
    })();


    похожим образом я вырезаю элементы с pikabu, там реклама теперь вставляется с помощью shadow-root, новые технологии web-контролов (считаю их единственное назначение - борьба с блокираторами рекламы), внутрь которых нельзя залезть с помощью javascript или css-селктором.

    Дело в том что разработчики рекламных вставок на веб сайтах стали постоянно менять имена классов, ломая логику любых способов поиска элементов с помощью css, но можно искать по содержимому и координатам
    Ответ написан
    Комментировать
  • Vulkan или OpenGL?

    @rPman
    Начинающим настоятельно рекомендуется не писать на низком уровне, а выбрать какой-нибудь фреймворк, начиная с топовых unreal engine или unity.

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

    10 лет для it это вечность, все перевернется пару раз за это время, не удивлюсь если через этот срок графику будет генерировать полностью ИИ (не улучшать а именно генерировать)
    Ответ написан
    Комментировать
  • Что не так с попыткой прописать выполнение cmd в автозагрузку?

    @rPman
    поднять галку "Запуск от имени Администратора"
    во первых в этом случае запрос превышения прав будет всплывать каждый раз при запуске

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

    Для запуска уже настроенной задачи без условия запуска можно использовать консольную команду schtasks /run
    Ответ написан
    1 комментарий
  • Пытался удалить прогу. Рабочая. Но ее не видит ни стандартная прога удаления ни RevoUninstaller. Как удалить?

    @rPman
    Изучение нужно начинать с ярлыка запуска приложения. Узнав путь размещения файлов приложения, дальше можно найти все что ссылается на них с помощью procmon от sysinternals можно промониторить пути в реестре и файлы на диске.

    Удаление приложения это:
    * остановка приложения и всех его компонентов (например такие могут быть установлены в internet explorer и вылезать в проводнике)
    * удаление веток реестра с настройками (чаще всего это HKCU или HKLM /Software/имя_компании/имя_приложения)
    * удаление регистрации activex библиотек с помощью regsvr32 (по простому это можно будет сделать после удаления файлов приложения например тем же autoruns записи о них будут помечены красным).
    * удаление файлов настроек в %localappdata% (бывает еще Programs подпапка) и %appdata% /имя_компании/имя_приложения или /ProgramData (редко но туда тоже гадят). Бывает приложения из linux мира хранят свои файлы в %userprofile%/.имя_приложения
    * удаление файлов в каталоге программы (смотреть по ярлыку и файлам, которые покажет procmon)

    p.s. managed приложения так не удалить, там по другому все, с другой стороны они штатно удаляются из настроек приложения (тех что не в панели управления)
    Ответ написан
    Комментировать
  • Аномалия загрузки CPU на Windows 11. Кто сталкивался?

    @rPman
    Чтобы не гадать, тебе нужно собирать логи активности процессов, например с помощью этого procmon, а с помощью этого Process Explorer просто изучи запущенные процессы, обращая внимание на не подписанные
    И с помощью этого autoruns смотри что у тебя прописано в автозапуск.

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

    @rPman
    Устанавливаешь на смартфон/планшетник любой пакет сетевых утилит при котором есть traceroute (например ping tools) и смотришь какой путь проделывают пакеты при подключении к роутеру 'на балконе' и какой к остальным роутерам. Так же смотришь, какие ip адреса выдаются из какой подсети. какой шлюз и сравниваешь.

    Может так случиться что у тебя в сети настроено две локальные сети, подключенные к разным провайдерам
    Ответ написан
    2 комментария
  • Gmail в Windows 11?

    @rPman
    Очень давно пользуюсь moziilla thunderbird, уже давно не в windows но точно помню что оно выдавало уведомления, в нем прекрасно работают и gmail, и mailru, любые другие pop/imap почтовые сервисы с поддержкой кучи типов авторизации, включая oauth2
    Ответ написан
    Комментировать
  • Контейнеризация на Android?

    @rPman
    Только полная виртуализация, например limbo
    Если платформа x86 (такие изредка еще встречаются на android) то есть шанс запустить user mode linux, внутри полноценный linux с root и без виртуализации, сделать это можно в debian no root или termux или похожих проектах симуляции linux.

    с другой стороны, зачем тебе docker если у тебя уже есть termux/debian-no-root, он сам по себе считай изолированная среда, вопрос только в нескольких аккаунтах на устройстве чтобы каждому свое хранилище.
    Ответ написан
  • Как установить полностью новую систему android на заблокированный телефон?

    @rPman
    4pda:
    Hard Reset HUAWEI Honor 9x.

    Как восстановить заводские настройки HUAWEI Honor 9x?
    Как стереть все данные в HUAWEI Honor 9x?
    Как восстановить настройки по умолчанию в HUAWEI Honor 9x?

    ВАЖНО!!! УДАЛИТЕ ВСЕ АККАУНТЫ В ТЕЛЕФОНЕ ПЕРЕД СБРОСОМ.

    Если вы хотите выполнить полную перезагрузку телефона, удерживайте кнопку питания и выберите выключение.
    В короткий момент ваш телефон выключится и, как только он выключится, начните одновременно удерживать кнопку увеличения громкости + питание .
    Далее вы увидите режим восстановления, из этого меню выберите Wipe data/Factory reset просто нажав на него.
    Подтвердите свой выбор, набрав Yes и запустите процесс.
    Теперь ваш телефон начнет удалять все ваши личные данные, и как только он будет завершен, вы увидите экран загрузки телефона.
    Ответ написан
    Комментировать
  • Нормальная ли практика, когда несколько сервисов подключены к одной бд?

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

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

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

    @rPman
    Если выбор из двух - то однозначно второй.

    Больше оперативной памяти и главное - легче, потому что меньше веса даже на пару килограмм очень критично. Носить с собой что то постоянно очень нелегко... те кто носил 5-тикилограммовые гробы а потом ходили с 1.5кг тонкими подтвердят.

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

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

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

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

    Монитор - почему я всем говорю, ноутбуки не для работы, только для коротких эпизодов и правок. Если монитор не 24" (именно на такой размер ориентируются подавляющее большинство сред разработки и интерфейсов различных утилит) то придется чем то жертвовать, где то лишние действия (свернуть/показать окно), где то чаще листать по коду, который не влезает в экран. Момент спорный, и многие скажут что хватает и 15" поэтому третьим пунктом поставил, это не так важно как клавиатура и мышка, но недостатки от сюда повышают нагрузку на эти пункты.
    Ответ написан
    1 комментарий
  • Какая есть программа для поиска дубликатов видео с частичным совпадением видео ряда?

    @rPman
    Неужели совсем гуглом пользоваться не умеешь?
    я не пробовал, попробуй это https://github.com/0x90d/videoduplicatefinder

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

    p.s. смутно помню что так как дубликаты аудио искать проще, в том же youtube это так и работает.
    Ответ написан
    7 комментариев