Задать вопрос
  • Почему -Wconversion разрешает передачу integer literal в char параметр?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Ну вообще, char - integral type. Поэтому передавать туда числовую константу можно - это никакой не варнинг. Компилятор сам понимает, что она должна быть типа char и даже проверяет на переполнение и выдает warning, если что.
    Ответ написан
    2 комментария
  • Почему free() выводит ошибку?

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

    Вижу сразу ошибку в delete_node: Если вершина в списке всего одна, произойдет фингя: this_list->last не обновится, да и next_node->prev несуществующее будет переписано.
    Ответ написан
    2 комментария
  • Есть ли название у подобного подхода?

    What is an early return?
    An early return, or “return early” is an approach to keep readability in functions and methods.

    It is always considered a wise choice to return early if simple conditions apply that can be checked at the beginning of a method.
    https://dev.to/jpswade/return-early-12o5
    Ответ написан
    1 комментарий
  • Как на компьютере с Windows XP открыть шару с сервера 2019?

    SignFinder
    @SignFinder
    Wintel\Unix Engineer\DevOps
    Видимо политики нового домена разрешают другой набор шифров и сервер и клиенты не могут договориться между собой.
    Вообще такие вещи по логам evetnvwr диагностируются.
    Ответ написан
    2 комментария
  • Как реализовать взаимодействие нескольких библиотек между собой на c++?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Надо системное апи использовать. Вы, похоже, под виндой, так что LoadLibraryEx, GetModuleHandleEx, GetProcessAddress вам помогут. Первой вы открываете библиотеку. Второй можно потом пользоваться чтобы получить доступ к уже открытой библиотеке, если вы HANDLE не сохранили куда-то. Третья позволит вам получить указатель на функцию из библиотеки.

    Можно гуглить "имя функции example" и тогда вы найдете в интеренете готовый код, работающий с этими функциями.
    Ответ написан
    Комментировать
  • Как убедиться что атомарные операции будут выполнены точно правильно?

    mayton2019
    @mayton2019
    Bigdata Engineer
    В данном исходнике нет проблемы атомиков. Но здесь есть проблема отсутсвия синхронизации потоков а и b.
    Нужно наладить синхронизацию и дальше атомики станут приносить ощутимую пользу.
    Ответ написан
    Комментировать
  • Как убедиться что атомарные операции будут выполнены точно правильно?

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

    В стандартной библиотеке самое близкое к этом - std::condition_variable.

    Платформо зависимое решение может быть эффективнее. Какие-нибудь WaitForSingleObject/CreateEvent в винде, например.
    Ответ написан
    Комментировать
  • Как работает маршрутизация с двумя шлюзами по умолчанию?

    mikes
    @mikes
    Ответ на ваш вопрос - source routing
    Сервер отвечает с того интерфейса на который пришел первый пакет.

    а вот если вы будете кого нить пинговать к примеру, то все (окромя 10.10.118.0/24) будет уходить через 10.10.118.1 поскольку он является шлюзом по умолчанию.
    Ответ написан
    1 комментарий
  • Как используются "магические константы" в реальных реализациях?

    mayton2019
    @mayton2019
    Bigdata Engineer
    Ты должен спрашивать какие алгоритмы игровой графики бывают. Это важное. А константа - это просто реализация.

    Почитай Генри Уоррена - Алгоритмические трюки для программистов. Там есть всякое. Деление через умножение на магию. Умножение через сдвиги. Дискретные логарифмы и корни и прочее.
    Ответ написан
    Комментировать
  • Программа не работает так, как должна (ошибки в логике, которые не могу найти)?

    Ты не сказал, как именно ошибка проявляется, так что сложно сказать.

    ошибки в логике, которые не могу найти

    Для этого:
    1. Рефактори код, чтобы с ним легче было работать.
    2. Покрывай код автотестами
    3. Тестируй нормально, а не наобум, чтобы понятно было, как проявляется ошибка, какое поведение ты ожидал от программы, а какое фактически произошло.
    Ответ написан
    5 комментариев
  • Не знаете как можно исправить ошибки на с++?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Вам надо описать конструктор Ball без параметров. Например:
    Ball() x(0), y(0), r(0), vx(0), vy(0) {}

    Потому что new Ball[n] Создает n объектов, но конструктора по умолчанию (без параметров) у класса Ball нет. Обычно его генерирует компилятор сам, но только если вы не указали никаких своих конструкторов. А new не знает, какие числа передавать в качестве x, y, r и т.д.

    Смотрите правило трех.
    Ответ написан
    Комментировать
  • Стоит ли идти в Embedded разработку?

    @dima20155
    you don't choose c++. It chooses you
    Диагонально прочитал статью и хочу сказать, что с частью пунктов соглашусь, но, не абсолюнто со всем.
    Прежде всего задайте себе вопрос а чего вы хотите? Что вам интересно?
    Действительно написание ПО под MCU требует понимание (в основном, цифровой) электроники. Например, классические цифровые интерфейсы передачи данных (UART, I2C, SPI) это прямой мостик между знаниями software и hardware и хороший embedder должен понимать как эти протоколы работают и куда ткнуть осцилограф/логический анализатор, чтобы понять что не так.

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

    Есть и третья известная мне сфера для embedded разработчиков (которая также не лишена славы). Компании, занимающиеся разработкой CPU, MCU и иных цифровых/цифроаналоговых микросхем. Да, вам покажется, что это только про Intel, AMD, Samsung, Huawei. Но даже в РФ минимум с пол десятка компаний, которые занимаются подобными разработками и активно нанимают людей. Все это довольно сложные и, в то же время, интересные темы.

    Как вы догадываетесь, для каждого из трех пунктов нужны немного разные знания (хотя базовое образование, в основном, требуется одно и тоже). Также для 2 и 3 пункта ваше физическое присуствие на рабочем месте, вряд ли, потребуется, ровно как и лезть руками что-то паять (просто потому что руками в этих областях уже никто не паяет). Обычно, для embedded из 1 абзаца, требуется больше работы с железом, но и тут есть вариации.

    P.S. Лично мне несколько наскучило копаться с железками (а их проектирование - это моя магистерская работа)) и отлаживать низкоуровневые интерфейсы и код, поэтому я и сам немного свернул с этой embedded дорожки, но я занимался только тем, что описано в 1 пункте и совсем немного из 2 (к слову оба успел поработать и оффлайн и онлайн). Найти работу с моим опытом не было особо сложно, так что embedded не приговор: разонравилось вполне сможете перейти в С++/Rust было бы желание.
    P.S.S. Извиняюсь, что получилось немного скомкано, спрашивайте, могу рассказать про свой опыт подробнее.
    Ответ написан
    5 комментариев
  • Как получить список пользователей которые входили на компьютер?

    @MaxKozlov Куратор тега PowerShell
    Парсить Security Event Log на соответствующем компе

    event-4648
    event-4647

    event-4624
    event-4634

    типа
    [DateTime]$StartDate = '2023-05-11'
    [DateTime]$EndDate = '2023-05-12'
    $ComputerName= 'targetcomputer'
    
    $params = @{
      ComputerName=$ComputerName
    	FilterXml = '<QueryList>
    	  <Query Id="0" Path="Security">
            <Select Path="Security">*[System[(EventID=4647 or EventID=4648) and
            TimeCreated[@SystemTime&gt;='''+
            $StartDate.ToUniversalTime().ToString('u').Replace(' ','T') + ''' and 
            @SystemTime&lt;'''+
            $EndDate.ToUniversalTime().ToString('u').Replace(' ','T')+ ''']]]
            </Select>
    	  </Query>
    	</QueryList>'
    }
    $e = Get-WinEvent @params
    
    # Ну и тут потом анализировать $e
    Ответ написан
    3 комментария
  • Завершается программа на Си из-за одной строчки кода. Что делать?

    sprintf(_playingField[16], "##################################");

    В этой строчке выход за границы массива. Массив на 16 элементов, а индексация начинается с 0. Следовательно, последний индекс равен 15.
    Ответ написан
    1 комментарий
  • Как обращаться к динамическому массиву, инициализированному в классе?

    wataru
    @wataru Куратор тега C++
    Разработчик на С++, экс-олимпиадник.
    Figure** figure_colletion = new Figure * [this->collection_size];


    Вот тут в конструкторе вы заводите локальную переменную (с тем же именем, что и член класса) и что-то с ней делаете. Она "затенняет" член класса. А вот figure_colletion, к которому вы обрашаетесь в методе select_new_figure() - это уже член класса, который вы нигде не выделили и ничем не заполнили.

    Поэтому любой уважающий себя стиль форматирования кода подразумевает, что члены класса должны быть приватными и как-то по особому именоваться (например, заканчиваться на "_", или начинаться с "p") тогда бы вы этой ошибки не совершили. Еще можно включить предупреждения при компиляции.

    И еще, писать в методах this-> перед каждым обращением к члену класса не обязательно.
    Ответ написан
    1 комментарий
  • Нужно ли переносить центр с L3 на маршрутизатор?

    @SunTechnik
    Зависит от того, какие роли вы планируете возложить на pfSense.
    Если планруется, что он будет иметь доступ ко всем vlan и рулить доступом между vlan - то, возможно, придется перенести.
    Если же pfSense отвечает тоолько за выход в internet или vpn, то пусть Aruba остается в своей роли. Надо только на ней default (или необходимые) маршруты добавить..
    Ответ написан
    Комментировать
  • Почему не срабатывает команда shutdown /l /f /t 10?

    Раз справка открывается - значит кому-то это явно нужно (прочитать. внимательно. тебе.)

    1. /l нельзя использовать одновременно с /t
    2. /f не нужен, если используешь /t

    Об этом написано в справке:
    https://learn.microsoft.com/en-us/windows-server/a...
    Ответ написан
    2 комментария
  • Как собрать приложение на языке программирования C++, используя CMake?

    jcmvbkbc
    @jcmvbkbc
    "I'm here to consult you" © Dogbert
    Как мне организовать систему сборки, чтобы любой пользователь мог запустить приложения, имея .exe файл и папку data ( aka DATA_DIR )

    Для этого нужно научить приложение находить папку data. Сейчас ты, похоже, используешь полный путь из DATA_DIR. Возможно ты хочешь искать data относительно положения исполняемого файла. Это должно быть в логике приложения, я не вижу, как тебе может помочь система сборки, если пользователи не будут пересобирать приложение.
    Ответ написан
    4 комментария
  • Как связать локальный проект с другим репозиторием на GitHub?

    williamK
    @williamK
    programmer
    1. переименовать директорию проекта на локальном диске
    2. с гитхаба склонировать проект на локальный диск
    3. скопировать с заменой свои файлы в полученный репозиторий.
    4. сделать коммит и пушить не гитхаб
    Ответ написан
    4 комментария
  • Как исправить ошибку LNK2001 unresolved external symbol __imp_GetUserNameW C++?

    TrueBers
    @TrueBers
    Гуглю за еду
    Гуглим название функции: GetUserNameW.
    Заходим по первой же ссылке на документацию Microsoft.
    Там спускаемся в раздел Requirements.
    В строке "Library" видим Advapi32.lib.

    Теперь гуглим текст ошибки LNK2001 unresolved external symbol и переходим по первой ссылке, которая снова, внезапно, по невероятному стечению обстоятельств оказывается документацией Microsoft.
    Там читаем описание ошибки, и что нужно сделать, чтобы её устранить. Там даже ссылка на StackOverflow оставлена!

    2 основных варианта: либо в настройках проекта добавляем эту библиотеку к списку линкуемых, либо прямо в коде говорим линкеру #pragma comment(lib, "Advapi32").
    Браво! Вы великолепны!
    Да ещё и потратили в 3 раза меньше времени, чем писать сюда вопрос.

    Не сложно, если захотеть, правда?
    Ответ написан
    Комментировать