Задать вопрос
  • Не могу понять как скомпилировать проект на C и lua?

    2ord
    @2ord
    Ключ к разгадке лежит в файле Makefile.

    Добавлено
    Нужно выполнить команду make в корне проекта. Предварительно установить компилятор.
    Ответ написан
    2 комментария
  • Как указать путь к своей папке?

    wisgest
    @wisgest
    Не ИТ-специалист
    %0\..\TeamViewer_Host.msi (кажется, может не работать во внутренних подпрограммах, вызываемых командой call :метка); %0 не следует заключать в кавычки, так как он их может уже содержать (но, с другой стороны, возможны нежелательные последствия, если он содержит спецсимволы вне кавычек…), но можно использовать кавычки в оставшейся части пути: %0\..\"TeamViewer Host.msi".

    Или "%~dp0\TeamViewer_Host.msi" (должна быть включена расширенная обработка команд, что обычно имеет место по умолчанию).
    Ответ написан
    5 комментариев
  • Как переадресовать udp порт?

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

    Комментировать
  • Какой код правильнее?

    @MarkusD Куратор тега C++
    все время мелю чепуху :)
    Любой написанный человеком код всегда должен быть полностью понятен другому человеку при чтении. Важно обратить внимание на то, что код читателю должен быть понятен уже просто при чтении, а не при запуске и, тем более, не при трассировке. Читатель должен иметь возможность не задаваться вопросами о причинах существования написанного кода.

    Вопросов к первому варианту нет. Тут сразу и наглядно видно агрегатную инициализацию, т.к. тип Book является агрегатным.

    Ко второму варианту есть вопросы. Какова цель присутствия auto вместо явного указания типа переменной? Зачем писателю потребовалось дважды указать тип, заменив первое указание на auto? Какова цель инициализации копией для данной переменной? Зачем писатель написал так сложно?
    Ответы на каждый вопрос должны предоставлять веское доказательство необходимости существования именно такого кода.

    Чистый код не вызывает у читателя вопросов. Чистый код не молит стереть его или срочно отрефакторить. С чистым кодом приятно работать. Чистый код приятно писать. И самое важное: за чистый код автору не стыдно.
    А вот за грязный код, вроде второго варианта, писателю должно быть стыдно, т.к. писатель таким своим кодом ворует время своих сотрудников и у самого себя в будущем через то, что заставляет тратить это время на то чтобы вчитаться и понять написанное.
    Ответ написан
    Комментировать
  • Как добавить в конец char символы?

    @rPman
    в c++ уже очень давно есть полноценные (и соответственно медленные, но не в реализации а идеологически) строки, класс string с которыми и + прокатит и синтаксически удобные
    Ответ написан
    Комментировать
  • Как найти первый нулевой бит в байте?

    wataru
    @wataru Куратор тега Алгоритмы
    Разработчик на С++, экс-олимпиадник.
    Сначала инвертируйте число (битовое не). Теперь надо найти самый правый единичный бит.
    Можно вычесть из числа 1, тогда поменяются все биты вплоть до этого искомого. Значит xor изначального числа и его же минус 1 даст нам столько единичных бит на конце, каков был номер искомого бита.

    Дальше надо у этого числа подсчитать количество единичных бит - это тоже известная задача. Сначала представим, что каждый бит хранит сколько в этом бите единичных бит. Потом преобразуем это так, чтобы каждая пара подряд идущих бит хранила двоичное число - сколько единичных бит там было в этом отрезке. Потом каждая четверка бит и в конце все 8 бит. Переход от одного уровня к следующему можно сделать через сумму со сдвигом. Вот код:

    // пусть x = 00001011b
    x = ~x;  // 11110100b
    x = x ^ (x-1);  // 11110100 xor 11110011 = 00000111
    x = ((x >> 1) & 01010101b)+(x & 01010101b);  // 00 00 01 10
    x = ((x >> 2) & 00110011b)+(x & 00110011b);  // 0000 0011
    x = ((x >> 4) & 00001111b)+(x & 00001111b);  // 00000011 = 2
    x -= 1; // индексация с 0


    Отдельно надо проверить, вдруг изначальное число было 255 - в таком случае искомого бита нет, но этот код вернет 7.

    Можно сделать для большего количества бит, надо только еще операций добавить и маски расширить. Для 32-битных чисел надо будет добавить еще 2 операции.

    Еще есть вариант с ассемблером в x86 есть операция popcnt.
    Ответ написан
    2 комментария
  • Почему не запускается Ubuntu на VirtualBox?

    SagePtr
    @SagePtr
    Еда - это святое
    В BIOS включить технологию аппаратной виртуализации, называется VTx, AMDv, SVM, Vanderpool или как-нибудь вроде этого (на разных материнках название отличается, но суть одна и та же).
    Ответ написан
    Комментировать
  • Запуск Ethernet адаптера программно (с помощью Bath или PowerShell)?

    @MaxKozlov Куратор тега PowerShell
    Есои рескан в Device manager в контрольной панели ничего не находит, значит софт врятли поможет.
    можно поискать что-нибудь в devcon, типа
    devcon rescan
    devcon reset
    devcon find(all)
    Скорее всего ресет железяка хочет.
    отключить quick-boot?
    Ответ написан
    Комментировать
  • Почему сеть падает?

    anthtml
    @anthtml
    Системный администратор программист радиолюбитель
    С одноранговой сетью, только гасить (отключать, разрывать) по очереди сегменты и таким образом искать что где вылетело.
    самые частые, по практике варианты:
    - два конца пачкорда в свиче (петля)
    - зависший китайский роутер (ддосит всех бродкастом)
    - подгоревшая сетевуха/порт (тоже ложит сеть)
    Ответ написан
    Комментировать
  • Зачем писать class в объявление объекта класса?

    If a function or a variable exists in scope with the name identical to the name of a class type, class can be prepended to the name for disambiguation, resulting in an elaborated type specifier.
    class Foo;  // forward declaration of a class
     
    class Bar { // definition of a class
      public:
        Bar(int i) : m_i(i) {}
      private:
        int m_i;
    };
     
    template <class T> // template argument
    void qux() {
        T t;
    }
     
    int main()
    {
        Bar Bar(1);
        class Bar Bar2(2); // elaborated type
    }

    https://en.cppreference.com/w/cpp/keyword/class

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

    1. Использовать cin.getline https://stackoverflow.com/questions/5838711/stdcin...
    2. У вас при добавлении новых читателей цикл стартует с 0
    for (int i = 0; i < Reader_kol; i++)
    а надо, чтобы стартовал с количества уже добавленных читателей (тут надо учитывать, чтобы не было переполнения массива, т.е. totalReaderCnt + Reader_kol должно быть меньше 500)
    for (int i = totalReaderCnt; i < totalReaderCnt + Reader_kol; i++)
    Ответ написан
    2 комментария
  • Как оптимизировать нагрузку на ЦП при отправке сообщения?

    Оптимизировать нагрузку можно испралением участка исходного кода, который дает максимальную нагрузку. Выявить такой участок кода можно с помощью профайлера.
    Ответ написан
    1 комментарий
  • Почему не могу отправить датаграмму с размером 65516, но могу с 65000?


    Длина датаграммы.
    Поле, задающее длину всей датаграммы (заголовка и данных) в байтах. Минимальная длина равна длине заголовка — 8 байт. Теоретически, максимальный размер поля — 65535 байт для UDP-датаграммы (8 байт на заголовок и 65527 на данные). Фактический предел для длины данных при использовании IPv4 — 65507 (помимо 8 байт на UDP-заголовок требуется ещё 20 на IP-заголовок).

    https://ru.m.wikipedia.org/wiki/UDP
    Ответ написан
    1 комментарий
  • Что означают просто { тут блок кода } в с++?

    @tugo
    Пользуются свойствами блока кода:
    1. создается новая область видимости
    2. объект, созданный внутри блока кода, удалится по завершению (т.е вызовется деструктор). В сочетании с RAII иногда удобно.

    // Когда не хочется придумывать новое имя другой переменной, которая точно такая же по смыслу.
    // И хочется дать ей константность - ее менять я не собираюсь, в смысле изменчивости переменной.
    const bool ok = foo1();
    if (!ok)
        return;
    {
        const bool ok = foo2();
        if (!ok)
            return;
    }


    // Когда надо защитить мьютексом изменение переменной, на как можно более короткое время.
    ...  некий код
    {
        const std::lock_guard<std::mutex> lock(_mutex);
        ++i;
        // _mutex is automatically released when lock goes out of scope
    }
    ... продолжаем код


    Или замерить время выполнения части кода. Создаем объект, в конструкторе которого захватываем текущее время, в деструкторе выводим затраченное время в лог.
    Ответ написан
    Комментировать
  • Какая ОС, по вашему мнению подойдёт лучше?

    @rPman
    неверные предрассудки

    Выбирать само собой linux, тут даже не обсуждается.

    Если у тебя свой специалист по настройке (или ты сам таковым являешься) то ОС нужно выбирать по тому в чем лучше разбираешься.

    Если говорить про то, какую именно то выбор должен быть не системы второго уровня поддержки, а первого, на основе чего создаются эти дистрибутивы, т.е. не ubuntu а debian.

    Фиксация релизной версии есть во многих ОС, даже у gentoo можно 'стабильную' ветку выбрать (на правах шутки ибо релиз в gentoo это как тестовая ветка в debian или даже новее).
    Ответ написан
    3 комментария
  • Солько бит имеет макрос CHAR_BIT?

    @galaxy
    CHAR_BIT - макрос, количество бит в char'е. По стандарту не меньше 8 (но вполне может быть больше).
    sizeof(char) = 1 по определению (sizeof измеряет все в char'ах)
    sizeof(CHAR_BIT) - учитывая, что CHAR_BIT определен примерно как #define CHAR_BIT 8, тут вы вычисляете sizeof(int)
    Ответ написан
    3 комментария
  • Скажите, средствами винды можно реализовать самооочистку памяти от кэша(мрут приложения при сьеденой 6,9гб памяти)?

    saboteur_kiev
    @saboteur_kiev Куратор тега Системное администрирование
    software engineer
    В java есть уборщик мусора, который выбрасывает из памяти все не ненужные значения и кэши, если те сто лет не использовались, при включенной программе.

    Это не совсем так работает. GC чистит память от значений, которые не используются, то есть нигде больше не определены. В java тоже можно засрать память, если программист рукожопы. Но в разы сложнее, чем в С++

    Такое можно реализовать с приложениями в виндовс? Допустим, у меня cad или игрушка сожрала тонну памяти и не использует ее(тупо кэш определен и хоть на голове стой). Взять и подчистить этот кэш, если начинаются галюны.

    Если приложение в винде написано на java она и так будет чистить.
    Если нет - зависит от программиста, который приложение написал.

    Например. Вчера играл в игру, с открытым миром, и та умерла сьев почти 7 гб оперативной памяти. Такие ситуации у меня не первый раз, поэтому интересно посмотреть на решения с кэшем и борьбой с утечками.

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

    Mi11er
    @Mi11er
    A human...
    Если речь о Windows 10, то можете использоваться команду win + v, будет использован журнал буфера.
    Ответ написан
    1 комментарий
  • Как быстро вникнуть в чужой код?

    inoise
    @inoise
    Solution Architect, AWS Certified, Serverless
    Задавать окружающим вопросы. Ртом. Повторять пока не станет понятно
    Ответ написан
    5 комментариев