• Почему я не могу инициализировать свою структуру как примитивы языка?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    int a(10); // работает
    MyStruct b(); // не работает

    смотри, я пофиксил твой кейс:
    int a(); // не работает
    MyStruct b(); // не работает

    -- теперь одинаково не работает. Ну т.е. одинаково работает, но вместо определения переменной объявляет функцию.
    Или так:
    int a(10); // работает
    MyStruct b(10); // работает

    если завести у MyStruct конструктор с целочисленным параметром.
    Если серьёзно, то в чём проблема-то?
    Ответ написан
  • Почему работает const, а не constexpr для char*?

    @MarkusD Куратор тега C++
    все время мелю чепуху :)
    Дело в том, что указанный слева квалификатор const относится к правой половине спецификации типа до первого модификатора.
    const char& - ссылка на константный символ. Квалификатор - const, модификатор - &.
    const char* - указатель на память константного символа. Квалификатор - const, модификатор - *.

    При этом, указанный справа квалификатор const относится ко всей части спецификации типа левее, включая все модификаторы.
    char* const - константный указатель на память символа.
    const char* const - константный указатель на память константного символа.
    char* const * - указатель на память константного указателя на память символа.
    char& const существовать не может, т.к. квалификаторы не применяется к ссылкам. Тут будет ошибка трансляции.

    И при чем же здесь constexpr? Просто constexpr всегда относится только ко всей спецификации типа со всеми модификаторами.
    const char* - указатель на память константного символа.
    constexpr char* - константный указатель времени компиляции на память символа. Тут нет ошибки, память символа тут считается модифицируемой.

    И если объект с типом constexpr char* получит характеристику ODR-used [?], то после трансляции кода это будет уже объект с типом char* const. Вот так.
    В то же время, строковые литералы имеют тип const char[N], т.е. статически определенный массив константных символов. Такой тип можно привести только к типу const char*.

    В результате, чтобы правильно определить константный указатель времени компиляции на память константного символа, нужно тип определить как constexpr const char*.
    И const в этом месте никакого прямого отношения к constexpr не имеет.
    Ответ написан
    Комментировать
  • Какие файлы редактировать чтобы обычному пользователю дать право на sudo?

    saboteur_kiev
    @saboteur_kiev Куратор тега Linux
    software engineer
    1. Можно отредактировать сам файл /etc/sudoers, обычно это делается командой visudo от рута
    2. Просмотреть файл /etc/sudoers - если там есть доступ для какой-либо группы (например wheel,sudoers,admins), то просто добавить пользователя в эту группу (в /etc/groups)
    Ответ написан
    Комментировать
  • Как настроить GitHub для двух проектов с общей логикой?

    @rPman
    Третий репозиторий под общий код
    Использовать git submodule
    Ответ написан
    Комментировать
  • Как установить Root CA формата der в Ubuntu 20.10?

    @pfg21
    ex-турист
    openssl x509 -inform DER -in fd.der -outform PEM -out fd.pem ??
    Ответ написан
    4 комментария
  • Как получить доступ к винчестеру?

    gbg
    @gbg Куратор тега Windows
    Любые ответы на любые вопросы
    Доступ к диску на уровне блочного устройства можно получить, открыв специальный файл "\\.\PhysicalDrive0"

    Диск при этом, естественно, нужно перевести как минимум в readonly, а лучше, отключить от операционки, потому что в противном случае, у вас ничего не получится - файл не откроется. Ну и про админские права не забывать.

    Важно понимать, что любая неосторожная запись на диск может привести к частичной или полной потере данных, причем вы заметите это не сразу.
    Ответ написан
    Комментировать
  • Провайдер режет TCP/UDP сессии через 240 сек неактивности, что делать?

    В любой NAT/PAT таблице всегда есть таймаут, иначе если бы оба конца соединения отвалились из-за сетевых проблем или из-за ребута или плохо настроенных фаерволов, запись оставалась бы в таблице навечно. В UDP вообще нет ни одного механизма удаления записи из NAT/PAT кроме таймаута.

    С одной стороны, ваш провайдер прав - в любом случае при раборе через NAT/PAT необходимо настроить TCP KEEPALIVE, он настраивается в любом ssh-клиенте, например https://songhuiming.github.io/pages/2019/02/28/how... и это единственный гарантированный способ решения вашей проблемы.

    С другой стороны, 240 секунд очень маленький таймаут (обычно используется время порядка 10 минут для UDP и порядка часа для TCP) а TCP KEEPALIVE умеют слать не все клиенты, поэтому стоит продолжить ругаться с техподдержкой чтобы таймаут или размер таблицы или диапазон NAT-портов увеличили дo разумных значений.
    Ответ написан
    1 комментарий
  • Как посчитать пройденное время от одного запуска к другому?

    Сохраняйте время последнего запуска в файле или реестре (windows). И при новом запуске программы считывайте время оттуда.
    Ответ написан
    4 комментария
  • В чём преимущества и недостатки установок через apt и snap?

    shurshur
    @shurshur
    Сисадмин, просто сисадмин...
    Нужно понимать принципиальную разницу подхода:

    apt - установка из маленьких пакетов, вместе образующих большую и сложную систему, при этом софт может массово совместно использовать одни и те же файлы и библиотеки, благодаря чему экономится место на диске, оперативная память итд итп. Надо понимать, что apt - это пакетный менеджер для определённого вида пакетов (deb), хотя в своё время существовал вариант для rpm (может и сейчас существует, просто смысла в нём мало после появления yum).

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

    snap по большому счёту часто используют для установки тяжёлых приложений, которые может бысть сложно опакетить, особенно учитывая разнообразие присутствующих в мире дистрибутивов (debian/ubuntu и их клоны) разных версий. В то время как большинство штатного общеиспользуемого софта чаще распространяют в виде пакетов, идущих в составе дистрибутива или отдельно (в том числе в виде разных собранных под разные варианты систем пакетов).
    Ответ написан
    7 комментариев
  • Почему функция не возвращает указатель на объект класса?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    if (!a)	{
        a->s = s;
        cout << 5;
        return a; //ошибка, не возвращает указатель на обьект класса
    }


    У вас тут a==NULL - пустой указатель. Вы пытаетесь его члену что-то присвоить (то. что программа не упала - вам дико повезло). потом вы возвращаете этот же пустой указатель.

    Вам надо создавать новый объект через new в этом случае.
    Ответ написан
    3 комментария
  • Нужно найти маленького размера файлы в разных каталогах, как?

    wisgest
    @wisgest
    Не ИТ-специалист
    forfiles — внешняя утилита, которая не везде установлена, и, честно говоря, не знаю зачем нужна, так как, по крайней мере в большинстве случаев, всё что можно сделать ей, можно сделать внутренней командой for, — советую изучить справку:
    for /?

    И сохранять весь результат по папкам нужно в один файл, а не в несколько как у меня.

    Либо группировать команды: вместо
    comand1>file.txt
    comand2>file.txt

    писать
    (
    	comand1
    	comand2
    )>file.txt

    либо использовать >> вместо > для дозаписи в файл без его очистки:
    comand1>file.txt
    comand2>>file.txt
    Ответ написан
    Комментировать
  • Как правильно привести тип void* к int?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Размер void стандартом не определён, поэтому поведение операций инкремента/декремента и индекса для указателя типа void* также не определено и зависит от компилятора.
    В вашем случае компилятор принял размер void за 1 байт, поэтому v[i] работает с шагом в 1 байт.
    ints[i] работает с шагом sizeof(int) байт, то есть 2, 4 или 8 байт, в зависимости от компилятора и целевой системы.
    Некоторые компиляторы просто выдадут ошибку при таком использовании указателя с типом void*.
    Ответ написан
    Комментировать
  • Как изменить символьное значение структуры?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Указатель на статически определённый массив нельзя изменить.
    Вы можете либо определить массив динамически и самостоятельно выделять и освобождать для него память, либо копировать содержимое массива через memcpy/strncpy.
    Ответ написан
    Комментировать
  • Как настроить язык при запуске консоли Windows?

    HemulGM
    @HemulGM Куратор тега Windows
    Delphi Developer, сис. админ
    Выбрать раскладку по умолчанию в ОС
    Ответ написан
    1 комментарий
  • Как это работает в c++?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Не число, а символ. В переменную попадёт ASCII-код символа. Это неявное приведение типов.
    Ответ написан
    6 комментариев
  • Как заменить драйвер устройства находящегося в локальной сети?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Возможно ли это сделать на практике?

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

    CityCat4
    @CityCat4
    //COPY01 EXEC PGM=IEBGENER
    Есть предположение, что один из путей, перечисленных в PATH, недоступен и об этом пытаются сообщить.
    Ответ написан
    Комментировать
  • Сбербанк или ИП Пирожкова в качестве первой работы после смены направления?

    php666
    @php666
    PHP-макака
    В основном пишут что это огромная и неповоротливая гос.машина, все как в армии
    это плохо? Может хочешь делать устные задачи в духе "да тут работы на 5 минут"?

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

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

    я понимаю что невозможно дать однозначный совет
    однозначный ответ можно вполне дать - не работать на ИП, не работать на мелкие никому неизвестные конторки. Никогда. Ни при каких обстоятельствах. Читай статью по ссылке полностью: ebanoe-it.ru/2020/12/28/right-way/
    Тут даже банально строчка в резюме из Сбертеха даст +200% к карме, нежели работа в ИП "Рога и Копыта"
    Ответ написан
    3 комментария
  • Инкремент и декремент?

    gbg
    @gbg Куратор тега C++
    Любые ответы на любые вопросы
    Вот вам много букв по теме

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

    hint000
    @hint000
    у админа три руки
    Если на сервере у вас есть права администратора, то вот:
    скриншот
    6036fe6e03806746292421.png
    Ответ написан
    5 комментариев