Задать вопрос
  • Кодирование IP-пакетов в звук?

    @res2001
    WSGlebKavash, Направленная антенна с усилителем и 4G модемом. Покупаете готовый комплект, вам останется только повесить повыше и направить в нужную сторону.
    Обычно на выходе вы получаете Ethernet, но можно найти вариант, чтоб сразу WiFi раздавал.
  • Ошибка git при push?

    @res2001
    Какой версией git пользуетесь?
    Я использую git, установленный в msys2 с помощью тамошнего пакетного менеджера pacman. Полет нормальный.
    Там же можно установить и много чего еще, от линуксовых утилит и различных библиотек до mingw и clang. В общем, рекомендую.
    Все что установлено в msys2 может быть доступно из винды, достаточно добавить в переменную окружения PATH пути к msys2.

    Так же в винде можно установить WSL, поставить туда любой линукс, установить там git из пакетов и использовать его оттуда, но это немного сложнее и разнообразные IDE и т.п. утилиты с GUI, скорее всего, не смогут его использовать.
  • Assignment operator VS Destructor + Placement new, где аргумент placement new - prvalue?

    @res2001
    три действия оформить в виде перегрузок шаблона функции со SFINAE

    Это, конечно, добавит читаемости коду :-)
  • Assignment operator VS Destructor + Placement new, где аргумент placement new - prvalue?

    @res2001
    floppa322, Не знаю, почему бы и нет.
    Но даже, если этого не произойдет, то в случае обычного оператора присваивания сам оператор должен будет перед присваиванием выполнить действия аналогичные действиям деструктора (да еще будет дополнительно вызван деструктор временного объекта), а в случае присваивания перемещением просто вызовется деструктор временного объекта (в этом случае будет лишнее перемещение данных оригинального объекта во временный).
    Все говорит за то что явный вызов деструктора и размещающего new проще для понимания и эффективней.

    placement new - это замаскированный вызов конструктора на заданном участке памяти.
    Т.е. если расписать содержимое placement new, то будет что-то вроде:
    (reinterpret_cast<T *>(buffer))->T(args);
    В С++ явный вызов конструктора (как метод класса) запрещен, но в MSVS такое когда-то прокатывало и можно было обходится без placement new, как сейчас - не знаю.
  • Assignment operator VS Destructor + Placement new, где аргумент placement new - prvalue?

    @res2001
    Не знаю, на счет "хорошоей практики".
    Компилятор наверняка тут включит свои оптимизации и получится примерно одно и то же в обоих вариантах.
    Но вариант с оператором присваивания накладывает на объект дополнительные ограничения - у объекта должен быть реализован оператор присваивания, а лучше чтоб был оператор присваивания перемещением.

    Лично мне больше нравится вариант с явным вызовом деструктора и размещающего new, именно по тому, что тут все явно. Явное всегда лучше не явного.
  • Зависает намертво или дико начинает тормозит Ubuntu 20.04, как лечить?

    @res2001
    Немного другая ситуация - после выхода из скринсейвера после продолжительного времени не активности начинает дико лагать вплоть до полного коматоза. Если скринсейвер включается на краткое время, то восстанавливается без проблем. Скринсейвер дефолтный - blank screen.
    Пока руки не доходят посмотреть в логах, что происходит, но методом тыка обнаружил, что виноват firefox.
    Если его закрываю перед блокировкой, то просыпается нормально.
  • Чему учит Марк Лутц?

    @res2001
    Луца читал в свое время. Толковый учебник по питону.
    На сколько помню, он там ничего не пишет про сетевое взаимодействие и не описывает соответствующих модулей. Так что может конкретно Луц и не поможет в написании сетевых игр.
    Для этого стоит читать других авторов, возможно, не связанных с питоном (сетевое программирование оно +- на всех языках одинаково). Как и по многим другим более специализированным темам.

    Возможно ТС уже перешагнул уровень учебника и стоит посоветовать что-то более углубленное.
    От себя могу посоветовать изучить следующие направления программирования: сетевое программирование, базы данных и SQL, параллельное программирование. Каждая из этих тем тянет на большую и толстую книгу, а то и не на одну. И это только начало :)

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

    @res2001
    Я бы загнал первый массив в std::unordered_map, где ключ - это значение очередного элемента первого массива, а значение - счетчик. Для всех элементов первого массива, счетчик выставляем в 1.
    Дальше ищем каждое значение второго и третьего массива в mapе, если найдено - инкрементируем счетчик.
    Выводим все элементы из mapы, у которых счетчик равен 3.

    Стоит выбрать самый наименьший по размеру массив и его брать как первый.
  • Когда narrowing conversion Не является implementation defined?

    @res2001
    floppa322, Да, только убедится в этом вам нужно явно в коде.
  • Когда narrowing conversion Не является implementation defined?

    @res2001
    По моему, в приведенном примере это всегда зависит от реалиации, т.к. компилятор не генерирует проверяющий код.
    В приведенном примере длины типов равны, занчит будет просто побитовое копирование. Если бы длины типов были разные, то wide type обрезался до длины narrow type и то же самое побитовое копирование.
    Если включен высокий уровень предупреждений, то в этом месте компилятор ругнется.

    В приведенном примере, если значение uint32 >= 0x80000000, то в результате в int32 будет отрицательное число.
  • Как будет выглядеть данный псевдокод в коде на языке Си?

    @res2001
    mercower26,
    в Си не обязательны фигурные скобки в цикле

    Не обязательны. Но тогда в теле цикла будет выполнятся только 1 следующая после for операция, а у вас это flag=0;
    Это явно не то что нужно. flag должен обнулятся в начале каждой итерации первого цикла. В эту же итерацию должен входить и второй for, а он у вас сейчас не является вложенным в первый for (то что отступами второй for сдвинут относительно первого никакой роли не играет, в С/С++ отступы выполняют декоративную функцию, чисто для удобства разработчиков, компилятору на них наплевать).
    Вообще не стоит экономить на скобках и разметке - они делают код более понятным вам же (и тем кто читает ваш код).
    printf("Результат %d\n",X);
    Что вы хотите тут получить? Тут вы выводите адрес массива Х, а не содержимое. Печать элементов массива надо делать так как приведено в вашем же скриншоте выше.
  • Почему программа на СИ молчит?

    @res2001
    Логические операции то же судя по всему не проходили, или вы никогда в глаза не видел ASCII таблицу - всю эту портянку ifов можно заменить одним с условием
    if(a[i] >= '0' && a[i] <= '9') {
          num[i] = a[i];
          check = 1;
          continue;
     }


    w = atoi(num); на первой итерации num не инициализирован, в нем содержится мусор и этот мусор мы зачем то конвертируем в число. Вообще w используется только в блоке else, может быть туда и надо сунуть эту конструкцию?

    Вообще я бы пошел другим путем:
    1. В вашем цикле for:
    1.1. пропускаем не цифровые символы. Это делается просто вложенным циклом с проверкой и инкрементом счетчика. Все не цифровые символы сразу же копируем в итоговую строку. Если вам не нужна итоговая строка, можно просто каждый символ выводить сразу на экран.
    1.2. Найдя первую цифру, в следующем вложенном цикле "по цифрам" определяем максимальную цифру, для определения системы счисления. При проходе, не теряем индекс первой цифры, он понадобится в следующем пункте.
    1.3. Конвертируем число с помощью функции strtol, она поддерживает работу с разными системами счисления.
    1.4. Проверяем, что бы конвертированное число было меньше 256 (иначе число - это символ не из однобайтовой кодировки, а что-то из Unicode, а это вы тем более не проходили).
    1.4.1. Если число меньше 256, то записываем код числа как следующий символ в итоговую строку, или выводим на экран символ соответствующий коду.
    1.4.2. Если число >=256 - печатаем ошибку и завершаемся.
    1.5. переходим к следующей итерации основного цикла
    2. Выводим получившуюся выходную строку

    Во всех вложенных циклах не забываем контролировать на превышение длины входной строки.
    Входная и выходная строки - это разные строки, так проще. Или же сразу выводите на экран каждый символ выходной строки по отдельности. Можно, конечно, все делать "на месте" (корректировать входную строку), но код будет гораздо сложнее, чувствую, что вам пока рано это. Можете отработать алгоритм на двух строках, а потом, если захотите, реализовать вариант "на месте".
  • Как разделить xml файл спомощью bat/cmd?

    @res2001
    wisgest, Спасибо за разъяснения. Не знал, что можно кроме точки использовать что-то другое и в своей практике ни когда не сталкивался с проблеммами использования echo. Это, конечно, не исключает проявления этих проблем в дальнейшем.
  • Как разделить xml файл спомощью bat/cmd?

    @res2001
    Мой ответ не верный. В батниках вполне реально работать с xml, что доказал в своем ответе wisgest
  • Как разделить xml файл спомощью bat/cmd?

    @res2001
    Работает!

    Кстати, в последнем echo явно не хватает закрывающей скобки. Но оно и так работает... Странно
    Добавил скобку перед перенаправлением вывода - работает, но не правильно.
    Привел к такому виду: (echo.%%L)>>!i!.xml. Работает правильно и все скобки на месте.

    Поэкспериментировал еще со служебными символами, содержащимися в переменных.
    Оказалось, что вполне можно работать с ними, только надо везде использовать восклицательные знаки для обращения к переменным. Тогда они не раскрываются в командной строке, это происходит где-то потом. Соответственно ошибок не возникает даже вне тела цикла. Ну и конечно нужно включать setlocal enabledelayedexpansion.
    Что характерно, переменные цикла раскрываются в коммандную строку, но это не генерирует ошибки. Об этом вы писали в нашей прошлой дискуссии по этому поводу. Видимо этот момент как-то особенно обрабатывается в cmd.

    Жаль, что не знал обо всем этом лет 10 назад :)
    Свою позицию по работе со служебными символами, содержащимися в переменных, в батниках окончательно меняю.
    Мой ответ не правильный.
  • Для чего нужен возврат значения по ссылке?

    @res2001
    Владимир Коршунов, int& b = func(a);
    b - ссылка.
    Ссылка это не указатель!
    Если копнуть в ассемблер, то ссылки - это те же указатели (т.к. ни каких ссылок в ассемблере нет), но на уровне С++ ссылка это не указатель.

    Используют ссылки и указатели для одного и того же, но, как было верно замечено, ссылки почти всегда указывают на конкретный объект, тогда как указатели запросто могут иметь произвольное значение, не указывающее на объект, или nullptr.
    Ссылка может быть битой в случае многопоточного приложения, когда один поток получает ссылку на существующий объект, а второй поток потом этот объект уничтожает.

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

    На счет разъименования - эта операция нужна для указателей, т.к. вы можете работать либо с самим указателем, либо с объектом на который указывает указатель (тут и нужно разъименование).
    С самой ссылкой вы ничего дополнительно сделать не можете. Вы можете только создать ее и уничтожить (при выходе из области видимости). Все остальные операции с участием ссылки происходят реально над объектом, на который ссылается ссылка, поэтому нужды в разъименовании нет.

    https://ideone.com/jQK0u1
  • В чем ошибка в написанном коде, в 5 строке?

    @res2001
    pfemidi, Сори, ошибся. Сообщение, конечно, предназначено автору. Исправлюсь.
  • Почему DNS запись на mikrotik не видит узел?

    @res2001
    ViktorGuerro, В ДНСе А записи всегда находятся в какой-то зоне (домене). Если у вас правильно указан ДНС сервер на клиентах, то просто исопльзуйте полное доменное имя, т.е. base.<имя домена/зоны>

    Если сильно хочется использовать именно короткое имя, то домен нужно прописать в настройках domain suffix. Эта настройка в винде есть где-то в глубине сетевых настроек. В таком случае винда сама будет подставлять доменный суффикс к именам.
  • В чем ошибка в написанном коде, в 5 строке?

    @res2001
    mercower26,
    а вывод идёт ну явно в UTF-8

    Видимо исходники написаны в UTF8. Сам компилятор ничего не перекодирует - в какой кодировке у вас написаны строковые литералы, то и выводится в консоль. Вывод будет правильный, только если кодировки консоли и исходников совпадают, либо если вы в коде будете перекодировать текст перед выводом в консоль.

    В русской винде для консоли есть несколько вариантов кодовых страниц, причем по умолчанию используется внезапно CP866. Кодировку в консоли можно в любой момент изменить консольной командой (chcp /?).
  • В чем смысл определения const int &ref=1;?

    @res2001
    Попробуйте собрать код, содержащий такое.
    Собралось?
    У меня не собралось.
    А вот такое
    const int &ref = 1;
    // или
    int &&ref = 1;

    собирается.