• Почему падает ядро при записи в массив?

    @none7
    mov     eax, move
    mov     ebx, field

    Это присвоение указателей на переменные? А затем сложение двух указателей и запись в этот мусор? Возможно movzx eax, byte ptr [move]
    Ответ написан
  • Инъекция файлом?

    @none7
    4 года назад ImageMagick

    Защитится от такого можно только урезая права и время жизни приложений занимающихся обработкой ввода пользователя. В общем контейнеры являются типовым решением для запуска дырявого ПО. Ну или микросервисы, сейчас WebAssembly в эту сторону толкают.
    Ответ написан
    Комментировать
  • Как генерируется подпись?

    @none7
    Подпись это хеш-сумма(sha1 в данном случае) данных зашифрованная секретным RSA-ключом. Расшифровывая подпись публичным RSA-ключом, можно обратно получить хеш данных и сравнив его с хешем имеющихся данных, можно проверить подпись. Сертификат содержит в себе публичный RSA-ключ. Вы не сможете сгенерировать правильную подпись, не имея секретного ключа, в этом суть любой ассиметричной криптографии. Если бы можно было бы это обойти, то вся безопасность интернета накрылась бы медным тазом, ибо ассиметричное шифрование это основа SSL.
    Ответ написан
    2 комментария
  • Какая разница между return this и return *this?

    @none7
    Изначально операция *указатель пришла из Си и там она называлась "разыменования указателя". Означает, что все операции будут произведены со значением на которое ссылается указатель. При присвоении значения другой переменной будет создана копия значения. Но в C++ всё осложнило введение ссылочного типа, символ '&'. Это тот же указатель, но каждая операция с ним аналогична *(указатель) и соответственно арифметика указателей со ссылками невозможна(без приведения типов).
    В данном примере происходит разыменование указателя на объект, но так как возвращаемый тип ссылка, то происходит автоматическое приведение типа в неё. Логично предположить, что в результате операции += произойдёт копирование из ссылки, но ничерта, она просто выбрасывается...
    Ответ написан
    Комментировать
  • Как организовать взаимодействие клиентов напрямую в Java?

    @none7
    Сама реализация требует лишь понимания основ сетевого программирования(socket,bind,listen,connect java.net.*). А подводный камень весьма огромен. Клиенты в отличии от серверов как правило не имеют глобально-маршрутизируемых адресов(белых) или они закрыты фаерволом. Есть костыли вроде UPNP и NATPNP, но работают они далеко не всегда. Так же есть техника STUN(за счёт неё работает например torrent-utp), но и она будет работать всё реже и реже и в мобильных сетях не работает вообще(как в прочем и UPNP с NATPNP). С IPv6 отдельная головная боль, ведь тот адрес, с которого клиент подключился к серверу, может в скором времени стать недействительным. А неизменный адрес лучше не светить в интернете без разрешения пользователя.
    Итого, такая архитектура может работать только в локальных сетях, так как современный Web очень не любит p2p.
    Ответ написан
    2 комментария
  • Как отправлять POST, GET запросы в C++?

    @none7
    Ну значит в инструкции написано не всё. У Вас линкер не видит libcurl и если он на это не ругнулся, то вероятно в конфигах сборки эта библиотека не добавлена вовсе.
    Ответ написан
    Комментировать
  • Отслеживать курсор мыши службой windows, написанной на pyhon?

    @none7
    Службы не подключены к рабочему столу. Да и какому столу они должны быть подключены? Ведь на терминальном сервере может быть множество пользователей и у каждого свой указатель мыши.
    About Window Stations and Desktops
    Ответ написан
    1 комментарий
  • Как следить за памятью самостоятельно?

    @none7
    Над этим задумывались игроделы, потому, что GC периодически фризит процесс. И единственный способ этого избежать, не терять ссылки на объекты. Естественно все используемые объекты при этом должны переиспользоваться и нужно писать свой аллокатор, который повторно использует объекты не меняя имён и типов в них. И естественно, что стандартный контруктор не может быть использован для их повторной инициализации. С массивами чисел всё довольно просто, просто берём код malloc из emscripten и получаем начальный индекс в глобальном массиве и функциям передаём длину отрезка как в Си. С массивами объектов сложнее, ведь важно, чтобы оптимизатор, заранее знал тип объекта в массиве.
    Как это называется? Мазохизм!
    Ответ написан
    Комментировать
  • Как в C++ создать процесс с именем Load.txt?

    @none7
    CreateProcess всё равно какое расширение у исполняемого файла, если оно не в списке расширений исполняемых файлов. Так, что можно переименовать любой .exe в load.txt и запустить функцией CreateProcess.
    Ответ написан
    Комментировать
  • При запуске приложения или при сохранении выдает ошибку, что "недостаточно памяти для продолжения выполнения программы"?

    @none7
    Диспетчер задач врёт, у Вас ещё меньше памяти. Свопа осталось 62 мб, то есть если программа под распаковку картинки просит больше, то случится фейл, а языки с gc память резервируют крупными блоками. Картинки жрут чуть больше чем 4 байта на пиксель, гифки тоже для каждого кадра, тут уж сами считайте сколько это памяти. Что делать? Правильный вариант раскошелится на память, цена вопроса на али около 1500р. Неправильный, затянуть пояс потуже. Увеличить своп, перейти на 32-битную винду, грохнуть дискорд и другие прожорливые приложения и ненужные службы. В крайнем случае кодить в легковесном редакторе, а отлаживать по старинке, выводом информации в лог.
    Ответ написан
    4 комментария
  • Как сделать простой цикл с printf на nasm 64bit macos?

    @none7
    В Mac OS x86-64, rcx используется в качестве четвёртого параметра и не обязан сохранять свое значение после вызова функции. Храните значение счётчика в памяти или в одном из сохраняемым регистров(rbx, rbp, r12-r15), но помните Вы так же обязаны восстановить значения этих регистров, при выходе в код Си, если конечно меняли их.
    Посколько rcx не сохраняется то лучше заменить loop на пару инструкций dec, jne.
    Ответ написан
  • Как осуществляется межпроцессное взаимодействие на C++?

    @none7
    В C++ никак. Любое взаимодействие с внешним(для программы) миром это привилегия ядра ОС. STL предоставляет весьма ограниченный набор обёрток над системным API и коммуникация между процессами не входит в этот набор. Традиционным способом коммуникации являются Pipe и Socket, но они просто переправляют массивы байтов. И если нужно соорудить RPC, то нужно сериализовать параметры и в таком виде отправлять. И эти обёртки так или иначе придётся писать самому, так как полноценной RTTI в C++ нет.
    Ответ написан
    Комментировать
  • Чем php плох для реализации websocket сервера?

    @none7
    Потому, что PHP создан, чтобы умирать. Это конечно устаревшая статья и вероятно больших проблем в PHP 7 уже нет, но этого нельзя сказать об устаревших библиотеках и фреймворках. Но если Вы будете писать на чистом PHP, не пытаясь переиспользовать старый, синхронный, однопоточный код, то проблем быть не должно.
    Ответ написан
  • Windows использует оперативную память при копировании файлов?

    @none7
    Копирование это чтение и запись содержимого файлов. Диски не умеют самостоятельно перебрасывать данные минуя оперативную память. Вполне естественно, что данные при этом с некоторой вероятностью остаются в файловом кэше. А вот на счёт невостребованности, тут всё не так просто, ведь данные из какого то файла могут оказаться нужнее памяти какого то приложения. При этом ядро может выбросить его в своп, а в памяти хранить кеш файлов. К сожалению ситуация когда ОС неправильно расставляет приоритеты вполне обыденная и десятки гигабайт памяти вовсе не панацея от этой проблемы.
    Ответ написан
  • Почему написанная программа не отправляет уведомления?

    @none7
    Для отображения сообщения с Vista требуется флаг NIF_SHOWTIP. Без него только будет появляться иконка в трее, а сообщение будет подавлено. RegisterClassEx требует структуру WNDCLASSEX
    Ответ написан
    Комментировать
  • Почему показано, что доступно 3 ГБ памяти, но свободно всего 10?

    @none7
    В Windows есть множество пуллов памяти и не все из них хорошо освобождаются. Просто ОС думает, что те данные важнее. Можете использовать программу RAMMap из набора sysinternals, чтобы сбросить различные кеши. В ней же можно подробнее увидеть чем занята память.
    Ответ написан
    Комментировать
  • Как реализовать управление памятью в ядре?

    @none7
    Процессоры x86-64 могут адресовать 256Тб виртуальной памяти. Будет ли оптимальным полный перебор всех блоков по 4к? Будет ли вообще приемлемо хранить информацию о каждом 4к блоке каждого процесса, при таком объёме виртуально памяти у каждого? Очевидно, что таблица свободных блоков проиндексированная по размеру необходима. Windows кстати во избежание разрастания этих таблиц выделяет виртуальную память блоками по 64к.
    Обычно выделением виртуальной памяти под переменные занимается куча(heap), а приложению отдаёт память сколько попросят, независимо от размера блока виртуальной памяти. Естественно, что первое выделение не меньше одной страницы.
    Ответ написан
    Комментировать
  • Подсистема Linux для Linux?

    @none7
    Ответ написан
    Комментировать
  • Откуда в выводе dig доменное имя?

    @none7
    На самом деле ответ сервера выглядит так:
    HEADER:
            opcode = QUERY, id = 2, rcode = NOERROR
            header flags:  response, want recursion, recursion avail.
            questions = 1,  answers = 2,  authority records = 0,  additional = 0
    
        QUESTIONS:
            login-payoneer-com.payoneerx.prod2.reblaze.com, type = A, class = IN
        ANSWERS:
        ->  login-payoneer-com.payoneerx.prod2.reblaze.com
            type = CNAME, class = IN, dlen = 23
            canonical name = cs1415.adn.rhocdn.net
            ttl = 600 (10 mins)
        ->  cs1415.adn.rhocdn.net
            type = A, class = IN, dlen = 4
            internet address = 192.229.182.98
            ttl = 3600 (1 hour)

    То есть у имени login-payoneer-com.payoneerx.prod2.reblaze.com нет A записей, но есть CNAME cs1415.adn.rhocdn.net. Поскольку обе зоны прописаны на одном сервере, он сразу же добавляет ответ с A записью для cs1415.adn.rhocdn.net, то есть 192.229.182.98. dig mail.google.com. +short так же вернёт строку с именем и адресом.
    Ответ написан
    1 комментарий
  • Как в C# подключить свою библиотеку dll при работе из консоли?

    @none7
    shared1.cs
    public class MyShared {
        public static string getHello() => "Hello, World";
    }
    prog.cs
    class MyProgram {
    	static void Main(string[] args) => System.Console.WriteLine(MyShared.getHello());
    }

    csc /t:library shared1.cs
    csc /t:exe /r:shared1.dll prog.cs
    Ответ написан
    Комментировать