Задать вопрос
  • (Android)Как изменить кодировку названия файлов, чтобы удалить их?

    @rPman
    редактировать эти файлы и в Менеджере файлов, и в термуксе(vim) я могу
    вот и удаляй их этими средствами

    в zip нет стандарта на кодировку, и соответственно если кто то на windows запишет русские буквы с такой кодировкой, на linux так и будет...

    вот полистай тему, там предлагают кучу методов как распаковать такие zip файлы

    upd. 7z умеет работать с архивами с указанной кодировкой ключ -scsКОДИРОВКА, как распаковывать так и упаковывать, соответственно распаковывай, редактируй, упаковывай
    Ответ написан
  • Как заставить паралельно работать две разные вкладки google chrome?

    @rPman
    Как их можно заставить работать одновременно
    это фича браузера chromium, блокирует работу javascript фоновых окон либо замедляет их стократно. Чтобы заставить их работать в фоне, разработчик веб приложения должен использовать специальную технологии web workers.

    У firefox такой проблемы я не наблюдал, скрипты продолжали работать в свернутом браузере как ожидается.

    Единственный способ решить эту проблему универсально - это обмануть браузер чтобы он считало активным сразу несколько окон. Сделать это можно:
    - с помощью сервера терминалов, т.е. версия windows должна быть серверной либо на старых ревизиях win10 и до старых win7 - утилита rdpwrap).
    Можно запустить терминал под своим пользователем windows, и в каждом запускать браузер или любое другое приложение, которое ожидает быть в фокусе. Для работы приложения нужно будет держать открытыми сессии терминалов.
    Соответственно они будут продолжать работать, даже если их открыть в другой сессии терминалов (каскадно) и затем эту первую закрыть
    - использовать ibik aster для рабочих ревизий windows (включая самые свежие 11), позволяет создавать несколько рабочих терминалов (настоящих, не виртуальных как терминалы rdp) но для каждого потребуется свой монитор (можно обмануть с помощью заглушек в разъемы видеокарты и подключаться к терминалу с помощью локально запущенного vnc в каждом)
    Ответ написан
    4 комментария
  • Какая модель LLama лучше для использования в telegram?

    @rPman
    Какая? llama3-70b наилучшая из открытых (те что можно запустить у себя), или command r+. Так же хорошие открытые модели основанные на mixtral (mixtral-8x22b). llama3-8b тоже не плохая для своего размера (запустится на 8-16Gb десктопных видеокартах).
    https://chat.lmsys.org/?leaderboard

    Llama это модель, она ничего не может, это файл на диске. Для того чтобы модель работала тебе нужна программа, например с гитхаба официальный пример на python (он очень простой, там буквально 5-10 строчек)

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

    Готовый сервер идет в поставке с llama.cpp (запросы api по http), он же умеет обрабатывать одновременно несколько запросов (по умолчанию 10 одновременных потоков кажется) так же есть возможность самому собирать запросы в пакет и отправлять одним запросом в сервер, он все обработает и вернет, и по скорости это будет быстрее чем каждый по отдельности (особенно когда работа на gpu).

    Программирование ботов gpt - это придумывание запросов на естественном языке, которые дополняются данными от пользователей или еще какими (например обычный запрос в классическую базу, вываливая в промп тупо текстом, к примеру csv форматом). У тебя ограниченное количество ресурсов, маленькое окно контекста (у llama это 8к токенов) и в попытке все туда уместить и приходится что то поверх городить. тупой пример - если ты будешь весь чат пихать в контекст, уже через 20-30 сообщений он переполнится, и нужно будет принимать решение что и как выкидывать.

    А еще llama любит отвечать лишнее, т.е. ты ее просишь ответь числом, а оно отвечает - ваш ответ 3... вот эти 'ваш ответ' нужно как то выявлять. А еще модели лучше работают, если просить их по рассуждать, она тебе даст рассуждения, тебе они нафиг не нужны, как из них результат вычленить? Иногда можно отделить мусор от ответа, попросив его дать в каком то формате, например дай ответ в формате json, а так как запрос к gpt это часть беседы в форме чата, можно дать часть ответа прямо в промпте, например "...assitent: {" тогда у модели не останется варианта как сразу фигачить json.

    Но чем больше ограничений ты даешь модели тем хуже ее качество ответов.

    У llama.cpp есть механизмы задания gramma формата ответа, какие токены предпочтительнее и в каком формате, говорят не идеально реализовано (например не получится задать варианты ответов списком слов типа отвечай только название цвета 'красный', 'зеленый', 'желтый', 'другое',..)
    Ответ написан
    Комментировать
  • Как сузить диапазон генерации случайных чисел?

    @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, но можно искать по содержимому и координатам
    Ответ написан
    Комментировать
  • Что не так с попыткой прописать выполнение 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 (с тех пор они не развивались, только поддерживается их запуск), но так как они этого не делают (продукты и их функционал заброшен), я считаю это сделано специально, т.е. чтобы усложнить работу администраторам и опытным пользователям с целью, как я считаю, поддерживать негативный фон и обсуждения в интернете как часть черного пиара компании (планетарный монополист уже собрал всех пользователей что мог, и черный пиар помогает удерживать существующих, как бы это не звучало парадоксально, я так думаю).
    Ответ написан
    4 комментария
  • Как совершенно посторонний провайдер может не пустить в интернет?

    @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, только шаблоны интерфейса менять). Подводных камней тут практически и нет, даже удобнее, единая админка и для модерации можно использовать готовые механизмы форума.

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