Задать вопрос
  • Есть ли вариант сочетания игровой и профессиональной видеокарты?

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

    Но, если речь идет о покупке железа на вырост, хотя бы на ближайшие пару лет, и нет денег на топовое то рекомендую nvidia 3060 12Gb (12гб ключевой момент) либо 4060ti 16гб.

    Почему?
    * потому что в будущем требования к оперативной памяти будут расти, сильнее чем к процессору gpu (процессор будет тратиться на 4k, но никто не мешает играть fullhd 1080 или просто hd 720)
    * потому что 16гб позволяют запускать современные нейронки локально, не топовые конечно но даже 13b помещаются (8бит квантизация), а llama.cpp позволит запускать с 4битной квантизацией (потеря качества 3-5%) частично на процессоре и 30b модели

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

    @rPman
    Ни одна gpt не сможет полноценно решать такую задачу
    скормить исходники движка Unreal Engine

    потому что это НОВАЯ информация, ее не получится добавить в виде обучающей выборки и finetune. Так как это заставит модель больше галлюцинировать.
    В теории это возможно
    но потребуется переобучение (пусть и с использованием уже pretrained модели на старте) на данных, на которых эту сеть обучали! это наиважнейшее условие, с некоторой эффективностью можно проредить исходные данные, буквально на днях читал об исследованиях, как можно оценить, какие данные можно использовать для дообучения а какие нет.

    Стоимость этого будет сравнима со стоимостью полного обучения - миллионы баксов, без преувеличения!

    После этого потребуется еще доводка с помощью алгоритмов RLHF (нужны серии специально подобранных вопросов, так же это очень связано с тем какая была обучающая выборка, иначе модель будет низкого уровня и способна только для задач completion и очень слабо для chat, а тебе нужны instruction

    GPT умеет легко обучаться только на данных, которые влезают в контекстное окно. У лучшей открытой сетки llama3-70b это 8к токенов (обычно это +-1 файл исходников) да и у других от силы 16к и 32к но они слабые и способности запоминать данные во всем окне очень слабые.
    Если что, советую mixtral 8x22b, требует 85гб для 4бит квантизации (в этом случае незначительно теряется качество) или лучше 96гб для 5битной. 64к размер контекста, работает несколько токенов в секунду на процессоре, т.е. будешь ждать но не критично долго

    Но это не значит что совсем нельзя. Привожу пример сессии моей беседы с бесплатным anthropic claude (у них большое окно контекста, влезает несколько исходных файлов), скармливал исходники приложения на c# для поиска дубликатов видео.

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

    Дополнительно в процессе беседы дублирую информацию из основных вопросов, либо задаю наводящие вопросы, если ответ получил не полный

    Сеть поняла написанный код, как он работает и смогла ответить на нетривиальные вопросы.

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

    Будь креативным в промптах, чем лучше запрос тем больше шансов получить ответ.

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

    p.s. 'точно и без ошибок' не будет!
    Ответ написан
    Комментировать
  • Как сделать права 777 по умолчанию для общих папок Virtualbox?

    @rPman
    У тебя нет доступа к настройкам virtualbox smb server, поэтому скорее всего таким способом проблему не решить.

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

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

    Работа через git comit позволит оформить и внести порядок в процесс разработки, особенно если у тебя команда.
    Ответ написан
    1 комментарий
  • Кем можно пойти работать со знанием языка С,ассемблера,хорошей математикой?

    @rPman
    На стажировку могут взять вообще нулевого по знаниям, важнее сама способность изучать.

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

    Не советую идти в IT если к этому 'не лежит душа', будет грустно. Работа должна приносить радость и быть не противна, иначе смысла в этом не будет.

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

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

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

    @rPman
    А ты глазами как распознаешь страницу с контактами?
    По содержимому. Наличие или отсутствие определенного текста более чем достаточно.

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

    p.s. регулярки это прошлыв век, очень мало сайтов позволят себя так просто анализировать.
    Обычно сайт парсят как xml/html с помощью любого парсера на твой выбор и язык (например для php я часто пользовался simplehtmldom но часто и штатных xml парсеров хватает

    ну а если сайт генерируется динамически на js то мне больше нравится инжектить на страницу свой javascript в полноценном браузере
    Ответ написан
  • Видеокарта не работает без драйверов, что делать?

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

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

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

    @rPman
    https://rlab.ru/tools/rtester.html умеет нативно много что, в т.ч. работает с sas дисками.

    Если прямо очень надо mhdd (графики посмотреть?), то я бы предложил странное (вы же хотите dos программой sas диски проверять), создать виртуалку с dos, пробросить в нее диск как диск целиком, и проверять. Понятно что никаких низкоуровневых операций оно не выполнит, потому что с sas и так не умеет работать.
    Ответ написан
    2 комментария
  • (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 комментарий