• Как начать разработку оконных приложений?

    @MarkusD Куратор тега C++
    PR1001, все именно так. Ты непонятно объясняешь.
    Сейчас твой вопрос больше напоминает проблему XY. Это все тебе не нужно.

    Тебе не нужны какие-то там пакеты чего-либо. Тебе не нужны какие-либо библиотеки. Тебе на твоем уровне вообще рано думать о кроссплатформе, для тебя это неподъемная и необъятная задача. Ты не справишься. Ты задумываешься о кроссплатформе, как о какой-то базе. А это не так. Кроссплатформенность - это лишь далекое следствие грамотной топологии проекта, грамотной инфраструктуры проекта, грамотной макроархитектуры проекта, грамотной архитектуры элементов проекта и, в особенности, экспертных знаний всех языков, на которых написан код проекта. Не только C++ и не только пиона, обычно это от пяти языков.
    Сейчас твоя задача - взять Visual Studio, именно ее и вообще ничто больше, и выштудировать все ее возможности вдоль и поперек.
    Все возможности - это и C#, и C++/Cx, и UWP, и COM тоже, а не просто возможности C++ и Win32 API.
    Лет на 5 следующих тебе этого фронта задач хватит.

    В ином случае оставайся на питоне, бери PySide2 и делай себе спокойно GUI в более привычной обстановке. Это не плохо, есть задачи, для которых эта связка является оптимальной.
    Написано
  • Как начать разработку оконных приложений?

    @MarkusD Куратор тега C++
    PR1001, а под Apple Mac ты, выходит, планируешь работать без Apple XCode?

    Чем для тебя обосновано требование обязательной и полной отвязки от Visual Studio?
    Написано
  • Как начать разработку оконных приложений?

    @MarkusD Куратор тега C++
    PR1001 , ты слишком широкий вопрос задаешь.
    Уточни свои навыки и цели самой своей разработки. "Полный ноль" не поясняет, точнее нужно.
    Зачем тебе именно кроссплатформа?
    Написано
  • C++: Как вывести один тип в зависимости от другого типа в шаблоне?

    @MarkusD Куратор тега C++
    A 82 , а объяснить, почему твое решение для тебя сейчас работает, сможешь?
    Просто к сведению. Тут сейчас нет ни одного ответа на твой вопрос.
    Написано
  • Есть ли фриланс на С++ с нуля?

    @MarkusD Куратор тега C++
    Xart-kod, у тебя стратегия неправильная.
    Давай я не буду писать полноценный ответ, а просто коротко тебе обрисую.
    Для собеседования со мной джун уже должен идеально знать стандарт языка. Точка.

    С фрилансера я спущу три шкуры если тот окажется неграмотным. Это должен быть всегда и только эксперт, за которым не надо досматривать, доделывать и вообще хоть как-то его проверять.

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

    @MarkusD Куратор тега C++
    Артём Белых, да. Код просто не годится.
    У тебя сокеты должны быть одноранговыми. Этапов в приложении не должно быть.
    Сейчас у тебя сперва этап прослушивания и соединения, а следом - этап взаимодействия. Это должны быть не этапы, а независимые друг от друга реакции на состояние сокетов.
    Если в прослушивающем сокете есть запросы на соединение, должна запуститься функция установки соединения и добавления новой сессии в список сессий.
    Если на сокете соединения есть что прочитать, должна запуститься функция сетевой коммуникации, которая вычитает трафик в циклический буфер и разберет его на пакеты/команды с последующим запуском уже их обработчиков.
    Сессии у тебя могут быть разные. Чат-сессия, файловая сессия, голосовая сессия, передача видео и так далее. Соответственно и обработчики трафика в рамках сессии тоже могут быть разные. А могут быть и одинаковые, если ты правильно поймешь модель OSI. И в любой момент времени у тебя получится так, что сразу несколько сокетов будут иметь доступный входящий трафик. И ты уже сразу будешь знать какие обработчики каких сессий нужно вызвать.
    Понятно тебе станет и то, как на базе сокетов реализовать модель вытесняющего взаимодействия. А следом ты сможешь разобраться и с тем, как с одного потока дальше перейти к пулу потоков со все той же моделью вытеснения.

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

    @MarkusD Куратор тега C++
    Артём Белых, не, вообще не так.
    Тебе стоит почитать Йона Снейдера: "Эффективное программирование TCP/IP". Почитаешь - поймешь всю глубину своего незнания в настоящий момент.

    Тебе не нужно по потоку на каждый сокет сервера. Тебе нужно настроить сокеты и задать такую архитектуру сервера, при которой он в один поток будет обрабатывать тысячи подключений без особой нагрузки на ядро процессора.
    У меня еще в нулевых на однопоточном ММО-сервере жили до 3к уникальных игроков в сутки. Средний онлайн в сутки был больше 1к, а общая популяция игроков переваливала за полмиллиона. И это все работало чисто на неблокирующих TCP-сокетах и select ровно в одном потоке.
    Написано
  • Как сделать многопоток сокетов?

    @MarkusD Куратор тега C++
    Артём Белых , подскажи. А зачем тебе в описанных условиях многопоточность?
    Написано
  • Почему в Си после main() не ставят ;?

    Deita, а почему, по твоему мнению, после main должен стоять знак точки с запятой?
    Что этот знак, по твоему мнению, означает?
    Написано
  • Как практиковаться в программировании?

    @MarkusD Куратор тега C++
    Meised, вот смотри. Я задал тебе короткий вопрос. Ты сперва выдал ответ, а потом пошел думать за меня и отвечать уже не мне, а самому себе. С таким подходом тебе в разработке делать вообще нечего.
    Для чего и почему я задаю свои вопросы, спрашивать надо только у меня. Я задал свой вопрос для того, чтобы увидеть фундамент, на котором ты строишь свое обучение. Фундамента у тебя нет, а отсюда нет и обучения.

    По описанию в твоем вопросе и по написанному во всех твоих комментариях видно только одно. Ты никогда не учился программированию и по сути так ничего и не умеешь. Все твои потуги никак не отличаются от все тех же игр. Хотя нет. Как разработчик игр, я могу сказать что в играх люди очень часто учатся чему-то полезному для их жизни. У тебя ситуация больше похожа на воскресный запой. Бесполезная трата времени.
    Разработка ПО - это не про написание буковок в каком-то порядке. Чтобы всего лишь начать в разработке, нужно уже быть квалифицированным инженером. Написание кода - это рядовой навык переводить инженерные решения в слова на каком-либо языке. А основной навык инженера - это способность мыслить системно в состоянии длительной и полной фрустрации. И у тебя этого навыка нет вообще, опять же, судя по твоим собственным словам. Фрустрации ты банально боишься.
    Инженер владеет инструментами и умеет их комбинировать для решения поставленной задачи. У тебя нет даже самых базовых инструментов, которые осваиваются еще в школе. Да, та же математика и прочие школьные дисциплины.
    Системное мышление позволяет видеть комплексность задачи. Ты думал что станешь хакером, это слишком высокоуровневая и комплексная задача, чтобы напрямую браться за ее решение. А системного мышления для декомпозиции этой задачи у тебя нет.

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

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

    @MarkusD Куратор тега C++
    Meised , так а зачем ты пошел на поводу у своего друга и начал учить программирование?
    У друга свои тараканы. Тебе с этого занятия какой толк?
    Написано
  • Почему не вижу отрисованную область?

    Викентий , ты меня извини, но что людям с этим кодом делать?

    При легком повороте камеры ты видишь часть фигуры, а так не видишь. Это значит что и сама камера у тебя не настроена на отображение пространства, в котором ты рисуешь объекты.
    Хорошо поставленный вопрос дает 50% верного решения. Это значит что тебе нужно локализовать проблему в своем коде, желательно до минимального блока кода. Или у тебя ошибка в координатах пространства, в котором ты рисуешь фигуры, или у тебя проблема в настройке камеры. Решать только тебе, как автору.

    Давай начнем с этого. Измени код в вопросе, локализуй ошибку. А дальше хоть я помогу, хоть еще кто.
    Написано
  • Как происходит обмен с БД данными в Lineage2?

    Владислав Лысков, 2003-й :)
    Она вышла в 2003м. Ragnarok Online вышла в 2002м. Rising Force Online - в 2004м. Cabal Online - в 2005м.

    И у них у всех +/- схожий протокол. TCP на 4-м уровне OSI, командная структура на 6-м уровне, схожее строение пакета, примерно схожие ограничения по приему-передаче. Примерно схожий расход трафика.

    И +/- одинаковые макароны в сетевой части, полное отсутствие понимания модели OSI в коде и, как следствие, характерная для корейского кода простота взлома протокола. Мне в те года, как игроку, за это было весьма обидно. Мне, как разработчику ММО проектов, сейчас весьма тяжело наставлять молодых ребят не то чтобы не повторять тех ошибок Корейцев, а хотя бы не использовать JSON с HTTP в сетевых проектах.
    Написано
  • Как происходит обмен с БД данными в Lineage2?

    Владислав Лысков, чему и сколько времени лежать на земле - определяется конфигурацией конкретного сервера.
    Сам сервер из себя представляет резидентную специализированную базу, но это только если рассуждать терминологически.
    На деле же функционал резидентной базы, функции чтения и записи данных, игровые механики и сетевой протокол настолько переплетены между собой и весь этот клубок неделим по своей сути, что лично я бы этот корейский код выкинул бы с диким позором. Он не выдерживает никакой критики.
    Традиционная БД там используется как средство бекапа посчитанных данных из резидентной. И дроп данных там идет очень часто, буквально на каждом такте мира для состояния каждой измененной за этот такт сущности.
    Загрузку из традиционной БД сервер выполняет, обычно, по требованию. Но часть данных, например база информации о предметах, какие они вообще есть в мире и какие у них свойства, или расы/навыки/классы со всей информацией о них, загружается на этапе запуска и конфигурирования сервера.
    После логоффа игрока его сущность еще какое-то время остается в памяти сервера. Чисто на случай повторного быстрого входа. Потому что тянуть игрока из традиционной БД дороже чем подержать лишние 30 минут в резидентной после его выхода. Тут важнее скорость входа игрока и снижение нагрузки на традиционную БД.
    Написано
  • Не могу, понять как компьютер перемещает свой знак?

    @MarkusD Куратор тега C++
    mrbudson, по сути это не ИИ. Даже не IA (Interactive Agent).
    Это вот так автор книги реализовал тривиальный BFS.

    Книга не про алгоритмы анализа и не про агентов. Ее задача в том, чтобы заинтересовать тебя в изучении и практике программирования.
    Написано
  • Не могу, понять как компьютер перемещает свой знак?

    @MarkusD Куратор тега C++
    mrbudson, одного "спасибо" тут мало.
    Если ответ решает твой вопрос, не забывай ставить отметку о решении.
    Написано
  • Не могу, понять как компьютер перемещает свой знак?

    @MarkusD Куратор тега C++
    mrbudson, "Перемещение фигуры" - это высокоуровневый термин.
    Компьютер фигуру перемещает терминологически. Фактически же компьютер попросту затирает фигуру в месте, где ее поставил, но не получил выигрыша.

    С моей т.з. в этом коде шибка. board[move] = EMPTY; должно выполняться только если !found. Но, вероятнее всего в этом коде только проба шага и анализ на выигрыш, а фактический шаг должен делаться в коде дальше по тексту книги.
    Написано
  • Как обеспечивается совместимость динамических библиотек при ликовке в рантайме?

    @MarkusD Куратор тега C++
    Сергей Соловьев, ответом на твой вопрос будет сама же ОС у тебя. Даже к тривиальному hello world будет подвязано с пару десятков динамических библиотек, каждая из которых не просто другим транслятором может быть собрана, а на другом языке написана.
    Я вот честно даже начинать углубляться в терминологию не хочу. Вопросы подобного уровня, Сереж, показывают что ты даже не начинал разбираться в этой теме. Это не совсем хорошо, потому что для объяснения мне надо написать много того, что ты и сам способен узнать из открытых источников.
    А достигается описанный выше эффект соглашениями. Соглашением об именовании, соглашением о вызовах или соглашением об управлении памятью, в качестве примера. Таких соглашений много и все они нестандартны относительно языков.

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

    @MarkusD Куратор тега C++
    MVV, мне так не показалось.
    Потому что конкретно по этому вопросу между C и C++ разницы нет. И не только между этими языками.
    Написано