묻고 답해요
137만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
disassembly 창
dissasembly 창을 띄우고 싶은데, 이처럼 설정을 해줘도 창이 띄워지지 않습니다. 이런 경우, 어떻게 해야 하는지 문의드립니다.
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
RemoveItem 함수에서 아이템 포인터를 nullptr로 바꾸기 전에 delete를 하지 않는 이유가 있나요?
강의에 나온 예제 에서는 Clear 함수로 모든 아이템을 delete하는데 이때 RemoveItem 함수에서 이미 nullptr로 지정된 아이템은 따로 delete 연산을 하지 않아서 Clear 이후에 배열의 포인터는 nullptr인데 힙 메모리에는 데이터가 남는 게 아닌가 싶어서 질문 드립니다.실제로 RemoveItem을 실행하는 아니템들을 따로 배열에 모아 Clear 함수 이후에 데이터를 확인해 보니 아이템들이 존제하는 것을 확인 했습니다.bool Inventory::RemoveItem(Item* _item){ if (_item == nullptr) return false; int slot = FindItemSlot(_item); if (slot < 0) return false; //delete mItem[slot]; // 제거되는 아이템 모음 mRemove[mRemoveIndex] = mItem[slot]; mRemoveIndex++; mItem[slot] = nullptr; mItemCount--; return true;}위에 mRemove에 아이템을 모아 Clear 이후에 중단점을 걸어 데이터를 확인해 보니 아이템의 데이터가 남아있는 것을 확인했습니다.혹시 의도적의로 delete연산을 하지 않은 것 인지 궁금하여 질문 드립니다.
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
서버에서는 어떻게 URL을 숨길 수 있을까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.1. 강의 내용과 관련된 질문을 남겨주세요.2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.(자주 하는 질문 링크: https://bit.ly/3fX6ygx)3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)예[질문 내용]갑자기 드는 생각인데 팀프로젝트나 기타 협업을 위해 깃허브 같은 사이트에 프로젝트를 올리게 될 경우 서버 주소와 데이터베이스 주소가 노출 될 수 있는데 해당 경우에는 어떻게 URL 데이터를 숨겨서? 올리는 방법은 무엇이 있을까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
onAcceptHandle 추가 위치 질문 드립니다.
_listenSocket = new Socket(endPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp); _onAcceptHandler += onAcceptHandler; _listenSocket.Bind(endPoint); _listenSocket.Listen(10)위 코드에서 new Socket() 한 뒤에_onAcceptHandler += onAcceptHandler; 로 핸들러를 추가 했는데,아래 코드처럼 Listen() 뒤에 추가 해도 문제 없을까요?_listenSocket = new Socket(endPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp); _listenSocket.Bind(endPoint); _listenSocket.Listen(10); _onAcceptHandler += onAcceptHandler;
-
해결됨이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
언리얼 데디케이트 서버와 리슨서버 호환성에 대한 질문입니다!
안녕하세요 교수님part 1, part 2를 모두 수강하고 너무 도움이 많이 되어 part 3까지 듣고 있는 클라이언트 지망생입니다~강의를 들으니, 처음 게임을 개발 할 때, 서버를 염두해 두지 않고 개발을 하면 이후에 코드를 수정하는데 많은 시간이 걸리는 것을 이해를 했습니다.그렇다면 리슨서버로 개발을 진행하고, 이후에 데디케이트 서버로 변경을 하려고 하면 이 또한 많은 코드 수정이 필요한가요?정확히 궁금한 것은, 언리얼에 리슨서버와 데디케이트 서버의 호환성이 높은지 아니면 완전히 다른 코드를 사용해서 구현해야 하는 것인지 입니다~~
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
수강연장 부탁 드리겠습니다...
새로운 회사에 적응 한다고 바빠서 수강을 못했습니다...내년 자격증 취득을 목표로 설정하여 열심히 공부하겠습니다.수강 연장 부탁드리겠습니다..!
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
byte[] -> ArraySegment 변환 중 생략 된 부분
더미클라와 서버의 Program.cs에서byte가 arraysegment 부분으로 변환되는게 생략되었습니다.어려운 작업은 아니지만, 뒤에 듣는사람 참고하라고 올립니다. 아닌가.. 내가 잘못한 부분이 있었네 public override void OnConnected(EndPoint endPoint){Console.WriteLine($"OnConnected bytes : {endPoint}");byte[] tempBuff = Encoding.UTF8.GetBytes("Welcome to MMORPG Server!");ArraySegment<byte> sendBuff = new ArraySegment<byte>(tempBuff);Send(sendBuff);Thread.Sleep(1000);Disconnect();} public override void OnConnected(EndPoint endPoint){Console.WriteLine($"OnConnected bytes : {endPoint}");//데이터를 보낸다for (int i = 0; i < 5; i++){byte[] tempBuff = Encoding.UTF8.GetBytes($"Hello World {i}");ArraySegment<byte> sendBuff = new ArraySegment<byte>(tempBuff);Send(sendBuff);}}
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
수강연장 부탁드립니다ㅠㅠ
안녕하십니까 선생님 강의 정말 잘 듣고있습니다. 올해말에 계속 출장이랑 업무가 바빴어서 수강기간 연장 부탁드려도 될지 말씀 여쭙습니다ㅠㅠ꼭 기간내에 잘 수강해서 자격증 취득까지 이루겠습니다. 감사합니다
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
멀티스레드 프로그래밍에서 디버깅하면서 문제 추적하려면 어떻게 해야하나요?
멀티스레드 병렬 프로그래밍은 싱글 스레드와 다르게 디버깅하기가 매우 까다롭더라구요 ㅠㅠI/O 출력을 하거나 로그 파일로 따로 빼서 로깅을 확인하는건 싱글스레드까지만 가능하고 멀티스레드에서는 별 도움이 되지 못하더라구요이 외에 다른 방법으로는 디버깅 모드로 실행 시 문제가 발생했을 때, memory를 확인하면서 역추적하면서 문제를 해결하는 방법밖에 떠오르질 않는데, 이 방법이 맞을까요?예를 들면 여러 스레드를 실행하면서 call 횟수, 작업하는 변수의 주소값, 수행 시간 등을 list에 저장한 다음에 조사식에 해당 list를 끌어와서 확인해보려고 하는데...현업에서는 멀티스레드 로깅 및 문제 역추적할 때 어떤 방법을 사용하나요..?
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
정적 데이터 조회와 동적 데이터 조회 차이
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) : 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용]여기에 질문 내용을 남겨주세요.안녕하세요, 정적 데이터 조회와 동적 데이터 조회를 써야하는 경우가 정확하게 구별되지 않아서 질문 남깁니다. 강의에서 정적 파일을 받는 경우 uri에 자원을 명시하고. 동적으로 조회하는 경우에 쿼리파라미터를 사용하는데요.정적 파일을 받는 경우에도 쿼리파라미터를 사용해도 될 거 같은데, 사용하지 않는 이유가 어떤걸까요?예를 들어 정적 파일의 경우는 응답 받은 서버에 이미 저장되어 있는 파일을 반환하고, 동적으로 조회하는 것은 db에 저장된 내용을 불러오는 차이가 있을 것도 같은데요. 요약하자면, 정적 데이터 조회이던 동적 데이터 조회이던 쿼리 파라미터를 사용하도록 해도 될 거 같은데 왜 분리가 되는건지 궁금합니다.
-
미해결비전공자의 전공자 따라잡기 - 네트워크, HTTP
301 리다이렉트 관련 질문입니다!
만약, 리액트를 사용한다고 하면 서버에서 301로 응답이 왔을 때 프론트에서 useNavigation() 훅을 이용해서 응답에 맞게 이동시켜야 하나요?
-
해결됨외워서 끝내는 네트워크 핵심이론 - 응용
게이트웨이와 NAT 게이트웨이
안녕하세요?게이트웨이 개념을 익히고 NAT 게이트웨이도 알게 되었는데요두 개의 개념이 혼동이 옵니다..게이트웨이는 통상적인 역할을 하는 큰 개념이고, NAT 게이트웨이는 그중에 복수의 호스트(ex.인터넷 공유기)를 대상으로 NAT 기술을 사용한 게이트웨이로 이해하면 될까요?
-
해결됨풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, flask 배포) [풀스택 Part3]
CMD, ENTRYPOINT 관련 문의입니다..
안녕하세요 강사님.Dockerfile 작성을 위한 주요명령 익히기4 의 10분 10초 처럼 Cmd의 값이 뒤에 붙지않고 null로 뜨는데,, 로그를 봤을때는 hello /bin/sh hi 로 Cmd 인자가 정상적으로 붙습니다. Dockerfile 은 정상적으로 작성했습니다. 혹시 제가 놓친부분이 또 있을까요? 몇번 강의돌려도 null로 뜨는건 똑같아서..
-
해결됨[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
프레임 제한 코드의 원리가 궁금합니다.
윈도우api 메인 루프 부분에서 프레임 제한을 위해 적은 코드의 원리를 모르겠습니다. uint64 prevTick = 0; uint64 now = ::GetTickCount64();if(now - prevTick >= 10) // 요부분!{ // TODO prevTick = now;} sumTick 을 만들어서 특정 시간이 되면 if 문으로 들어가는 것도 아니고 현재틱-이전틱 이 일정값 이상으로 조건을 걸어주는게 어떻게 프레임을 제한하는지 궁금합니다.
-
해결됨풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, flask 배포) [풀스택 Part3]
docker rmi 관련 문의입니다.
안녕하세요 선생님.docker 주요 명령 익히기6(컨테이너 다루는 다양한 옵션) 8분:25초 에서 해당 이미지를 제하려고하면 하기와 같은 오류가 뜨면서 삭제가 안되는데, 조치할수있는 사항이 있을까요?.. ubuntu@ip-172-31-38-226:~/2021_DEV_HTML$ docker system dfTYPE TOTAL ACTIVE SIZE RECLAIMABLEImages 4 4 305.5MB 0B (0%)Containers 11 1 28B 26B (92%)Local Volumes 0 0 0B 0BBuild Cache 0 0 0B 0Bubuntu@ip-172-31-38-226:~/2021_DEV_HTML$ docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEubuntu latest b6548eacb063 12 days ago 77.8MBhttpd alpine 489db2792d7f 13 days ago 59.3MBhttpd latest a6ca7b52a415 3 weeks ago 168MBhello-world latest 9c7a54a9a43c 7 months ago 13.3kBubuntu@ip-172-31-38-226:~/2021_DEV_HTML$ docker rmi httpd:latestError response from daemon: conflict: unable to remove repository reference "httpd:latest" (must force) - container 919738d198d7 is using its referenced image a6ca7b52a415ubuntu@ip-172-31-38-226:~/2021_DEV_HTML$ 감사합니다..
-
해결됨AWS Certified Solutions Architect - Associate 자격증 준비하기
안녕하세요, 질문이 있습니다.
안녕하세요, 회사에서 화이트리스트에서 특정 웹 사이트를 추가해야해서IP로 화이트리스트에 추가해야한다고 했을 때, 로드밸런서나 어떤 방법(컨테이너 서비스 등)으로 상대방의 웹 사이트에 접속할 때마다 IP가 바뀌어 화이트 리스트가 제대로 작동하지 않는 경우는 어떻게 해야 하나요? 일일이 생기는 IP를 모두 화이트리스트에 등록을 해야하는지요? 고맙습니다.
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
aws solution architect professional 자격증 문의
해당 강의로 aws solution architect professional 자격증도 준비 가능할까요?aws solution architect professional 자격증을 위한 진행 중이신 강의가 있거나, 추천하실만한 강의 있으면 공유부탁드립니다.
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
해당 강의 수강 후 질문
안녕하세요 루키스님!해당 강의를 완강한 후에 대해, 궁금한 게 있어 질문드립니다.올인원 C++의 내용으로도 MMO Part3 자료구조 알고리즘과 다이렉트x11 강의를 수강하여도 문제가 없을까요?
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
포인터 이동 질문
포인터에 대한 강의를 듣고 포인터에 대한 공부를 하던 도중 이해가 되지 않는 부분이 있어 질문드립니다.Shape** shapes;shpaes = new Shape* [100];shapes[0] = new Circle(); //shapes[1] = new Triangle();shapes[2] = new Triangle();...// shapes[1]을 지우고 포인터 shapes[2]번을 shapes[1]번으로 옮길때저는 현재 힙 영역의 메모리 구조를 이렇게 생각하였고포인터는 어쩌피 주소를 닮는 공간이니delete shapes[1];로 도형을 지우고 shapes[1] = shapes[2]로 하고 shapes[2] = nullptr로 하여이런식으로 진행하면 문제가 없다고 생각했습니다.그런데 프로그램을 종료할때 delete[] shapes를 진행하는 부분에서 Heap Corruption Detected( 메모리에 대한 잘못된 접근이나 이미 해제한 메모리에 대한 접근 ) 오류가 나오게 됩니다.그래서 생각되는 문제가 shapes[1] = shapes[2]로 바로 옮기면 되는 것이 아니라 옮기기 전에 shapes[1]에도 shapes[2] 만큼의 크기를 만들어 주고 shapes[1] = shapes[2]로 옮겨야 되는 것인가 라고 생각하여 코드를shapes[1] = new Circle(); // shapes[2]에 저장된 도형을 만들고*shapes[1] = *shapes[2] // 값을 복사하고delete shapes[2]; // shapes[2]를 지우고shapes[2] = nullptr; // nullptr로 가리키고 있는 곳을 풀어준다.이렇게 코드를 수정하니 delete[] shapes; Heap Corruption Detected에 대한 메모리 오류가 사라졌습니다.여기서 드는 궁금한 점이 포인터는 주소를 담는 바구니(8바이트)인데 왜 shapes[1] = shapes[2]로 가르키는 곳만 바꾸는 것으로 Heap Corruption Detected의 오류가 나며 동작이 안되는지 궁금합니다.
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
이벤트 페이지 설계를 다음과 같이 map-reduce 방식으로도 하는지 궁금합니다.
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]안녕하세요. "비연결성" 강의를 보던 중 궁금한 것이 생겨 질문을 올립니다. 순간적으로 몰리는 이벤트를 위해 설계를 다음과 같이 구성하기도 하는지 궁금합니다.특별 이벤트 페이지를 운영할 때, 짧은 시간 동안 유저들이 몰려 트래픽이 급증하는 경우가 많습니다. 예를 들어, 오후 6시부터 7시까지 1시간 동안 특별 이벤트가 진행된다면, 그 시간 동안 트래픽이 매우 높아질 것입니다.이러한 상황에서 서버 증설을 고려하며 stateless한 서비스 구성이 중요한데, 이에 대한 다음과 같이 설계를 해보겠습니다. 예를 들어, '오후 6시부터 7시까지 1000명에 한해 20% 할인되는 콘서트 티켓 구매 이벤트'를 진행한다고 가정해보겠습니다. 이 경우, 유저가 이벤트에 참여한 후 즉시 결과를 알 필요는 없다고 생각합니다. 각 웹 애플리케이션 서버마다 독립된 DB를 두어, 이벤트 참여 여부만 해당 서버의 DB에 저장합니다. 그리고 오후 7시가 지난 후, 모든 서버의 DB에 있는 이벤트 관련 데이터를 한꺼번에 일관되게 처리합니다. 이때, 먼저 참여한 1000명을 선정한 후, 모든 참여자에게 이벤트 당첨 여부를 이메일이나 문자로 알립니다. 제가 볼때 이 구조는 마치 map-reduce 모델과 유사하고 단지 reduce 단계가 상대적으로 늦게 실행되는 구조입니다.이러한 구조에 대해서 어떻게 생각하시나요? 또 이벤트를 위해 보편적으로 사용되는 아키텍쳐가 있을까요?