Задать вопрос
  • Ошибка при загрузке attempted_write_to_readonly_memory?

    @res2001
    В интернетах по этой ошибке пишут следующие действия:
    1. Сделайте тест памяти.
    2. Обновите БИОС.
    3. Обновите драйвера.
  • Как подключить htmlcxx в проект C++?

    @res2001
    rastr,
    unresolved symbol

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

    @res2001
    Денис Фатеев,
    что надо сделать

    Просветите нас, как вы завершаете программу?
    Т.к. если будет eof в stdin, то должен сработать последний cout и вывести результат последнего подсчета.
    Видимо вы завершаете программу с помощью Ctrl+C, а это аварийно прерывает выполнение на текущей операции, а вы подобные исключительные ситуации никак не обрабатываете.
    Выхода 3:
    1. Завершать выполнение, используя ввод EOF: в винде Ctrl+Z, в никсах Ctrl+D
    2. Предусмотреть корректное завершение программы с помощью ввода какого-то значения, а так же, конечно, при достижении eof или ошибки cin.
    3. обрабатывать Ctrl+C. По моему, try/catch не ловит Ctrl+C, но могу ошибаться. В винде можно поставить собственный обработчик на подобное прерывание (с помощью Console API), а в никсах надо ловить соответствующие сигналы (POSIX API).
  • Почему arr и &arr отображаются одинаково?

    @res2001
    Артём,
    а сам же поинтер где-то должен хранится

    Вот как раз в этом и разница. Массив это почти как настоящий указатель, только память под указатель не выделяется и про реальный адрес знает только компилятор. Для удобства в некоторых случаях имя массива ведет себя как указатель, а в некоторых как массив. Возможно, это и не так удобно на самом деле и только вводит в заблуждение.
    Четвертый пример вообще сносит неподготовленную крышу и вроде как противоречит примерам выше :) Это результат натягивания массива на указатель.
    Адрес автоматического массива берется как смещение относительно указателя стека, так же как и адреса других автоматических переменных.
    В общем не стоит относится к массиву как к указателю. Нужно знать нюансы в поведении и использовать там где это необходимо. К слову в реальности не так уж часто приходится иметь дело со статическими/автоматическими массивами, гораздо чаще - с динамическими. И обычно, там где приходится работать со статическими/автоматическими массивами работа эта достаточно тривиальна, без вот этих ваших вывертов мозга :)

    Еще один пример подобного не совсем стандартного поведения это имя функции:
    void foo(void);
    ...
    if(foo == &foo)
       cout << "Это условие всегда срабатывает" << endl;
  • ДНС - адрес в IPv4, Что будет если его изменить?

    @res2001
    Данила Иванов, Проверить, что возвращает DNS у клиента можно просто выдав в консоли команду:
    nslookup network3.reach.group
    Команда должна вернуть IP адрес, назначеный этому имени.
    Дальше можно этот адрес пропинговать, это проверит доступность адреса.
    Но из-за разных проблем у провайдеров, хостеров, с настройками DNS серверов, промежуточного кэширования и т.п. IP адрес может возвращаться не правильный. Точно так же и пинг может не срабатывать, если на хосте (или где-то на промежуточном шлюзе) пинги заблокированы фаерволом. В общем эта проверка не дает 100% гарантии. Но кое-какую информацию может дать. Особенно, если проверку будет проводить админ хоста, а не просто посторонний, не владеющий дополнительной информацией.
    На счет замены IP адреса - не владея информацией о внутренней организации сети хоста (какие адреса доступны в пуле, какие ДНС имена зарегистрированы, где и какие ДНС серверы обслуживают зону где находится хост, как осуществляется доступ к серверу из интернет и т.д.) вообще нельзя ничего сказать. Обычно замена адреса (какого? на какой? где?) ни к чему не приведет, только сделает еще хуже, но могут быть варианты.
    Так что, да, админам видней. Не стоит лезть в их кухню. Если админы сами не сильны, то им следовало бы найти человека, который сделает им хорошо.
  • Как при переносе файлов NTFS назначать права конечной папки?

    @res2001
    2k21, Это не проблема, на самом деле.
    Это стандартное поведение винды: при переносе файлов права то же переносятся. При копировании - в новых файлах права наследуются от вышестоящей папки назначения.
    Из расширенных прав на самом деле нужно только право на "Смену разрешений". Если его убрать, то пользователи не смогут менять права файлов и они, наверное, будут наследоваться.
    Вообще никогда не ставте для пользователей "Полный доступ", достаточно манипулировать стандартным набором прав.
  • Как сделать переадресацию от клиента во внешнюю сеть(OpenVPN)?

    @res2001
    Не нужно делать "переадресацию портов". Нужно настраивать маршрутизацию и/или NAT и разрешить ВПН трафик в фаерволе.
  • Как настроить ssh туннель для smb?

    @res2001
    Serbli,
    Но так же необходимо чтоб 445 порт был свободен на этом сервере.

    Ключевая фраза. Когда на клиенте и сервере работает SMB, то этот порт занят виндой ВСЕГДА. И не только этот, но и 135,137,138,139 и их UDP братья. Следовательно SSH не сможет открыть эти порты для проброса!
    Так что забудьте. Вам нужен полноценный ВПН, который не SSH.

    Кстати, для SMB используются не только TCP порты, но и такие же UDP порты, а их SSH пробросить не сможет в любом случае.
  • Как исправить резкое повышение пинга в играх при частых действия?

    @res2001
    Данил Самусев, Не имеет значение широкополосный у тебя интернет или нет - скорость передачи данных фиксированная в любом случае. Именно этот факт играет роль, а технология - не важна.
    Кроме скорости это может зависеть и от производительности проца - чем большы ты его загружаешь, тем меньше остается ресурсов для фонового пинга.
  • Из-за чего программа на C выдаёт неправильный ответ?

    @res2001
    Anvario0, Можете попробовать логически доказать, что в задаче нет решения.
  • Из-за чего программа на C выдаёт неправильный ответ?

    @res2001
    Anvario0, Не обязательно.
    Сделайте в while выход при достижении a<12 (т.е. после переполнения), чтоб не было вечного цикла.
  • Как написать компаратор для std::find?

    @res2001
    но ловлю 3 ошибки

    Какие ошибки? Судя по коду компаратора ошибок быть не должно. Разве что сортировать может не правильно :)
  • Что значит открытый ключ сертификата подписанный закрытым ключом ЦС?

    @res2001
    SagePtr, Где в ссылке про хэш? Читаем ссылку:
    п.4.1.1.3 поле signatureValue (содержит подпись ЦА сертификата) "... поле tbsCertificate является входом для функции подписи...". Т.е. по сути подпись генерируется по полю tbsCertificate.
    п.4.1.1.1 поле tbsCertificate: "Поле содержит имена субъекта и эмитента, открытый ключ связанный с субъектом, срок действия и другую сопутствующую информацию. Поля подробно описаны в разделе 4.1.2"
    Если спуститься в п.4.1.2, то там можно увидеть расшифровку каждого поля, которое входит в tbsCertificate.

    По сути поле tbsCertificate - это и есть вся информация о владельце сертификата, которая содержится в сертификате и возможно пачка расширений. В общем ЦА ставит подпись на весь сертификат.

    Это можно понять просто посмотрев текст сертификата. Поля сертификата расположены в определенной иерархии. Все что в иерархии полей сертификата идет "внутри" поля "Signature Algorithm" подписывается ЦА. Сама подпись ниже на том же уровне.
    Использовал свои сертификаты, сгенерированные с помощью openssl.
  • Почему побайтовый сдвиг даёт разные результаты?

    @res2001
    Евгений Шатунов, В С++20 убрали все рассуждения о знаковом/беззнаковом типе, за исключением UB, когда правый операнд отрицательный . Я так понимаю, что теперь левый сдвиг будет выполняться как для беззнаковых типов, затем битовый результат сдвига интерпретируется в результирующий тип.
    Интересно, реально компиляторы как-то меняли свое поведение при сдвигах от стандарта к стандарту. Что-то мне кажется, что нет. В стандартах формулировки потихоньку подгоняли под реальное положение дел. Пожалуй в С++20 формулировка стала наиболее адекватной.
  • Почему побайтовый сдвиг даёт разные результаты?

    @res2001
    Евгений Шатунов, Спасибо за ссылки. В стандартах в общем то все +-одинаково. В С++20 изменили формулировку, но смысл, по моему тот же самый, даже несколько упростили, что странно :)
    Прочитал статью, там UB только при использовании отрицательных значений.
    Таким образом, в нашем примере сдвиг влево это не UB, но его результат будет отрицательным, и тогда уже UB - это следующий сдвиг вправо. Хотя тут в ассемблере - "арифметический сдвиг" с вполне понятным результатом для отрицательных чисел. Но с точки зрения стандартов С++ все сдвиги с отрицательными операндами UB.
  • Есть ли разница для шифрования UTF-8 строк и ASCII строк через SHA-1?

    @res2001
    HamsterGamer, UTF8 так же как и все остальное можно и в обычном массиве charов хранить.
    На счет кодировок - в той же винде есть встроенная WinAPI функция, которая все вам перекодирует куда надо, главное задать правильно исходную кодировку и кодировку назначения.
    Для того, что бы точно знать какая у вас в программе используется кодировка для строковых литералов, нужно просто сохранить сами исходники в этой кодировке, а литерал объявлять без всяких префиксов, ну т.е. просто так: char *str = "Привет мир!";.
    В С++20 добавились новые типы char для разных вариантов utf8, можно было и их использовать.
  • Есть ли разница для шифрования UTF-8 строк и ASCII строк через SHA-1?

    @res2001
    Не нужна спец.реализация. Шифрованию пофигу на содержимое шифруемого буфера. Видимо у вас косяк с определением размера буфера.

    Какая ОС? Какой компилятор?
    Количество символов откуда берете?
    wchar_t - не обязательно 2 байта занимает.
    Винда + msvs - да, 2 байта. В остальных комбинациях надо уточнять в документации компилятора.

    их ответ отличается от ответа онлайн кодеров

    Может это эти онлайн кодеры не поддерживают UTF8?
    Кстати, wchar_t - это не UTF8, в винде это UTF16LE
  • Почему функция ShellExecute() не может открыть папку?

    @res2001
    Фиг знает. Может потому что слеши не те?
    В обычных путях винда давно уже нормально жует оба слеша, а вот в UNC нет.
  • Почему побайтовый сдвиг даёт разные результаты?

    @res2001
    Евгений Шатунов, Не думаю, что это UB:
    For signed and non-negative a, if a * 2^b
    is representable in the unsigned version of the return type, then that value, converted to signed, is the value of a << b (this makes it legal to create INT_MIN as 1<<31); otherwise the behavior is undefined.