• Почему мой компьютер не виден в локальной сети?

    @res2001
    Если сеть без домена (одноранговая), то это довольно нормальная история, т.к. в одноранговой сети совсем другой механизм обнаружения станций, который может давать сбой. Тонкой ручной настройкой это можно улучшить. Если интересно как, то гуглите по "master browser", можно начать отсюда:
    https://habr.com/ru/articles/680896/
    https://sysadmins.online/threads/499/
    По идее по IP адресу можно получить доступ всегда - тут механизм обнаружения не должен использоваться. Если по какой-то причине доступа по IP нет, то причина в чем-то другом, надо попытаться разобраться.
    Написано
  • C++ cmake boost multithread asio. Как правильно добавить ссылку на библиотеки boost?

    @res2001
    Alex XYZ, Ну тогда сделайте в проекте каталог, куда положите исходники буста и собирайте его как отдельную цель тем же cmake.
    Буст из коробки не поддерживает сборку через cmake, но вот есть такое: https://github.com/boostorg/cmake

    Если ваш проект лежит в git репе, то сделайте каталог с бустом субмодулем в git, так будет удобнее для автоматического скачивания зависимостей вместе с проектом.
    Написано
  • C++ cmake boost multithread asio. Как правильно добавить ссылку на библиотеки boost?

    @res2001
    Чтоб не менять для каждой платформы ставьте буст с помощью какого-либо пакетного менеджера, а в cmake ищите пакет буста стандартным способом: find_package, pkg_check_modules и т.п.
    Например в ubuntu: apt install libboost-dev lib-boost-doc
    Можно ставить и отдельно, только необходимые части буста.
    В винде можно использовать vcpkg для MSVC или pacman в msys2 или что-то еще.
    Написано
  • Какой сейчас есть актуальный профайлер под винду?

    @res2001
    И отдельный интересный вопрос: если мой код не использует API (виндовое, линуксовое), то можно же отпрофилировать под виндой, и надеяться, что и в линуксе оно будет работать быстро?

    Скорее всего так и будет. Но нюансы могут быть, так что как минимум протестировать стоит, если эта платформа важна.
    Написано
  • Как генерировать палитру всех 24бит цветов в изображении размером 4096х4096 чтобы был плавный переход цвета?

    @res2001
    Разместить 16+ млн. цветов задача не простая.
    Посмотрите, как это делают другие.
    Возьмите для примера в любой программе реализацию интерфейса для выбора цвета. Там обычно не пытаются разместить все цвета разом.
    Для примера:
    https://coolors.co/gradient-maker/
    или например в настройках винды personalization->color

    Если делать полный градиент, то выйдет изображение, где одна сторона будет состоять из 16+ млн.пикселей, а это довольно много. Соответственно размер изображения уже не будет 4096*4096 пикселей, а будет гораздо больше, т.к. другую сторону вы явно будете делать больше чем в 1 пиксель.
    Написано
  • Задача на каналы, stderr, stdin, stdout в Linux. Как работают потоки ввода-вывода в Linux?

    @res2001
    Задачу не понял. Что в итоге то в канал надо перенаправлять и stderr и stdout? А нумеровать строки во всем потоке stderr+stdout или в каком-то отдельном.

    2. Операторы перенаправления потоков выполняются справа налево или слева направо?
    3. Операторы перенаправления выполняются последовательно (то есть ожидают выполнения предыдущих), ил
    и выполняются параллельно?

    Порядок выполнения операторов перенаправления слева на право.
    Продемонстрирую на примере:
    1. ls file1 1>output.txt 2>&1
    2. ls file1 2>&1 1>output.txt

    В 1 случае stdout сначала перенаправится в output.txt, а затем stderr перенаправится в stdout (т.е. то же в output.txt)
    Во 2 случае сначала stderr перенаправится в stdout (т.е. в консоль по умолчанию), затем stdout в output.txt. При этом stderr так и останется направленным в консоль.
    Написано
  • Как настроить CMake на установку пакетов?

    @res2001
    Eugene Usachev,
    куда следует устанавливать статически линкуемые библиотеки

    Это не важно. Обычно заводят подпапку с произвольным названием (я использую обычно deps) и туда складывают субмодули. Вы же потом эту папку должны будете использовать в своем cmakelists.txt.
    Как их линковать мне тоже ещё не известно

    По линковке библиотек тут регулярно вопросы задают, несколько раз давал довольно развернутые ответы.
    Но у вас есть система сборки cmake - у нее свои методы для этого, которые все равно в итоге приводят к добавлению необходимых ключей в командную строку компилятора.
    не могли бы вы задать вектор направления поиска?

    Для cmake после добавления таргета библиотеки обычными средствами add_library, просто добавляете его в зависимость к своему основному проекту:
    ...
    add_library(third_party_libs ...)
    ...
    add_executable(myprog ...)
    target_link_libraries(myprog third_party_libs)

    Если библиотека сама поддерживает сборку с помощью cmake, то проще всего собрать ее штатным способом, указав ее каталог в add_subdirectory(). В ходе сборки библиотека создаст свой таргет, его и будете использовать в своем проекте.
    Если же библиотека не поддерживает сборку cmakeом, то придется проанализировать как она собирается, где лежат файлы исходного кода, где заголовки и сделать свою цель с помощью add_library. В этом случае нужно выделить интерфейсные заголовочные файлы (которые вы будете подключать в своем приложении) и отдельно указать их с опцией PUBLIC (или INTERFACE) в add_library.
    Написано
  • Как обновить с++ на мак?

    @res2001
    GavriKos, Действительно
    Впрочем, моя ошибка в этом, не влияет на остальное мною написанное.
    Написано
  • Как обновить с++ на мак?

    @res2001
    davidskyborn, Наверное потому что в твоем коде нет проверки для 23 стандарта и опять срабатывает блок else.
    Сделай то, что я написал в коментариях, чтоб снять для себя этот вопрос.
    И хорошо бы потренироваться для других значений этой опции, после изменения не забывай пересобрать программу с предварительным удалением предыдущей сборки.
    Написано
  • Как обновить с++ на мак?

    @res2001
    davidskyborn,
    без понятия :(

    Если используешь VSC как IDE, то видимо там у тебя программа собирается с помощью cmake, тогда можно в CMakeLists.txt добавить:
    set(CMAKE_CXX_STANDARD 20)
    set(CMAKE_CXX_STANDARD_REQUIRED ON)
    set(CMAKE_CXX_EXTENSIONS OFF)

    Хотя я не в курсе чем там VSC пользуется для сборки на МАСах. Может там что-то свое.
    Для простоты можешь собрать руками из ком.строки и там задать этот параметр. Типа:
    g++ -std=C++20 main.cpp -o main
    Написано
  • Как обновить с++ на мак?

    @res2001
    1. Собираешь код как? Указываешь компилятору какой стандарт использовать?
    2. Если на первый вопрос ответ "нет", то вероятно у тебя в компиляторе какая-то промежуточная версия, не соответствующая константам и просто срабатывает ветка else.

    Для теста задай компилятору версию стандарта (ключ -std=c++20 ...) и проверь, что будет выдавать программа.
    Дальше собери без ключа std и выведи значение макроса __cplusplus. А потом, подумаешь как лучше построить условие.
    Думаю, тут надо использовать не равенство, а >= и вложенные ifы.
    Написано
  • Как это сделать это задание на c++?

    @res2001
    Demorozzz, Посмотрите таблицу CP1251, например тут: https://ru.wikipedia.org/wiki/Windows-1251
    Разница между строчной и прописной русской буквой в этой кодировке всегда константа, кроме буквы ё. И так в большинстве кодировок.
    Вам надо определится только со знаком константы. Если введена прописная буква, то константа положительная, если строчная - отрицательная.
    Написано
  • Создал личный сервер в майнкрафт. после закрытия программы Putty, сервер закрывается (я полный ноль, все делал по гайдам), что делать?

    @res2001
    Просто установить screen мало - надо его использовать.
    Вместо screen можно использовать tmux, он то же умеет в это.
    Но совсем хорошо - это запускать все что должно работать "фоном" как службы (сервисы). Службы отвязаны от сеанса пользователя, не отваливаются при отключении соединения ssh, могут стартовать самостоятельно при перезагрузке.
    Не знаю можно ли запустить сервер майнкрафт как службу, эта тема меня не интересует.
    Написано
  • Как подключить dll к консольному приложению c++?

    @res2001
    Подключение dll к консольному приложению ничем не отличается от такого же действия для "не консольного" приложения.
    Для подключения любой библиотеки нужно выполнить одни и те же действия:
    1. Опционально: добавить в опции компилятора путь поиска заголовочных файлов библиотеки - опция -I компилятора
    2. В своих исходниках подключить заголовки библиотеки с помощью #inlude и использовать библиотечные вызовы по необходимости.
    3. Опционально: добавить в опции компилятора путь поиска бинарных файлов библиотеки (для микросовтовского компилятора файлов lib) - опция -L компилятора
    4. Указать компилятору имя библиотеки, которую он должен использовать при сборке - опция -l
    Обязательных действий только 2, остальное выполняется, если заголовки и/или бинарники библиотеки лежат где-то где компилятор не ищет их по умолчанию.
    Обычно эти опции для разных компиляторов совпадают.
    Микросовтовский компилятор использует файлы lib при сборке, а не dll. dll подключаются уже при выполнении программы.
    В разных IDE или системах сборки опции компилятора задаются разными способами.

    Ваша ошибка говорит о том, что вы не выполнили как минимум обязательный п.4 из вышеприведенного списка. Возможно еще понадобится и п.3.
    Написано
  • Почему возникает ошибка от VK API "One of the parameters specified was missing or invalid: photo is undefined"?

    @res2001
    Не имел дела с VK API. Но возможно тут
    save_url += "&photo=" + photo_data;
    photo_data - пустая строка. Выводите на экран сформированные запросы перед отправлением и посмотрите, что там получается.
    В тексте ошибки написано практически все: photo is undefined. Т.е. не определен параметр photo. Что собственно видно из ответа сервера: "photo":"" - пустая строка.
    Написано
  • Как контролировать комплектацию рабочего места?

    @res2001
    Пользовался когда-то их инвентаризацией. Из плюсов - на винде не надо расставлять агенты - работает удаленно по WMI. Удаленный доступ по WMI надо, конечно, отдельно разрешать, но при наличии GPO это не проблема. Отчеты, оповещения - все на месте. Про линукс - не знаю как он с ним работает. Поддержка, кстати, отвечала довольно оперативно.
    Написано
  • Почему эта программа вычисляет факториал больших чисел неправильно?

    @res2001
    Я бы реализовал многопоточную схему примерно так:
    1. разбиваем наш факториал на части и запускаем по потоку для каждой части.
    2. каждый поток генерирует свой собственный массив factorial, куда складывает результаты умножения своей части. Каждый массив локальный для своего потока и защищать его не требуется. Таким образом по окончании работы всех вычислительных потоков у тебя должно образоваться N массивов.
    3. Затем после окончания всех потоков уже в основном потоке перемножаешь все N массивов. Когда потоки закончили свою работу все N массивов переходят во владение основному потоку и становятся локальными для него, защищать мьютексом то же ничего не надо.
    Написано
  • Почему эта программа вычисляет факториал больших чисел неправильно?

    @res2001
    Zxvvo, На счет гонок.
    У тебя в multiply_range 2 вложенных цикла. Только во втором ты пытаешься защитить factorial мьютексом, а между тем в первом у тебя есть запись в него - а это гонка в многопоточном исполнении.
    Написано
  • Почему каст u32::MAX в f32 увеличивает число на 5?

    @res2001
    Числа с плавающей точкой (float, double) всегда приближенные.
    Лишь некоторое не большое количество целых чисел может быть представлено точно в формате с плавающей точкой. Но на это не стоит рассчитывать.
    На сколько помню, точность float - 5-6 значащих десятичных цифр. У double больше.
    Написано
  • Почему эта программа вычисляет факториал больших чисел неправильно?

    @res2001
    Zxvvo,
    Я просто не программист, это у меня задание такое.

    Ты не программист, а задание у тебя как у программиста. Что-то не складывается.
    Если ты не программист, то про SIMD можешь не заморачиваться. SIMD - это SSE, AVX и т.п. расширения интеловских (и AMD) процессоров, когда одну операцию выполняешь сразу с несколькими числами.
    Написано