• Для чего вообще существует ассемблер?

    @none7
    Все алгоритмы openssl реализованы на Ассемблере. Потому, что оптимизирующие компиляторы генерируют не оптимальный код. Речь даже не про SIMD, самые простые инструкции при весьма ограниченном количестве переменных, компиляторы не в с состоянии расставить в идеальном порядке.
    Ответ написан
  • Как переадресовать udp порт?

    @none7
    Также как и в случае TCP. Разница лишь в том, что NAT не может отслеживать разрыв UDP соединений и удаляет их по таймауту, но это уже заботы приложений.
    Ответ написан
    Комментировать
  • Почему брандмауэр блокирует system не смотря на правило?

    @none7
    Потому, что ntoskrnl.exe это не System, фаервол будет считать записью для обычной программы, а программы System не существует, только процесс с таким именем. Попробуйте тупо ввести в это поле "System", авось поможет. Если нет, то значит, что это привилегия предопределённых правил.
    Ответ написан
    Комментировать
  • Как оптимизировать нагрузку на ЦП при отправке сообщения?

    @none7
    Действительно, почему же оно такое медленное? Может потому, что binary_t производит нечто подобное?
    {"bytes":[116,101,115,116],"subtype":null}.
    То есть происходит преобразование КАЖДОГО байта в десятичное число. Даже с применением несколько ускоренного алгоритма это всё занимает уйму процессорного времени.
    Ответ написан
    5 комментариев
  • Как составить такой post запрос при помощи file_get_contents на php?

    @none7
    file_get_contents('http://{openHAB_IP}:8080/rest/items/My_Item', false, stream_context_create(array('http' => array(
        'method' => 'POST',
        'header' => 'Content-Type: text/plain\r\nAccept: application/json\r\n',
        'content' => 'OFF'
    ))));
    Ответ написан
    Комментировать
  • Как применяют Task.Run когда у целевого метода есть параметры?

    @none7
    static Task ProxyRun<T1,T2> (Action<T1> action, T1 arg1,) {
        return Task.Run(() => action(arg1));
    }
    static Task ProxyRun<T1,T2> (Action<T1,T2> action, T1 arg1, T2 arg2) {
        return Task.Run(() => action(arg1, arg2));
    }
    static Task<TResult> ProxyRun<T1,TResult> (Func<T1,T2,TResult> action, T1 arg1,) {
        return Task<TResult>.Run(() => action(arg1, arg2));
    }
    static Task<TResult> ProxyRun<T1,T2,TResult> (Func<T1,T2,TResult> action, T1 arg1, T2 arg2) {
        return Task<TResult>.Run(() => action(arg1, arg2));
    }
    static Task StartNew<T1,T2> (this TaskFactory taskFactory, Action<T1,T2> action, T1 arg1, T2 arg2) {
         return taskFactory.StartNew(() => action(arg1, arg2));
    }

    И таких обёрток Вы можете наплодить сколько душе угодно, даже если не хватит существующих разновидностей Func и Action всегда можно добавить.
    Ответ написан
    Комментировать
  • Как применить на практике битовую операцию NOT?

    @none7
    s[i] = '0'+((~(s[i]-'0'))&1);
    Но NOT тут притянут за уши, все обычно используют XOR.
    *((*long long)s) ^= 0x0101010101010101LL;
    И никакого цикла не надо.
    Ответ написан
    Комментировать
  • Как изменить разрядность приложения .net?

    @none7
    Свойства проекта
    Target = "Any CPU"
    Prefer 32-bit = false
    vs2015_proppage_build.png?view=vs-2019

    А вообще хорошим тоном является запуск браузера по умолчанию указывая вместо пути к программе сам URL и установив свойство UseShellExecute=true. Если хочется предоставить выбор браузера, то нужно залезть в HKEY_CLASSES_ROOT и вытащить из него список обработчиков.
    Ответ написан
    Комментировать
  • Какая ошибка в коде?

    @none7
    int main() {
        const char* endl = "\r\n";
        WSADATA wsa;
    
        std::string domin;
        int status;
        std::string write_data;
    
        struct addrinfo hints = { 0 }, * res, * p;
        hints.ai_family = AF_UNSPEC;
        hints.ai_socktype = SOCK_STREAM;
    
        SetConsoleCP(GetACP());
        SetConsoleOutputCP(GetACP());
    
        if (status = WSAStartup(MAKEWORD(2, 2), &wsa) != 0) {
            std::cout << "Error: of WSAStatus: " << gai_strerror(status) << std::endl;
            return status;
        }
    
        std::cout << "Enter domin: " << std::endl;
        std::getline(std::cin, domin);
    
        if (status = getaddrinfo(domin.c_str(), "80", &hints, &res) != 0) {
            std::cout << ("Error: of getaddrinfo", gai_strerror(status));
            return status;
        };
    
        {
            std::ostringstream ws;
    
            ws << "GET / HTTP/1.1" << endl;
            ws << "Host: " << domin << endl;
            ws << "Accept: text/html, text/*" << endl;
            ws << "Connection: close" << endl;
            ws << endl;
    
            write_data = ws.str();
        }
    
        std::cout << write_data;
    
        char ipstr[1024];
        int s = INVALID_SOCKET;
    
        char bufrecv[2048];
    
        for (p = res; p != NULL; p = p->ai_next) {
            const char* ipver;
            void* addr;
            if (p->ai_family == AF_INET) {
                struct sockaddr_in* ipv4 = (struct sockaddr_in*)p->ai_addr;
                addr = &(ipv4->sin_addr);
                ipver = "IPv4: ";
            }
            else {
                struct sockaddr_in6* ipv6 = (struct sockaddr_in6*)p->ai_addr;
                addr = &(ipv6->sin6_addr);
                ipver = "IPv6: ";
            }
    
            inet_ntop(p->ai_family, addr, ipstr, sizeof(ipstr));
            std::cout << "addres: " << ipver << ipstr << std::endl;
    
            if (s != INVALID_SOCKET) {
                shutdown(s, SD_BOTH);
                closesocket(s);
            }
    
            if (((s = socket(p->ai_family, p->ai_socktype, p->ai_protocol))) == INVALID_SOCKET) {
                std::cout << "error of socket: " << WSAGetLastError() << std::endl;
                continue;
            }
    
            if ((connect(s, p->ai_addr, p->ai_addrlen)) == SOCKET_ERROR) {
                std::cout << "Error of connect: " << WSAGetLastError() << std::endl;
                continue;
            }
    
            bool success = true;
            int writed = 0;
            for (size_t i = 0, data_len = write_data.length(); i < data_len; i += writed) {
                writed = send(s, write_data.c_str() + i, (int)min(data_len - i, INT_MAX), 0);
                if (writed == SOCKET_ERROR) {
                    std::cout << "Error of send: " << WSAGetLastError() << std::endl;
                    success = false;
                    break;
                }
            }
            if (success) {
                int readed;
    
                while ((readed = recv(s, bufrecv, sizeof(bufrecv), 0)) != SOCKET_ERROR && readed != 0) {
                    std::cout << std::string(bufrecv, readed);
                }
                if (readed == SOCKET_ERROR) {
                    std::cout << " recv " << WSAGetLastError() << std::endl;
                }
                break;
            }
        }
    
        if (s != INVALID_SOCKET)
        {
            shutdown(s, SD_BOTH);
            closesocket(s);
        }
    
        freeaddrinfo(res);
        WSACleanup();
        system("pause");
        return 0;
    }
    Ответ написан
    4 комментария
  • Как получить тело запроса при помощи php://input при типе запроса multipart/form-data?

    @none7
    php.ini
    enable_post_data_reading = Off
    При этом естественно переменная $_POST не будет создана и это нужно учитывать.
    Ответ написан
    4 комментария
  • Могут ли взломать Linux сервер?

    @none7
    Уязвимости Django льются как из рога изобилия. Так, что если захотят взломать, то взломают. Его нужно по умолчанию считать не доверенным кодом как JS в браузерах. Если эти ценные данные выдаются этим движком, то о об их секретности можете забыть. Защитить его можно только закрыв Web-сервер извне, а разрешать доступ только через VPN, например пробрасывая порты через ssh. Тогда слабым местом будут только клиенты. Впрочем в нынешние времена огромных ботнетов это вовсе не гарантия защиты.
    Ответ написан
    Комментировать
  • Как скачать метапакет?

    @none7
    apt-get download $(apt-cache depends --recurse --recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances kde-plasma-desktop | grep "^\w" | sort -u)

    Но будьте готовы к тому, что там 4000 пакетов, конечно можно --recommends заменить на --no-recommends, но я не гарантирую, что плазма останется рабочей без рекомендуемых пакетов. У меня попытка снести глючащий kdeconnectd привела к глюкам многих других пакетов.
    Ответ написан
    6 комментариев
  • Как разобрать дамп объектного файла, скомпилированного MASM32?

    @none7
    Это формат COFF.
    Ответ написан
    Комментировать
  • Что в коде нужно исправить что бы мне выводился на экран ip адрес?

    @none7
    #pragma comment (lib,"Ws2_32.lib")
    #include <winsock2.h>
    #include <WS2tcpip.h>
    #include <Windows.h>
    #include <iostream>
    #include <string>
    
    int main() {
        WSADATA wsa;
        std::string domain;
        int status;
        struct addrinfo hints = { 0 }, * res, * p;
        hints.ai_family = AF_UNSPEC;
        hints.ai_socktype = SOCK_STREAM;
    
        // ошибки выводятся в ANSI кодировке, а консоль по умолчанию в OEM
        SetConsoleCP(GetACP());
        SetConsoleOutputCP(GetACP());
    
        // На Windows необходима инициализация сетевой библиотеки
        if (status = WSAStartup(MAKEWORD(2, 2), &wsa) != 0) {
            std::cout << "Error: of getaddrinfo: " << get_error_message(status) << std::endl;
            // принято возвращать причину ошибки, а не только сам факт
            return status;
        }
        std::cout << ("Enter domain: ");
        // даже доменные имена могут иметь длину 256 символов
        // пользователь же может вообще ввести сколько ему угодно
        std::getline(std::cin, domain);
    
        if (status = getaddrinfo(domain.c_str(), "80", &hints, &res) != 0) {
            std::cout << "Error: of getaddrinfo: " << get_error_message(status) << std::endl;
            return status;
        };
    
        char ipstr[INET6_ADDRSTRLEN];
    
        for (p = res; p != NULL; p = p->ai_next) {
            /*const char* ipver;*/
            void* addr;
            if (p->ai_family == AF_INET) {
                struct sockaddr_in* ipv4 = (struct sockaddr_in*)p->ai_addr;
                addr = &(ipv4->sin_addr);
                /*ipver = "IPv4:";*/
            }
            else {
                struct sockaddr_in6* ipv6 = (struct sockaddr_in6*)p->ai_addr;
                addr = &(ipv6->sin6_addr);
                /*ipver = "IPv6:";*/
            }
            inet_ntop(p->ai_family, addr, ipstr, sizeof(ipstr));
            std::cout << "addres: " << ipstr << std::endl;
        };
        freeaddrinfo(res);
        system("pause");
        // деструктор сетевой библиотеки
        WSACleanup();
        return 0;
    }
    Ответ написан
    Комментировать
  • Как мне импортировать методы класса при компиляции dll С++11?

    @none7
    Почему при работе с процедурами Вы положили в .h файл только декларацию функции, а в случае с классами запихнули всю реализацию? Нужно отделять мух от котлет. Методы можно реализовать и отдельно от объявления класса, если указывать их полное имя, например
    // xyz.h
    class xyz
    {
    private:
      int abc;
    public:
      PROJECT2_API int printing_int();
    };
    //xyz.cpp
    PROJECT2_API int hyz::printing_int() { // return 5
        return abc;
    }


    P.S. Мне очень интересно как Ваш код будет работать в вот таком случае.
    void printing(char* pChar) {
      char a[] = "Example String";
      strcpy_s(pChar, strlen(a) + 1, a);
    }
    int main() {
      char[4] buff = {0};
      printing(buff);
      printf("%s\n", buff);
    }
    Ответ написан
    4 комментария
  • Win 7 32бит ультимативная поставил две планки по 2 гб оп видит 3 как разблокировать всю память?

    @none7
    Когда то была технология под названием PAE, позволявшая адресовать 64 Гб физической памяти. Но так как было много горе-программистов драйверов и проектировщиков железа, считавших, что адрес физической памяти ограничен 32-битами, Microsoft со времён Windows XP SP2 решили не использовать адреса за пределами 4 Гб. С тех пор решения для Windows нет, только переход на x86-64 или Linux.
    Ответ написан
    Комментировать
  • Как исправить ошибку "Buffer is too small" C++?

    @none7
    Ошибка в том, что все сишные строки они null-termanated и strlen этот '\0' не учитывает при подсчёте длины строки. В первой строке оно работает по ошибке, так как не должно быть там strlen(space). Вообще это совершенно дурной способ использования функции strcat_s, ведь второй параметр это не длина копируемой строки, а максимально возможная длина буфера, который 80 байт. В таком виде очень даже возможно переполнение буфера.
    Ответ написан
  • Как правильно вывести vsftpd за NAT?

    @none7
    Вангую: из за того, что у Вас pasv_min_port > pasv_max_port он выбирает любые порты кроме 20200-20400.
    Ответ написан
    Комментировать
  • WinForm | Как записать текст из textBox в файл?

    @none7
    std::string ToCppString(String^ s, Text::Encoding^ enc = Text::Encoding::ASCII) {
        array<unsigned char>^ chars = enc->GetBytes(s);
        pin_ptr<unsigned char> pp = &chars[0];
        char *first = (char*)pp, *last = first + chars->Length;
        return std::string(first, last);
    }
    Ответ написан