Задать вопрос
  • Как подключиться к домашнему интернету находясь в другом городе?

    @pfg21
    ex-турист
    настроить впн в роутере. в боле менее продвинутых модельках он есть.
    вариант2: прошить роутер прошивкой опенврт (и подобные) и настроить в нем сервер vpn.
    после может делать что хотите.
    Ответ написан
    3 комментария
  • Существует ли метод хранения объектов на c++, похожий на map со способностью дублировать ключи?

    Adamos
    @Adamos
    Для озвученной задачи имеет смысл использовать не мультимап, а std::map< date_t, std::vector< Event > >
    Ответ написан
    Комментировать
  • Использовать mutex при обращении к любой памяти или только конкретной ячейке?

    gbg
    @gbg Куратор тега C++
    Любые ответы на любые вопросы
    Если потоки точно не пересекаются нигде, мьютекс не нужен, а ошибка где-то в другом месте.
    Ответ написан
    3 комментария
  • Каждый порт свича считается доменом коллизий?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Для начала вы путаете термины. Домен коллизий - это группа узлов, конкурирующих за одну среду передачи. Широковещательный домен - это участок сети, на котором возможна передача широковещательных (broadcast) сообщений.
    Порт свитча даёт соединение точка-точка, причём приём и передача сигнала в нём разнесены либо физически (100BASE-T), либо по частотам (1000BASE-TX). Соответственно, домена коллизий не образуется, нет конкуренции передатчиков.
    При этом порт может как входить, так и не входить в широковещательный домен, в зависимости от настроек свитча.
    Ответ написан
    2 комментария
  • Скорость загрузки не соответствует скорости интернета?

    Jump
    @Jump
    Системный администратор со стажем.
    Скорость загрузки не соответствует скорости интернета?
    Интернет это всемирная сеть.
    Он никуда не двигается, у него нет скорости.

    Есть скорость интернета которую отображает Speedtest она равно 100Мбит/с
    Это скорость доступа к определенному ресурсу.

    Если кто знает то подскажите пожалуйста как решить проблему
    В чем проблема?
    Разные ресурсы - разные скорости.
    С чего вы решили что доступ к серверу стима будет идти с такой же скоростью что и к серверу Speedtest?
    Ответ написан
    1 комментарий
  • Возможно ли использовать удаленный рабочий стол 2 людям одновременно?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Элементарно. Каждый под своей учёткой.
    Если нет лицензий для RDS, то могут входить одновременно двое, но исключительно в целях администрирования сервера. Если лицензии есть и настроен сервер RDS то двое в режиме администратора (с ключом -admin) и по количеству лицензий в обычном режиме RDS.
    Ответ написан
    2 комментария
  • Как передать информацию с сервера к клиенту?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    После получения данных сервер должен записать в сокет, из которого он сделал recv, ответ через send.

    Клиент после отсылки данных должен из сокета читать ответ.
    Ответ написан
    Комментировать
  • После закрытия скомпилированной программы появляется ошибка Debug Assertion Failed?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как исправить?

    Прочитать сообщение об ошибке для начала. Понять, что оно говорит о том, что поломана куча. Силой мысли найти место в программе которое её ломает. Если силой мысли не получается, то скомпилировать программу с какими-нибудь полезными отладочными опциями, запустить и проанализировать вывод. Для gcc это была бы опция -fsanitize=address, что у M$ для этого есть я не знаю.
    Ответ написан
    1 комментарий
  • Как накидать логику работы будущей программы?

    gbg
    @gbg
    Любые ответы на любые вопросы
    Вы не научитесь писать и проектировать программы, если самостоятельно не набьете на этом шишек.

    Переписывание программы заново - нормальный процесс, называемый рефакторингом. "На берегу", еще до начала написания кода, вы не будете видеть все тонкости и нюансы. Так что хлопанье себя по лбу и отправка кода в корзину = нормальный творческий процесс разработки.

    После нескольких таких заездов по граблям вы получите опыт - ошибки и трудности, с которыми вы начнете сталкиваться будут такие, что ни в книге сказать, ни на StackOverflow прочитать.
    Ответ написан
    1 комментарий
  • Что не так с наследованием?

    Nipheris
    @Nipheris Куратор тега C++
    Т.к. и базовый класс и класс-наследник являются шаблонными, то компилятор C++ считает, что члены класса mnoj являются так называемыми "зависимыми идентификаторами" (dependent names). Такие идентификаторы по-умолчанию не включаются в процесс разрешения имён и их нужно "затаскивать" в него явно.

    Вариант 1 (советую его): обращаться к полям базового класса через this: this->index - это вообще хорошая практика - сразу видно, где используется локальная переменная, а где идёт работа с состоянием объекта.
    Вариант 2: использовать using mnoj<T>::index; и using mnoj<T>::mas внутри описания класса mnoj1.
    Ответ написан
    3 комментария
  • Почему я не могу инициализировать свою структуру как примитивы языка?

    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 комментария