Задать вопрос
Ответы пользователя по тегу Программирование
  • Апгрейда разраба с помощью нейросетки, с чего начать в 2025 году?

    @rPman
    На текущий момент современные ИИ на базе GPT либо недостаточно умны что бы полностью Заменить человека в задачах программирования, либо слишком дорого обходятся (особенно если смотреть по стоимости api топовых моделей с рассуждениями).

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

    Если тебе нужна практическая сторона, то что у openai что у anthropic есть продукты автономного кодинга, т.е. либо в облаке либо локально (claude code), где ты работаешь с уже готовыми агентами, способными самостоятельно работать в консоли, писать код и даже вести его отладку (сам не видел но читал про это).

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

    После того как придет понимание, на сколько полным должно быть ТЗ, можно уже попробовать поработать с автономными агентами.
    Ответ написан
    Комментировать
  • Можно ли заменить кликанье мышью по веб-интерфейсу cli-командой?

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

    Если же выявить по простому такой запрос не просто, то можно просто симулировать нажатия на кнопки на javascript прямо в браузере, инжектнув свой код с помощью, на выбор, расширения (tempermonkey/greasemonkey) или вставив свой код прямо в консоль разработчика (это работает только для single page application, иначе при обновлении страницы придется повторять) или используя средства автоматизации самого браузера (на его основе сделан selenium, его и использовать, это когда твой код запускает браузер и в нем выполняет действия). Я рекомендую tempermonkey.

    Обычно достаточно узнать css селектор требуемого элемента (например в консоли разработчика, в инспекторе, правая кнопка на нужном элементе, копировать как css-selector) и выполнить что то типа $('css-selector').click(). Чуть сложнее в этом случае реализовать взаимодействие своего кода вне браузера с кодом внутри браузера, самое простое - поднять свой веб сервер (он тоже должен быть https, если целевое веб приложение его использует либо настроить браузер на обход запрета смешивания http и https контента, не делайте так для рабочего браузера, это не безопасно, но для использования только одного веб приложения это безопасно), к которому из javascript можно делать запросы на получение команд и отправку результата (если это сбор данных).
    Ответ написан
    Комментировать
  • Оператор, операция, функция, процедура - что всё это значит?

    @rPman
    Это разные названия действий/команд, применяемых в разных ситуациях, не в каждом языке есть каждый из описанных.
    * Оператор (и действие, которое он вызывает - операция) - это пришедшие из математики действия, классические +, -, /, *, символ присвоения = (в разных языка по разному, например pascal :=) или сравнения == (соответственно = в pascal) или логические операции (и/или/не/..),..

    Синтаксически выделяют их как что то записанное рядом с операндами (то с чем производится операция), например слева/справа - ++i, !i, -1, i++, или между двумя i+y, или теранрная операция в c++ - условие?если_истина:если_ложь из трех операндов.

    В некоторых языках может быть переопределена программистом (например в c++) для своих типов

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

    Синтаксически обычно это имя ( аргументы через запятую) но встречаются выверты типа lisp (имя аргументы через пробел) и кстати операция + там тоже функция (собственно кроме этих скобок там ничего нет)

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

    Синтаксически это выглядит как экземпляр_объекта -> метод (аргументы,..) (вместо -> может быть '.', '->', '::' (в cpp и аналогах обращение к статическому методу класса а не к объекту) ну и всякие синтаксические извращения javascript по имени obj["method"](args)

    p.s. настоятельно рекомендую, воспользуйся современными инструментами работы с документацией, особенно подходящие для новичков (с оговорками про галлюцинации, т.е. держи в голове что факты нужно перепроверять) - ИИ, хоть бесплатными штатным майкрософтовским copilot.microsoft.com (он так же встроен в edge и в windows 11 но требует vpn в россии, с ним можно голосом поговорить, добавив при старте что ты хочешь что бы он тебе помогал в обучении и наводящими вопросами после объяснения проверял, верно ли ты все понял) хоть платным (рекомендую) от chatgpt.com/deppseek/xai/.. еще лучше воспользуйся агрегатором типа openrouter
    Ответ написан
    4 комментария
  • Какой лучше выбрать мини пк под сервер?

    @rPman
    Только самосбор! И не пытайтесь брать на вырост на долго, не угадаете, а платить сейчас будете дороже чем настанет это самое потом.

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

    МИНИ это значит x2 стоимость охлаждения... настоятельно рекомендую сосредоточиться на mATX вариантах, они не мини, но разместить туда можно все самое мощное и не будете ограничены в апгрейде, даже с видеокартой.

    Есть mITX решения, именно тут вы заплатите 2х..10х от стоимости обычных ATX но размеры будут 'переносными в одной руке'. Я разные корпуса видел, и у всех проблема с охлаждением. Дам совет, не пытайтесь уменьшить размер сервера, он не будет находиться рядом с вами (разместите его в соседней комнате).

    Самодельные решения по корпусу, у меня почти 6 лет под потолком в коридоре висел собранный из 'говна и палок' (дерево, детали от металлического конструктора для крепления, канальный вентилятор) в виде плоской трубы (~30x50x150), напихав туда кучу дисков, atx материнку и все что у меня было, а позже немного его апгрейдил,... крепление было на веревочках, потянул - он уехал под потолок, отпустил - спустился вниз (в реальности этим почти не пользовался).

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

    И это будет удобнее и на порядок дешевле, ведь ваш корпус определит его размещение, интегрированное в место красиво
    Ответ написан
    3 комментария
  • Ограничения копилота или я дуб?

    @rPman
    не бесплатные!

    openai o3
    openai gpt4.5
    anthropic claude sonnet 3.7

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

    p.s. не пытайся работать с gpt в лоб вопрос-ответ, результат будет посредственным.

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

    текущий ИИ далек от AGI а значит человека еще заменить полностью не может, почему каждый пытает его, ожидая что он будет мегаинтеллектом, да еще и бесплатно (стоимость компании openai расценивают в 150 млрд баксов)
    Ответ написан
    3 комментария
  • Как сделать такое приложение для пожарных, суть- пожарные водоисточники?

    @rPman
    Ваша задача делится на 2 большие задачи:
    1. преобразование 'бумажных' (в виде изображения) карт гидрантов в цифровой вид, совмещенный с уже существующими картами (например openstreetmap).
    Вручную это можно сделать там же на openstreetmap (у них были инструменты для такой работы)
    Формально, любая GIS система имеет для этого инструменты, возможно даже полуавтоматические, в вашем случае это явно точки, а не полигоны, с этим проще.
    2. Создание интерфейса
    настятельно не рекомендуется пилить интерфейс самому, воспользоваться лучше инструментами google/yandex, у них хорошие карты и с навигацией у них есть соответствующие api

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

    p.p.s. хотя, современный ИИ может стать таким ментором (openai/anthropic), но нужно будет набраться терпения, много общаться с ним и быть готовым что он будет тупить.
    Ответ написан
    5 комментариев
  • Как правильно использовать python скрипт через PHP backend?

    @rPman
    В общем случае технологии называются Interprocess communication.

    Изначально предлагались (php/python) механизмы очереди сообщений, shared memory и semaphores, как минимум на их основе делают высокоуровневые библиотеки по работе с сообщениями (и используют именно их, а не низкоуровневые, но знать про них обязан каждый, чтобы понимать недостатки)

    Второе и самое логичное, использовать socket-ы, как unix socket или pipes, так и tcp. Многие не заморачиваются, а поднимают полноценный асинхронный http сервер и организуют общение между приложениями по http или лучше websocket протоколу, так как это позволяет распределить приложения уже не в пределах одного сервера, а в сети, что дает очень высокую гибкость, но ценой значительных накладных расходов на сериализацию.

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

    Если речь о браузере, то языки - это javascript, html и css.

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

    p.s. сообщество полюбило python и javascript (node), я часто использую php, в т.ч. как часть комплекса, так как на питоне и javascript код получается многословнее. Кому то нравится java или c# (использовал когда можно было браузерный компонент легко в свое приложение вставить)
    Ответ написан
    Комментировать
  • Актуален ли ассемблер на сегодняшний день?

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

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

    Области - реверсинженеринг, низкоуровневая оптимизация и низкоуровневая отладка unmanaged кода (т.е. к примеру c,c++). Все это можно встретить и в разработке для микроконтроллеров, и в оптимизации кода для gpu и поиске причины, почему простой цикл кратно работает медленнее из-за вот этой 'безобидной строчки'.

    Но повторюсь, без ассемблера живется неплохо.
    Ответ написан
    9 комментариев
  • Какой инструмент может превратить схему БД в панель управления или админку?

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

    Прямо хочется назвать этот инструмент - называется фрилансер
    Ответ написан
    1 комментарий
  • Как автоматизировать работу с .xcf GIMP-шаблоном?

    @rPman
    в linux установка пакета gimp-plugin-registry добавляет в т.ч. пакетную обработку, возможно она тебе подойдет
    Ответ написан
    Комментировать
  • Можно ли написать скрипт/автотест с подсчетом действий на странице?

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

    Свой javascript скрипт выглядеть будет так - ищем нужный эелемент (например document.querySelector('css-selector') и к нему вызываем .click() или что тебе нужно (можно смотреть текст .innerText или так же искать querySelector....) а чтобы между действиями была пауза, используем setTimeout. Если нужно собирать информацию, ее можно складывать в localStorage/web storage либо http запросами отправлять на свой сервер (осторожно, если страница https то и твой сервер тоже должен быть https, так же в браузере должны быть разрешены CORS)
    Ответ написан
    Комментировать
  • Как версионировать на начале разработки?

    @rPman
    Оба варианта.
    Номер версии меняется с каждым релизом, даже если это багфикс.
    Но релиз может содержать сразу несколько фич так и одну.

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

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

    По факту - ноутбук для дома это устройство потребления контента и развлечения. Ноутбук как и планшетник это 'второе устройство', а не основное.

    Чисто технически ущербная клавиатура (а производители 99% ноутбуков ее делают таковой) неудобна для активного использования. Соотношение цена/производительность у ноутбуков в разы выше чем у стационарных компьютеров, и если ваш ценовой диапазон ниже 1к$, там все еще хуже - куча компромиссов.

    Теперь по теме - собирая стационарный компьютер для ребенка для обучения и развлечения (вы же не изверг да?), выбирай
    + максимально быстрый и емкий диск (ssd nvme от 512Gb, не экономь и не бери самые дешевые, бери все что имеют гарантию 3года минимум)
    + любой HDD (пусть будет даже дешевая тошиба 3Тб, лучше 2 для использования в RAID mirror на случай смерти диска)
    + максимально большой объем RAM (минимум 16Gb, но разработчику лучше максимизировать до упора, 32Gb облегчит работу с виртуалками, а 64Gb+ откроют доступ к тем же языковым нейронкам LLM, да медленно, но бесплатно и у тебя на руках)
    + видеокарта от nvidia 3060 12Gb VRAM (цены на нее от 33т.р., да медленная, но это младшая серия из тех видеокарт что дают возможность и играть в топовые игры на средних и играть с современными нейрогенеративными моделями, да и просто свои нейронки, VRAM там очень нужна).

    Про процессор там или выбор материнской платы - это уже не так актуально, выбирать по совместимости. Дело в том что различия в производительности процессоров с разницей в цене 2х будет считанные проценты, да за 5к$ можно собрать топовое железо которое будет раза в 2 быстрее железки за 500$. И я говорю не про цифры бенчмарков, а реальную производительность и отзывчивость на 99% задач, которые требует single thread производительность. Современный софт/игры обычно ориентируются на 6-ядерные процессоры (12 hyperthreading) и вполне нормально будут работать и с меньшим их количеством, когда как топовое железо будет содержать десятки ядер, которые нагрузить сможет только очень небольшое количество специфических задач.
    Ответ написан
    8 комментариев
  • Как создать мессенджер?

    @rPman
    Почти любой пример websocket (например на javascript и nodejs) это простейший чат без авторизации.

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

    Тем более задача не такая уж и сложная.
    * тебе нужен интерфейс пользователя и возможно администратора
    * тебе нужна серверная часть, поддерживающая: авторизацию пользователей, хранение и доставку сообщений

    Используя браузер в качестве платформы пользовательского интерфейса можно значительно сэкономить на разработке (отображение любой мультимедиа и даже простой апгрейд до аудио/видео чата, например на основе webrtc).
    Ответ написан
    Комментировать
  • Шаблонный код: Чем можно удобно генерировать код для автоматизации сборки по шаблону?

    @rPman
    Я использовал php для генерации кода, в т.ч. других языков программирования.
    Это очень простой, легко читаемый, поддерживаемый редакторами (раскраска, автодополнение,...) изначально создаваемый именно как генератор (текстов и html) на основе программируемого шаблона. Поддерживается всеми популярными ос и платформами (различия минимальны, в задачах шаблонизации не существенные)
    Ответ написан
    3 комментария
  • Является ли Не перенос строки синтаксическим сахаром?

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

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

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

    Только в этой последовательности и не наоборот.

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

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

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

    Если же тебе это не нужно (а бывает не нужно), то и не заморачивайся
    Ответ написан
    Комментировать