Задать вопрос
  • Как сымитировать потерю пакетов?

    @MarkusD Куратор тега C++
    kokapuk, тебе нужно пример кода прокси? Бесплатно такие масштабные работы обычно не предоставляются. Переходи на фриланс и оформляй задачу.
  • Является ли хорошей практикой использование Stack Trace библотек в дебаг сборке?

    @MarkusD Куратор тега C++
    floppa322,
    Извиняюсь за глупый вопрос, но откуда у пользователя возьмётся корректный стек вызовов?

    Вот эта самая Backward-cpp и ей подобные выдачу коллстека и сделают корректной. Современная инструментация отладки позволяет опознать фрагменты встроенного кода и правильно оформить коллстек для выдачи.

    если приложение чисто серверное, то бояться декомпиляции не стоит?

    Многие погорельцы именно так и думали. Но дело в том, что и серверное ПО тоже можно заполучить себе в руки после взлома сервера. Нет, если ПО чисто серверное, его ровно так же нужно защищать, как будто оно уже отдано пользователю.

    на практике в релизных сборках устанавливают ли колбэки на системные исключения, вроде сегфолта, с последующим выводом стека вызовов?

    На практике уважающее себя ПО в руках пользователя работает под присмотром брокера статистики и отладки. Качественного ПО в наши дни нет. Всякая программа у пользователя упадет. Важность в том, чтобы падение это донести до разработчиков в максимально информативном виде.
    Брокер ведет программу до ее падения. В момент падения брокер перехватывает управление на себя, формирует крашдамп, формирует отправку на сервера разработчиков, уведомляет пользователя о том, что программа упала и разработчики уже в курсе, после чего мирно кладет программу до нового запуска.
    И как же иначе брокер, будучи внутри процесса ПО, может все это выполнить, как не через обработчики сигналов и прерываний? А никак.
    И на производительности конкретно установка обработчиков тоже не сказывается.
  • Является ли хорошей практикой использование Stack Trace библотек в дебаг сборке?

    @MarkusD Куратор тега C++
    floppa322, подводные камни - это возможность полной декомпиляции твоей программы по ее отладочным меткам. В наши дни эта проблема решается обрезанием отладочной информации в процессе релиза для пользователей. В результате пользователи при падении видят только отчет со стеком вызовов и все. Это действие - джентельменский минимум уважающего себя производителя ПО.

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

    Проблем с регистрацией событий нет. Это - штатный функционал стандартной библиотеки. Сегодня довольно много инструментов (вроде GeForce Experience, Logitech G Hub или Realtek Sonic, т.е. вещи все знакомые) для своей работы используют куда более изощренные методы встраивания в исполняемый код процессов пользователя.
  • Как скомпилировать программу через командную строку используя только возможности виндоус?

    Void59,
    хотел переводить

    Этот процесс называется трансляцией.
    В какой язык ты хотел транслировать код своего языка - не важно. Твой вопрос имеет отношение только к трансляции.
    Правильно указанные теги помогают тебе решить свой вопрос. Неправильно указанные теги могут привести к удалению вопроса (по нарушению П3.1 регламента).
  • Header-only. Страдает ли размер бинарника?

    @MarkusD Куратор тега C++
    Sergio, нужно не думать, а знать документацию.

    Чем характерно определение метода по месту его объявления в классе? Тем, что метод автоматически будет иметь спецификатор inline.
    Чем характерно определение шаблонов функции или внешнее определение методов шаблона? Тем, что определение должно быть доступно из всех мест инстанцирования шаблона. Если шаблон функции инстанцируется в разных модулях трансляции, ему место только в одном из заголовков.
    Чем характерно определение функции в заголовке? Тем, что функция должна иметь спецификатор inline или static. Иначе попытка трансляции кода выявит нарушение ODR. Инстанцирование шаблона функции или метода будет помечено как взятое оттуда, где оно определено.

    Спецификатор static[?] дает пометку внутреннего связывания для сущности. Константа или переменная в этом случае будет доступна только из того модуля трансляции, который ей пользуется. Статическая глобальная функция помечается как недоступная для связывания в других модулях трансляции. Статический метод будет все так же иметь внешнее связывание, в чем есть свои проблемы.

    Спецификатор inline[?] дает пометку слабого внешнего связывания для любой сущности. Что константа или глобальная переменная, что функция или метод (даже статический), помечаются как сущности с внешним связыванием, которое не нарушает ODR в случае если все определения цели связывания во всех модулях трансляции являются полностью одинаковыми. Если хоть одно определение цели связывания отличается - будет нарушение ODR.
    Ликер подберет самое первое определение и встроит его в бинарный код. После этого линкер будет только проверять другие встреченные определения на предмет соответствия первому, а линковку кода будет производить только относительно первого встреченного определения.
    Этим и характерна пометка функций, методов или констант с переменными как inline.

    Описываемого тобой поведения по умолчанию нет. Только если ты решишь быть сам себе злобный буратина и все шаблоны функций, констант и переменных пометишь как статические. С методами шаблонов так уже не выйдет.
  • Как скрестить локальное .exe-приложение с интерфейсом управления в веб-браузере?

    @MarkusD Куратор тега C++
    cppcat , я правильно понимаю что процесс целевого приложения находится точно в том же окружении, в той же системе и на том же компьютере, что и браузер, с которым работает пользователь?

    Думаю, от тебя разъяснения по этим подробностям ждут.
  • Выбор игрового движка для C++?

    @MarkusD Куратор тега C++
    Qwertyue5, много решений подходят под такие критерии. Выбирай. :)
  • Выбор игрового движка для C++?

    @MarkusD Куратор тега C++
    Qwertyue5 , какие критерии у тебя к подходящему движку?
    Изложенное в вопросе больше подходит под критерии твоего окружения, чем под критерии целевого движка.

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

    NSliM, да, такое возможно. На этом уровне, обычно, оформляются детекторы циклов, анализаторы цепочек вложенности и прочие инструменты отладки событийных систем.
    Относительно IoT или АСУ во внимание следует принимать что эти системы являются высококонкурентными и сильно распределенными. Брокер в АСУ не замирает в ожидании завершения события, он только отправляет сообщение о действии в контролер и принимает сообщение о выполнении действия. IoT тоже живет полностью параллельно, брокер там занимается только приемом входящих и генерацией исходящих событий.

    Вообще тебе стоит изучить два базовых архитектурных шаблона для событийных систем: Reactor и Proactor.
    Эти шаблоны проектирования реализуются через шаблоны дизайна, такие как Push/Pull, Observer/Publisher-Subscriber, Command и Pipe. Могут использоваться и другие шаблоны, эти шаблоны я сейчас вперед всего вспоминаю.
    Посмотри на Actor Model как на общую архитектуру реализации событийной системы.
  • Какой паттерн проектирования применяют для построения событийной системы?

    NSliM, все происходит именно так, как ты описываешь. События генерируются целыми кластерами скопом или порождаются цепочками причин и следствий. Какие проблемы ты видишь в этом?
  • Как сделать последовательность нажатий кнопок form на c++?

    @MarkusD Куратор тега C++
    mIka01, тебе не следовало вводить функционал игры в обработчиках интерфейса.
    Твоя игра должна была быть реализована в некоторой мат.модели, которую твой интерфейс только бы отображал.
    Твоя игра - это модель, реализованная своим набором типов. Твой интерфейс только читает состояние модели в момент, когда она изменилась. Твой ввод игрока осуществляется только через объект игрока, взятый из модели.
    Если бы ты сразу сделал свою игру таком образом, то добавить ИИ, как еще один источник ввода, у тебя труда бы не составило.
  • Почему разрывает соединение, при смене типа?

    @MarkusD Куратор тега C++
    Илья, да, это может быть связано со временем жизни объекта.

    Давай, все-таки, еще посмотрим твой код вокруг описанного здесь места тогда, когда ты меняешь тип сокета.
    Мне нужно увидеть как именно ты меняешь тип сокета. Где ты его меняешь, на какой тип и как это все выглядит.
  • Как определить класс, которому принадлежит вызываемый метод, из C++ кода?

    Павел Матвеев, давай подкину тебе еще одно интересное решение.
    Думаю, оно тебе понравится больше всего т.к. не зависит от выбранного тобой транслятора.
  • Как определить класс, которому принадлежит вызываемый метод, из C++ кода?

    Павел Матвеев, "это возможно" - по своей сути верно, но не имеет никакого отношения к стандарту C++ и к самому языку.
    Твой вопрос нужно исправить, изменив его теги. Я предложил верные.
  • Почему разрывает соединение, при смене типа?

    @MarkusD Куратор тега C++
    Илья, а где содержимое ../includes/Socket.hpp?
    Объявление класса важно в первую очередь, а не череда определений его методов.

    Покажи код вокруг
    int newEvents = kevent(kq, NULL, 0, tEvent, 32, NULL);
    когда ты используешь свою обертку сокета.
  • Почему разрывает соединение, при смене типа?

    @MarkusD Куратор тега C++
    Илья, нет, ты довольно непонятно написал. При каком классе все ломается?
    Но как только меняю тип у переменной fd все ломается.

    Я смотрю в код:
    ft::Socket::Socket(int fd) : _socket(fd) {}
    и не понимаю зачем ты у fd меняешь тип и на что ты его меняешь.

    Лично я что-то понять смог только после вот этого твоего комментария, по тексту вопроса понимания не возникает вообще.
    Тебе нужно показать код еще выше твоего вызова kevent в обоих случаях: когда ты оперируешь сокетом и когда ты оперируешь оберткой сокета.
    Тебе нужно показать весь код твоей обертки сокета.
  • Как создать 3D игру не умея моделировать?

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

    И именно этим путем в свое время пошел Маркус Перссон. Сегодня каждый знает об одной из его игр и о том, сколько ярдов зелени у него за эту игру имеется.
    Не стесняйся делать все что можешь. Есть вероятность что этого и будет достаточно для успеха.
  • Как программно рассчитать коллайдеры для спрайтов?

    Александр Скуснов, Collider - рядовой термин в разработке игр. Например, так коллайдер определяется в Unity.