Задать вопрос
  • Чем вызван краш программы?

    @rPman
    8iKS, тогда у тебя не густо вариантов, твой код требует инжекта своего, гемора много.

    Я настоятельно рекомендую использовать другой подход, вместо использования dll, используй разные процессы и IPC, или тупо сеть (http/pipe)
  • Чем вызван краш программы?

    @rPman
    Wataru, а ну это же не принципиально, описан способ создания callback между main и dll и не важно в какую сторону.

    ну нельзя напрямую вызывать функции dll/main.
  • Чем вызван краш программы?

    @rPman
    Wataru, ответьте пожалуйста на вопрос, или дайте путь для решения. Я не увидел принципиальных проблем у этого ответа
  • Как разобрать то что возвращает функция socket_read?

    @rPman
    Валера Карманов, вебсокеты можно реализовать и так но зачем?
    вот первое что нагуглилось 9-летней давности, как раз без использования библиотек
  • Чем вызван краш программы?

    @rPman
    chatgpt дает очень развернутый ответ
    Да, в Windows можно использовать экземпляры объектов, переданные из основной программы в функцию, определенную в DLL.

    Для этого нужно:
    * Определить интерфейс DLL: Экспортировать функцию из DLL, которая будет принимать указатель на объект.
    // В DLL
    extern "C" __declspec(dllexport) void UseObject(MyClass* obj);


    * Импортировать DLL в основной программе и вызвать экспортированную функцию, передав в нее указатель на объект.
    // В основной программе
    typedef void (__stdcall *UseObjectFunc)(MyClass*);
    
    HMODULE hModule = LoadLibrary("MyDll.dll");
    if (hModule) {
        UseObjectFunc UseObject = (UseObjectFunc)GetProcAddress(hModule, "UseObject");
        if (UseObject) {
            MyClass myObject;
            UseObject(&myObject);
        }
        FreeLibrary(hModule);
    }

    * Работать с объектом внутри функции в DLL:
    // В DLL
    extern "C" __declspec(dllexport) void UseObject(MyClass* obj) {
        if (obj) {
            obj->SomeMethod();
        }
    }


    Важные моменты:
    * Совместимость компиляторов: Основная программа и DLL должны быть скомпилированы одинаковыми компиляторами и использовать одни и те же настройки компиляции (например, соглашение о вызовах, выравнивание структур и т.д.).
    * Экспорт классов: Если вы планируете экспортировать целые классы, а не функции, то все методы и члены класса, которые будут использоваться вне DLL, должны быть объявлены с использованием __declspec(dllexport) (при импорте из DLL – __declspec(dllimport)).

    Вот пример для экспорта класса:
    // В DLL
    class __declspec(dllexport) MyClass {
    public:
        void SomeMethod();
    };

    и
    // В основной программе
    class __declspec(dllimport) MyClass {
    public:
        void SomeMethod();
    };

    * Управление памятью: Убедитесь, что объекты, созданные в DLL, освобождаются там же, чтобы избежать проблем с разными пулов памяти в случае использования разных CRT в DLL и основной программе.
    Я сам это не проверял
    И еще мысль такова, что адресные пространства, heap менеджера памяти и прочее у каждого модуля и программы - свои, а значит работать с ними нужно очень осторожно, ведь все что происходит с памятью в dll обратно нужно передавать как параметры через стек
  • Как разобрать то что возвращает функция socket_read?

    @rPman
    Валера Карманов,
    я узнал что веб сокет
    у тебя в примере НЕ websocket!
    websocket это расширение http протокола, не советую реализовывать его самостоятельно, возьми тот же swoole, пример
  • Как разобрать то что возвращает функция socket_read?

    @rPman
    я в шоке что к тебе $port = (int) rand(1000, 9999); при этом кто то умудрился подключиться, если не ты, и отправить какие то данные, потому что
    $line = socket_read($connect, 8129); не должен возвращать что либо, если никто не подключился

    И в довесок $connect = socket_accept($this->_socket); я бы лучше сравнивал с !==false для надежности, и для отладки, вывел бы сообщение об ошибке если ===false
  • Стоит ли в 24 году брать NAS от Synology и что там по функционалу в время санкций?

    @rPman
    Valentin Barbolin, по ссылке тема на 11 тысяч сообщений, в шапке нет ответа на вопрос
  • Как открыть флешку в терминале линукса?

    @rPman
    xotkot, когда то давно я с linux плотно ковырялся, и mount не умел автоматически загружать модули ядра, это вообще то странное поведение, но да очень удобное.

    излишняя автоматизация и облегчение может до добра не довести
  • Как разобрать то что возвращает функция socket_read?

    @rPman
    а где код клиента, который подключается и пишет что-либо? что пишешь, что ожидаешь?
    p.s. отладочную информацию лучше выводить чем то типа echo json_encode($line,JSON_UNESCAPED_UNICODE), тогда только не читаемые символы будут отображены экранированным кодом, а остальные - текстом.

    p.p.s. не критичное:
    * после socket_read нужно закрывать сокет клиента, если все что нужно прочитал
    * 8129 скорее всего ты хотел 'круглое' число 8192 как степень двойки
  • Как открыть флешку в терминале линукса?

    @rPman
    xotkot, в man ничего нет про автозагрузку модулей командой mount
    погуглил, оказывается на exfat майкрософт так же доит компании, но для linux в 2019 году они сделали исключение, поэтому это работает

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

    @rPman
    xotkot,
    # uname -r
    5.15.0-91-generic
    # cat /proc/filesystems | grep fat
        vfat

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

    p.s а так да, кодовая база там имеется:
    # grep EXFAT /boot/config-5.15.0-91-generic
    CONFIG_EXFAT_FS=m
    CONFIG_EXFAT_DEFAULT_IOCHARSET="utf8"
  • Как защитить моё Android VPN приложение от мошенников?

    @rPman
    YX1978,
    не я опубликовал
    не вы опубликовали = не ваше приложение
    тот кто опубликовал, мог внести любые изменения, не спрашивая вас
  • Какие пакеты лучше использовать для написания программы?

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

    Так же есть подход, создание своего браузера на базе готовых компонент (gecko для эмуляции firefox или webkit для chromium) и соответственно в своем приложении у тебя прямой доступ к dom.

    p.s. Когда то работал еще майкрософтовский IE (компонент WebBrowser в .net), и да, это все еще работает, но поддержка у веб сайтов уже никакая.
  • Как предоставить приложению максимум ресурсов?

    @rPman
    Дмитрий Прокопчук, минутка оффтопа - максимально скоростной ssd это nvme pci-e 5.0 со скоростью чтения и записи 12гигабайт в секунду, не всякий софт и уж точно не на всякую задачу сможет в принципе утилизировать такую скорость.
  • Как защитить моё Android VPN приложение от мошенников?

    @rPman
    я заметил то же самое в плей маркете и оно начало запрашивать лишние разрешения
    манифест своего приложения дай сюда

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

    @rPman
    CityCat4, нет, бывает без использования uuid не обойтись, например внешние контроллеры могут инициализироваться с разной скоростью и менять порядок дисков случайно от запуска к запуску.
  • Клиенты могут быть сетью WIFI-Mesh?

    @rPman
    Для интернета вещей, особенно когда там все на батарейках, wifi mesh жрут энергию как не в себя (должны, хз как на практике), потому что вынуждены обрабатывать каждый входящий пакет в сети, т.е. чем больше устройств вокруг тем больше энергии каждый из них будет потреблять.
  • Где PHP хранит кэш на "отдачу"?

    @rPman
    Quqas, https://github.com/nextcloud/server/blob/master/co...
    это уже норма что документации нет, а пользователи почему то не берут нормальный пример с коментариями а пилят свой с нуля.

    жалоба на игнор в issue вроде закрыта 4 года назад

    upd. если настройка не работает, может у тебя ОЧЕНЬ старая версия nextcloud установлена?
    в крайнем случае там же исходники в открытую, поиском ищешь tempdirectory в php файлах а так же в довесок создание zip и изучаешь... именно так работает opensource