Задать вопрос
  • Как решить проблему скорости интернета с подключением через OpenVPN?

    Скорее всего процессор кинетика просто затыкается на шифровании трафика. Это типичная скорость для IPSEC или OpenVPN на подобных роутерах (если в их проце и прошивке нет аппаратной поддержки шифрования)
    P.S. Официальный документ на этот счет - https://help.keenetic.com/hc/ru/articles/115005342...
    Ответ написан
    1 комментарий
  • Почему в c++ еще нету Null-Conditional Operator?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Это не достаточно частая операция в С++, чтобы срочно надо было вводить новый оператор в синтаксис. Комитет занят более интересными вещами на годы вперед.
    Ответ написан
    2 комментария
  • Есть ли разница между *p++ и p++?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Разница как бы есть. В одном случае у вас *(p++), а в другом просто p++. И то и другое сдвинет указатель p на одну ячейку вправо, т.е. код имеет ровно тот же результат. Но в случае с * вы еще и адрес p, который там был до увеличения, разименуете, т.е. получите доступ. Но просто такое выражение, где вы его разименовываете и ничего с ним не делаете не имеет смысла. Его можно использовать, если вы со значением что-то делаете, например:
    void Copy(char *src, char *dst) {
        while (*src) {
          *dst++ = *src++;
        }
        *dst = '\0';
      }


    Тут вы значение по адресу src берете и записываете в адрес dst. Но из-за ++ оба указатлея сдвинутся. Получается копирование сишной строки.

    Но делать просто *p++; смысла никакого нет. Это примерно то же что и:
    int i;
    i;

    Вот выражение `i;` - оно как бы получает доступ к i, но со значением ничего не делает. Это странный и бесполезный код.

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

    @elderl
    Замыкание. Либо в штекере, либо в гнезде. Левый канал идёт на правый динамик.
    Ответ написан
    Комментировать
  • Когда форк перестает быть форком?

    sergey-kuznetsov
    @sergey-kuznetsov Куратор тега GitHub
    Автоматизатор
    Формально GitHub всегда будет считать ваш проект форком, пока связь с оригинальным репозиторием не будет удалена.

    В реальном мире граница между “форком” и “самостоятельным проектом” размыта. Если проект развивается, у него своя архитектура, комьюнити, документация, и его воспринимают как отдельный продукт — значит, он уже перестал быть “просто форком”.

    Например:
    MariaDB — изначально форк MySQL, но сейчас это полностью самостоятельный проект.
    LibreOffice — форк OpenOffice, но никто не называет его просто “форком”.
    ReactOS — начинался как форк FreeWin95, но эволюционировал в отдельную ОС.
    Ответ написан
    Комментировать
  • Почему строку можно изменить через массив, но через указатель нельзя?

    @Mercury13
    Программист на «си с крестами» и не только
    Потому что в Си++ — в отличие от Си — строковый литерал "hello" имеет тип const char[]. Как дополнительную подсказку, что даже если система (скажем, DOS) не имеет разделения памяти по типам и позволяет менять такие литералы — Windows имеет и не позволяет.

    РАЗ. У указателя и массива несколько разная семантика
    char hello1[] = "hello";   // массив длины 6, в изменяемом сегменте или стеке,
                             // данные скопированы из литерала, который
                             // сидит в неизменяемом сегменте
    const char* hello2 = "hello";   // указатель направлен прямо на литерал,
                             // и попытка изменить его под Windows — вылет


    ДВА. Компилятор имеет право спрессовать два литерала в один, и смена одного, скорее всего, сменит и другой. Не могу проверить на Windows — говорил же, что запись в строковый литерал под Windows приведёт к вылету — но, скорее всего, так будет. Что-то вроде
    char* hello1 = const_cast<char*>("hello");
    char* hello2 = const_cast<char*>("hello");
    hello1[1] = 'U';   // hello2 = "hUllo" в системах вроде DOS, где не вылетит
    Ответ написан
    4 комментария
  • Стоит ли скрывать пункт про образование в резюме?

    Ну, скроете вы его, а дальше HR либо на этапе первичного разговора, либо уже на собеседовании спросит всё равно. Надеяться, что удастся убедить при живом общении можно, но, учитывая огромный пул одинаковых кандидатов, шансы невелики. Поэтому я бы советовал быть максимально прозрачным и написать какой-то сопроводительный текст, объясняющий ситуацию. Тогда на собеседование вас позовут люди, которых ваша учёба не пугает по каким-то причинам — сэкономите время и себе, и другим.
    Само по себе отсутствие диплома почти никого не отпугнёт, а вот дополнительная занятость вполне может. Если даже вы успешно такими манёврами куда-то пробьётесь, есть шансы быстро вылететь, когда люди поймут, что получили не то, на что рассчитывали, и придётся уже это объяснять на следующих собеседованиях.
    Ответ написан
    4 комментария
  • Почему код выкидывает исключение переполнение стека?

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

    Или экземпляр класса создавайте в куче, через new, и храните в unique_ptr.

    А по коду: не используйте эту сишную арифметику указателей. У вас двумерный массив, вы и обращайтесь везде через 2 индекса в квадратных скобках. Так понятнее код будет.
    Ответ написан
    Комментировать
  • Про какую версию разговор и чего оно хочет от меня?

    @yellowmew
    Cloud infrastructure, monitoring engineer. SRE
    Есть подозрение что сервис, через который работает psexec (при подключении он его устанавливает) или не удалился по окончанию подключения или произошло что-то еще что мешает psexec работать
    попробуйте через sc (или powershell коммандлеты) остановить а затем удалить сервис (по моему он назывался PSEXESVC)
    sc \\remote stop PSEXESVC
    sc \\remote delete PSEXESVC

    а затем запустить вашу команду с psexec еще раз
    Ответ написан
    1 комментарий
  • Почему не удаётся освободить память в деструкторе?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Проблема вот в этой строчке:
    int get_num_from_BigInteger(BigInteger big_int){

    Тут у вас идет передача по значению. У вас создается новая BigInteger переменная, со значением переданной. Поскольку вы конструктор копирования нигде не определили, компилятор сделал его вам сам, и там он тупо копирует все данные класса, включая указатель arr.
    В итоге у вас получается два экземпляра класса, в каждом из которых указатель на один и тот же массив. Потом каждый из двух экземпляров в деструкторе вызовет free для одного и того же указатенля, вот и получается двойной free и креш.

    Вам надо руководствоватся правилом трех(пяти). Доопределите конструктор копирования. Вообще, вам бы стоило его запретить (= delete;), ибо копировать такие большие числа - это плохо. А в функции ваши передавайте BigInteger по константной ссылке.

    Ну и в других функциях та же самая поблема.

    И еще, в C++ не стоит использовать malloc/free, используйте new/delete. А еще лучше, используйте std::vector.
    Ответ написан
    Комментировать
  • Объясните суть Systemctl в ubuntu?

    @pfg21
    ex-турист
    в консольной команде первое слово - это имя програмки, которую запускаешь.
    остальные слова передаются програме в качестве параметров.

    соответственно systemctl status ufw запускает systemctl и передает ей параметры status ufw - получаем статус работы сервиса ufw.service от менеджера системы.
    а ufw status запускает ufw и передает ей параметр status - получаем "внутренний" статус работы непосредственно от ufw
    Ответ написан
    2 комментария
  • Можно ли как то связать два разных банка из разных стран в одном проекте?

    Wispik
    @Wispik
    Спрашивать у пользователя, хочет он оплатить российской картой или нет. И в зависимости от ответа перекидывать на нужный банк
    Ответ написан
    Комментировать
  • C++ iostream not found?

    @pavlik321
    Генератор случайных Q&A важных людям
    3 комментария
  • Как корректно вывести функцию в байтовом виде?

    AshBlade
    @AshBlade
    Просто хочу быть счастливым
    Я назвал 2 функцию не _end, а g и сработало. Возможно, gcc как-то по особенному интерпретирует это название - при дизассемблировании функции _end, даже не было.

    Но тебе уже сказали, что компилятор может сделать все, что угодно и гарантировать расположение/вид функций нельзя.
    Ответ написан
    Комментировать
  • Как быть с тестовыми заданиями при трудоустройстве?

    sergey-gornostaev
    @sergey-gornostaev
    Седой и строгий
    когда тебе говорят выполнить ТЗ, которое не является для тебя вызовом и занимает всего час времени, а потом не отвечают вообще - это довольно грустно

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

    Стоит ли пытаться "удивить" проверяющего? Есть ли прок от того, что в задании, где просят написать коротенький код, я его дополняю, подключая celery, меняя базу данных с локальной на более релевантную, засовывая приложение в докер образ?

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

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

    @blecked88 Автор вопроса
    Проблема в итоге решилась так.

    #include <stdio.h>
    #include <tchar.h>
    #include <io.h>
    #include <fcntl.h>
    
    #define SZ 256
    
    int main(void)
    {
        int _ = _setmode(_fileno(stdin), _O_U16TEXT);
        _ = _setmode(_fileno(stdout), _O_U16TEXT);
    
        TCHAR input[SZ] = { 0 };
    
        _tprintf(L"Введите текст: ");
        fgetws(input, SZ, stdin); input[wcslen(input) - 1] = 0;
        _tprintf(L"Введенны текст: %s", input);
    
        return 0;
    }
    Ответ написан
    3 комментария
  • Почему может передоваться только 8 байт через сокеты клиенту?

    15432
    @15432
    Системный программист ^_^
    У вас там sizeof(get_buffer) стоит. Вы спрашиваете размер указателя, что равно 8. Таким способом можно указывать размер только статических массивов, для динамической памяти - только указывать конкретные значения
    Ответ написан
    1 комментарий
  • Какой протокол VPN выбрать для удаленки?

    @Drno
    SSTP \ ocserv
    Zerotier
    Ответ написан
    Комментировать
  • Как решить проблему с uwebsockets в С++ Visual Studio2022?

    @adg2004
    Congifuration Properties -> C/C++ -> Preprocessor -> Preprocessor Definitions и туда вписать _CRT_SECURE_NO_WARNINGS
    Ответ написан
    2 комментария