[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
#include <iostream> using namespace std; class Player { public: Player() { cout << "Player()" << endl; } virtual ~Player() { cout << "~Player()" << endl; } }; class Pet { }; class Archer : public Player { public: Archer() { cout << "Archer()" << endl; _pet = new Pet(); } virtual ~Archer() { cout << "~Archer()" << endl; delete _pet; } public: Pet* _pet; }; int main() { Player* archer = new Archer(); delete archer; } 영상 내용에서 자식클래스의 소멸자에도 virtual 을 붙이셨는데 부모 클래스의 소멸자에만 붙여도 자식 클래스의 소멸자가 잘 호출이 됩니다. 그래서 GPT를 통해 둘 다 붙이는게 좋은지 부모 클래스에만 붙이는게 좋은지 질문해봤는데 부모 클래스에만 붙여도 문제가 없다고 답변을 받았습니다. 근데 루키스님께서 둘 다 붙이는 이유가 분명 있으실탠데 그 이유가 궁금합니다.
안녕하세요! 너무 좋은 강의 잘듣고 있습니다 보안 문제로 특정 VPC를 경유하여 public Saas 서비스에 접속해야 할 경우 이 방법이 가능한지 문의드립니다. [VPC1] private subnet 1a 에서 destination이 특정 public 대역대(ex. 43.xxx~~)인경우 route table에 설정하여 TGW로 전달 **사설 IP가 아니라도 가능한지요? TGW에서는 [VPC2] private subnet 2a -> public subnet 2b -> IGW 순서로 전달
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 강의를 보다가 문득 궁금해서 질문드려요. 네트워크 강의 코드를 작성할 때, 하나의 프로젝트 폴더에 Server, Client 코드를 작성해서 각각 실행시키는데요. 만약, 이 프로그램을 배포한다고 가정하면 Server.jar 파일과 Client.jar 파일를 각각 만들고 고객한테는 Client.jar 파일만 배포하면 되는거겠죠? Client.jar 파일에는 Client 코드만 있으면 되고 Server.jar 에는 Session, SessionManager, Server 코드를 포함하고 있으면 될 것 같은데..
CV Producer() 내부의 lock 스코프 안에서 cv.notify_one()하는 것 질문드립니다. 그 안에서 notify_one()을 하게 되면 확실히 큐에 푸시한 후에 다른 스레드가 가로채기 전에 notify_one을 호출하니 Consumer()의 wait()에서는 확실하게 q에 값이 있는 상태가 되는 것 아닌가요? notify_one()을 한 후 Producer를 호출한 스레드는 스코프를 바로 빠져나올거고, 빠져나오면서 lock을 놓아줄 거고 그러면 놓아주는 순간 Consumer()의 wait는 누가 가로채기 전에 바로 들어오니 가짜 기상 문제가 해결되는 것 아닌가요. 아리달송합니다..
첫번째 질문은 네트워크 통신시 클라이언트-> 공유기-> 포워드 프록시 서버-> 로드밸런서->웹 서버 이렇게 요청이 전달된다면 패킷은 1. 클라이언트 -> 공유기 출발지 mac : 클라이언트 mac 출발지 ip : 클라이언트 ip 출발지 port : 클라이언트 랜덤 port 도착지 mac : 공유기 mac 도착지 ip : 로드밸런서 ip? 포워드 프록시 서버 ip? -> 만약 포워드 프록시 서버 ip라면 공유기에서 포워드 프록시 서버로 요청이 전달될 때 내가 서비스 받고자 하는 ip가 로드밸런서인지 대체 어떻게 아는지... 도착지 port : 80 2. 공유기 -> 포워드 프록시 서버 출발지 mac : 공유기 mac 출발지 ip : 공유기 ip 출발지 port : 공유기 랜덤 port 도착지 mac : 포워드 프록시 서버 mac 도착지 ip : 로드밸런서 ip? 포워드 프록시 서버 ip? 도착지 port : 80 3. 포워드 프록시 서버 -> 로드밸런서 출발지 mac : 포워드 프록시 서버 mac 출발지 ip : 공유기 ip? 포워드 프록시 서버 ip ? 출발지 port : 공유기 랜덤 port? 포워드 프록시 서버 랜덤 port? 도착지 mac : 로드밸런서 mac 도착지 ip : 로드밸런서 ip 도착지 port : 80 4. 로드밸런서 -> 웹서버 출발지 mac : 로드밸런서 mac 출발지 ip : 공유기 ip? 포워드 프록시 서버 ip ? 로드밸런서 ip? 출발지 port : 공유기 랜덤 port? 포워드 프록시 서버 랜덤 port? 로드밸런서 port? 도착지 mac : 웹서버 mac 도착지 ip : 웹서버 ip 도착지 port : 80 이렇게 정리해 봤는데 통신시 네트워크 장치를 지날 때 패킷이 정확히 어떻게 변화되는지 잘 모르겠습니다. 중간중간에 어떤 데이터가 되는건지 헷갈리는 부분이 있는데 그 부분을 알려주실 수 있을까요? 두번째 질문은 tcp connection은 클라이언트 -> 공유기 , 공유기 -> 프록시 서버 , 프록시 서버 -> 로드밸런서 , 로드밸런서 -> 웹서버 이렇게 4개가 생기게 되는건지.. 모르겠습니다. ip가 변경되는 순간에 tcp 연결을 해야된다거나 tcp connection이 생기는 기준이 있나요? 세번째 질문은 만약 tcp 연결이 저런식으로 생성된다면 프록시 서버 -> 로드밸런서 , 로드밸런서 -> 웹서버 이 구간에서 우선 클라이언트 요청마다 새로운 프록시 서버 port로 요청되어 클라이언트를 식별하게되고, 이후에 로드밸런서가 웹서버에게 요청을 전달할 때 sticky session 옵션을 안하면 통신했던 웹서버로 계속 요청이 전달되지 않고 새로운 웹서버로도 통신할텐데 그럴 때마다 로드밸런서는 새로운 웹서버와 tcp 연결을 계속해서 새롭게 생성을 하는건가요?
루키스님 안녕하세요? vs 2022에 맞춰서 IOCP 구축연습 밑바닥 부터 하고있습니다. 역시 환경 설정부터 난관이었는데요, ServerCore의 .lib파일을 GameServer가 못찾습니다 (ServerCore 빌드까지는 됩니다) 강의 몇번을 돌려봐도 안되길래 좀 찾아보니까 pch.h에 절대 경로를 넣어서 찾아주거나(근데 이건 아니다 싶어서) #ifdef _DEBUG #pragma comment(lib, "C:\\CppGameServer25\\CppGameServer25\\GameServer\\Libraries\\Debug\\ServerCore.lib") #else #pragma comment(lib, "Release\\ServerCore.lib") #endif 강의에서 더해서 GameServer의 추가 라이브러리 디렉토리를 설정해줘야지만 .lib 파일을 찾고 GameServer가 빌드할 수 있었습니다. 일단 되니까 다행이긴 한데, 됐으니까 장땡인지, 아니면 제가 경로 설정? 환경 설정?등 알아둬야 하거나 놓친 것이 있는지 조언 구하고 싶습니다. 왜 강의대로만 하면 안되고 추가 라이브러리 디렉터리를 설정해줘야지만 빌드가 되는지 원리에 대해 궁금합니다.
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. 궁금증이 생겨서 질문을 드립니다. "I/O 기본1 정리"를 보고 들으면서, 버퍼에 한번에 가득 채워서 쓰기( bos.write(buffer) ) 및 한번 만에 읽기( bos.readAllbytes() )에서 궁금증이 생겼습니다. (7:25 부분) 어느 정도의 파일 용량이 까지, 한번 만에 쓰기 및 한번 만에 읽기를 하는지 알 수 가 없었습니다. 어느 정도가 파일 용량이 작은 거라고 생각하는지 알고 싶습니다. 답변 부탁드립니다.
동일한 과정을 거쳐서 원클릭 배포를 실시했는데, 해당 스택만 나타나고 나머지 3개의 스택은 나오지 않았습니다. ec2, vpc, subnet, 보안그룹은 설정이 됐는데, eks 클러스터가 생성되지 않습니다. 추가로 해당 명령어를 입력했을 때 값이 존재하지 않는변수도 있는데, 어떻게 해야 정상적인 배포를 할 수 있을까요?
[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
Scene과 SceneManager 강의 수강 중 키보드 입력 오류가 있어서 문의드리게 되었습니다. DevScene의 Update()에서 키보드 입력을 받을 때 강의와 똑같이 코드를 입력했음에도 불구하고 콘솔창에서는 한쪽 방향으로만 오브젝트가 움직입니다. (만약 A를 입력하면 A로만 움직임.) 혹시 원인이 뭔지 알 수 있을까요?
[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
안녕하세요! 10주차의 Window API 강의를 듣던 중 TimeManager.cpp에서 QueryPerformanceFrequency와 QueryPerformanceCounter메서드에 LARGE_INTEGER 타입으로 변환해서 인자를 넘겨주는 과정에서 오류가 있었는데 해결 과정을 문의하고 싶습니다. Types.h에 문제가 있을까 싶어서 찾아봤지만, 별다른 이상이 없어서 원인을 모르겠습니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 8분 31초 협상과 우선순위3 ppt 내용에서 제시된 Accept는 text/*;q=0.3, text/html;q=0.7, text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5 이고 표에서는 text/html;level=3 의 q가 0.7로 적혀있습니다. text/html;level=2 의 q값은 0.4지만 text/html;level=3 은 제시된 Accept가 없는데 말씀하신 구체적인 것을 기준으로 미디어 타입을 맞춰서 해당 Media Type의 q 값을 text/html 의 q값인 0.7을 사용하는 것으로 이해하면 될까요?
안녕하세요. 수업과는 다른 내용의 질문일 수도 있을 것같습니다. 클라이언트가 게임 중간에 새롭게 추가되었을 때, 현재 레벨에 대한 정보를 전달할 수 있는 방법이 있을까요? 게임 진행 중에 아이템 박스를 획득해서 이미 사라진 상태인데, 현재 상태에서 들어온 새로운 클라이언트 기준에서는 표시가 되는 현상이 있습니다. 어느 게임에서는 중간 난입을 허용하기도 하는데, 이럴 때는 어떻게 처리하는지 궁금합니다.
유니티수업에서 Networkmanger class 질문입니다. 클라이언트에서 서버와 통신 도중 통신 연결이 갑자기 해제한 된 경우(사용자가 의도하지 않은 경우 랜선이 뽑혔다거나..) Connector는 새로 생성해서 기존 Session 객체를 넘겨주면 되는건가요? 소켓은 다시 생성하고 session객체는 재사용이 되는걸까요? 이때 session객체가 이미 사용중이라는 메세지가 뜨는 것 같아서요. 서버와 통신 중 어떤 이유로 연결 해제 시 클라쪽에서 서버와 자동 재접속을 해보고 싶어 질문드립니다.