묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
실전문제풀이 pdf문의
안녕하세요 강사님강의 잘 듣고 있습니다! 문제풀이 pdf 중 아래 해설도 적혀있는 pdf 받아볼 수 있는지 문의 드립니다. 감사합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
궁금해져서 질문드립니다
C_Chat chatPakcet = packet as C_Chat 여기에서 as로 형 변환을 하는것과 안하는 것의 차이점을 알고 싶습니다
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
Router 와 Gateway 차이 질문입니다
안녕하세요 강의를 보다 문득 게이트웨이와 라우터의 차이가 더 궁금해서 글을 작성합니다. 제가 구글에서 찾은 정보에 의하면라우터는 주로 LAN과 WAN을 연결(layer3)하는데 많이 사용되며, 게이트웨이는 프로토콜이 다른 네트워크를 연결(layer4)할 때 주로 사용합니다라고 하는데 게이트 웨이는 오직 layer에서만 쓸 수 있는지, 둘이 같은 개념인지 궁금합니다! 그리고 이 둘에 대한 널널한 개발자님의 견해가 더 궁금해요.감사합니다.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
queue의 데이터 이외의 공간?
MemoryPool에서 queue나 vector을 사용하면 데이터 뿐만 아니라, 데이터를 담아두기 위한 공간이 별도로 할당된다고 하셨습니다. 이 별도의 공간이 무엇인지 잘 모르겠습니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
SendBuffer 마지막부분 이해가 안됩니다.
질문 1. TLS로 SendBuffer를 스레드별 전역변수로 지정했으면, SendBuffer 멤버필드인 buffer도 스레드별 전역변수가 아닌가요?그런데 왜 _buffer는 공유자원처럼 다수의 스레드가 참조하는 건가요?(28:39 부분) 질문 2. 만약 _buffer는 TLS 여도 다수의 스레드가 볼 수 있다고 쳐도, 어차피 Send하는 부분은 그 스레드가 넣은 부분만(handler에서 close로 보내준 segment영역) 보내주기때문에 상관없는 것 아닌가요? (하지만 애초에 질문 1이 이해가 안됩니다.) 질문 3.이전에 Session#2 강의 시작부분에 설명해주신 내용에서,SEssion의 receive는 OnRecvCompleted()메서드에 여러 스레드가 동시다발적으로 들어가는 경우는 없다. 라고 하셨는데, 해당 강의에서는 어떤 이유로 멀티스레드를 생각해야 하는 상황이 된건지 궁금합니다.질문 4.Session 객체는 connect되는 client당 하나씩이니까 client와 연결 될 때 마다 새로운 session객체가 생성되어 다 따로 만들어지는 것이기 때문에 애초에 _sendQueue도 스레드별로 따로 아닌가요? 질문 5. _buffer는에서 읽기만 하는거니까..(30:03) 라고 하셨는데 읽는 부분이 어느부분인지, deq하는것을 읽는것이라고 표현하신건가요? 어떤 경우들을 말슴하시는건지 이해가 안되어 헷갈리는게 많습니다. 일단 질문은 더 있지만, 대표적인 질문들로 올려봅니다
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
sleep_for과 yield 차이 질문드립니다.
안녕하세요! 멀테스레딩 강의(Lock 구현 부분) 수강 중에 제가 제대로 이해가 안 가는 부분이 있어서 질문드립니다.구체적으로 강의 코드에서 sleep_for와 yield의 내부적 동작?을 저는yield(): lock이 잠겨있는 경우, system time slice에 상관없이 바로 context switching이 발생해, 해당 스레드가 다시 운영체제 스케줄링 큐에 들어가 운영체제가 다시 실행시켜 줄 때까지 대기sleep_for(n): lock이 잠겨있는 경우, yield와 마찬가지로 컨텍스트 스위칭이 바로 발생하는데, n시간동안 해당 스레드가 sleep thread 큐에 저장되어 있다가, 그 다음에 스케줄링큐로 들어가서 이후에 다시 실행될때까지 대기이해했는데, 이게 제대로 이해한게 맞을까요?특히 sleep_for의 동작이 이해가 잘 안가는데, 스택오버플로우에서는 https://stackoverflow.com/questions/17325888/c11-thread-waiting-behaviour-stdthis-threadyield-vs-stdthis-threadsleep_for(n)의 경우 최소 n시간 이상을 block한다는데, 해당 스레드가 블록되었다는 말이 컨텍스트 스위칭이 되어있다는걸까요? 또 sleep thread queue는 운영체제에서 관리하는 개념일까요? (제대로 이해를 못해서 질문이 두서 없는 점 죄송합니다....)
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
segmeng 범위 지정시에 질문
안녕하세요, RecvBuffer 강의중에서//읽을 수 있는 유효한 데이터의 범위 public ArraySegment<byte> ReadSegment { get { return new ArraySegment<byte>(_buffer.Array, _buffer.Offset + _readPos, DataSize);} } //사용가능한, 비어있는 범위 public ArraySegment<byte> WriteSegment { get { return new ArraySegment<byte>(_buffer.Array, _buffer.Offset + _writePos, FreeSize); } }위와 같이 segment 프로퍼티를 설정하였는데, 중간 인자로 그냥 readPos를 넣지 않고 buffer.Offset + readPos 로 계산한 이유를 모르겠습니다. 현재 저의 생각으로는 buffer.Offset은 결국 언제나 0이지 않나? 입니다. 코드를 보았을 때 offset을 조작하거나 건드리는 코드는 아직 현재강의(RecvBuffer)까지는 없고, 나중에라도 _readPos와 DataSize가 결국 segment범위를 바꿔주니 이 offset을 건들일 필요는 없다고 생각이 드는 상태입니다. 또한, 만약 offset을 변경시키는 경우가 있더라도 offset+readpos 하면 offset이 0이 아닌경우 readpos에 맞지않는곳이 시작위치가 될텐데 왜 offset을 더하는건지 이해가 되지 않습니다.따라서 offset을 더한 이유가 궁금합니다!
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
RecvBuffer clean함수 이렇게 작성하면 어떻게 되나요?
안녕하세요, RecvBuffer 클래스를 작성하는 강의에서, clean()함수를 작성하실 때 강사님께서는이렇게 작성하셨는데,혹시 아래와 같이Array.Copy(ReadSegment.Array, 0, _buffer.Array, 0, DataSize);이렇게 작성해도 똑같은 결과가 나오려나요? 혹은 나중에 다른상황에서 이렇게 작성하면 다르게 동작한다던지 그런 문제가 있을까요?위에 적용된 ReadSegment범위를 사용하지 않는 이유가 뭔지 궁금합니다.public void Clean() { int dataSize = DataSize; if (dataSize == 0) { _readPos = 0; _writePos = 0; } else { Array.Copy(ReadSegment.Array, 0, _buffer.Array, 0, DataSize); _readPos = 0; _writePos = dataSize; } }
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
RegisterRecv()에서 args초기화 구문 사라진 이유
안녕하세요, 현재 RecvBuffer 강의를 시청중입니다.강의를 듣다가 RegisterRecv 를 봤는데 강사님께서void RegisterRecv(SocketAsyncEventArgs args) { args.AcceptSocket = null; bool pending = _socket.ReceiveAsync(args); //바로 성공했으면 if(pending == false) { OnRecvCompleted(null, args); } } 위와 같이 원래 있었는데void RegisterRecv(SocketAsyncEventArgs args) { bool pending = _socket.ReceiveAsync(args); //바로 성공했으면 if(pending == false) { OnRecvCompleted(null, args); } } 위처럼 args.AcceptSocket = null; 를 언제인지는 모르겠지만 삭제를 하셨던거같은데,언제, 왜 삭제하신건지 이유가 궁금합니다.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
메모리 릭이 쌓이고 있는지에 대한 체크
안녕하세요 선생님유니티 클라, C++ 서버로 탑뷰 슈팅게임을 만들고있습니다.C++서버가 종료됐을때 메모리 릭이 남는것이 아닌 프로그램이 가동중에 유저, 총알등이 삭제되고 생성되면서 계속해서 릭이 쌓이고있는지 확인하고 싶은데 방법이 있을까요?선생님이 알려주신 메모리기법들은 적용하지 않았습니다.(알려주신것들을 최대한 공부하고 이해는 했기 때문에 어떻게든 써먹을수있겠지만 적용하지 않은 이유는 제가 감당할수없기 때문입니다. 문제가 생겨 필요한 상황이 나왔을때 그때 구현해볼 생각입니다. 사용하는 부분들도 있습니다. 버퍼관리라던지...)
-
미해결풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, 배포까지) [풀스택 Part3]
안녕하세요 질문좀 드릴께요
제가 서버는 완전 지식이 없는 기초인데요해당 강의를 구매하였구 공부 예정이예요혹시 해당강의에 클라우드에 리눅스 서버 구축 방법등 강의가 포함되어있나요?!
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
listener, connector static 차이 이유
안녕하세요, connector와 listener변수에서 static 차이가 일어나는 이유에 대해 질문드리고자 합니다. server 코드의 listener는 아래와 같이 static으로 정의하셨는데, (그리고 저 _obj는 왜 있는건지, 그냥 지워도 되는걸까요?) static object _obj = new object(); static Listener _listener = new Listener(); client코드의 connector는 그냥 static없이 Connector connector = new Connector();이렇게 그냥 변수로 지정하신 이유가 궁금합니다.
-
해결됨초보자를 위한 IT 인프라의 이해
NL-SAS 와 SAS 의 차이점
이 둘의 차이점이 정확히 뭘까요?? ㅠㅠ 궁금합니다가격은 nl-sas가 더 싼거 같긴한데...
-
해결됨CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조
API의 정의 질문
큰돌님, 안녕하세요. 강의 잘 듣고있습니다!학습 중에 궁금증이 있어서 질문 올립니다.API를 뭐라고 정의해야 될까요???큰돌님 강의 교안 19페이지에서는 API를 '둘 이상의 컴퓨터 프로그램이 서로 통신하는 방법이자 컴퓨터 사이에 있는 중계 계층의 의미'라고 적어주셨는데요,강의 교안 185페이지 REST API 파트에서는API를 '소프트웨어와 소프트웨어 사이에서 데이터 전송을 가능하게 하는 프로그램'이라고 적어주셨습니다.그 외에도, 인터넷으로 API의 정의에 대해 찾아보면 '소프트웨어 간의 통신 규약'이라고 나오는 등 정의가 애매모호한 것 같습니다.기술면접에서 API에 대해서 질문이 들어올 경우, 어떻게 답하는게 가장 깔끔할까요?? 아니면, 어떻게 답해도 상관이 없을까요???
-
해결됨CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조
REST API의 URI규칙에 대해서 질문드립니다
안녕하세요, 네트워크 파트의 REST API 강의 내용 수강 중 문의점이 생겨서 질문드립니다.설명해주신 내용 중에 'Uniform-Interface의 6개의 규칙'과 'URI 규칙 6가지'간의 관계가 어떻게 되는지 잘 이해가 안 되는데요,6개의 Uniform-Interface 규칙을 지켜서 URI를 만들었을 때의 'URI 생성 규칙'이 교안 187페이지에 나와있는 6가지 규칙이라는 게 맞을까요???
-
해결됨CS 지식의 정석 | 디자인패턴 네트워크 운영체제 데이터베이스 자료구조
토큰기반 인증방식에 대해서 질문있습니다
안녕하세요, 토큰기반 인증방식에 대한 내용 학습을 하다가 질문이 생겨서 문의드립니다.교안이나 강의 내용을 보면, stateless를 유지하기 위해서, 기본 서버 이외에 인증 서버를 따로 두어야 하는 것으로 같은데 맞나요??그냥 하나의 서버에서 인증과 다른 요청 처리를 같이 하더라도, 서버에 인증정보가 관리되는 것이 아니고, 토큰에서 관리가 되기에 인증 서버를 따로 마련하지 않더라도 서버가 stateless하게 관리되는 것 같아서 문의드립니다
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
ArraySegment<byte>
public ArraySegment<byte> ReadSegment { get { return null; } } public ArraySegment<byte> WriteSegment { get { return null; } } 심각도 코드 설명 프로젝트 파일 줄 비표시 오류(Suppression) 상태오류 CS0037 'ArraySegment<byte>'은(는) null을 허용하지 않는 값 형식이므로 null을 이 형식으로 변환할 수 없습니다. ServerCore 저는 null을 넣을때 오류가 뜨는데 무슨 이유일까요?
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
Content-Encoding 질문입니다.
Content-Encoding는 표현 데이터를 압축하기 위해 사용한다 라는 것은 이걸 사용하면 표현 데이터를 직접 압축을 시켜준다는 의미인가요??그러면 Content-Encoding은 직접 압축을 해주기도하고 표현데이터가 어떤 압축방식인지 알려주기도 하는 2가지 용도로 사용되는건가요??답변주시면 정말 감사하겠습니다.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Lock-Based Queue 병목현상 질문 드립니다.
Lock-Based Queue를 제작하여 테스트를 할 때 waitPop을 사용할 경우 sleep을 지우고 디버깅을 해보면 Queue 사이즈가 무한정으로 늘어납니다. Push를 한 번 Pop을 2번 돌려도 마찬가지입니다. 실제 스레드에서 사용할 시에는 sleep을 사용하지 않고 while문으로 돌리게 될텐데, wait를 쓰면 이렇게 병목현상이 발생하는 걸까요? 이 현상을 해결할 방법은 없나요?
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
다른 도메인이 같은 포트를 사용하는 경우
다른 분들의 질문답변을 보다 헷갈려서 질문드립니다.어떤분 질문답변에서host: www.delivery.com IP와 포트 : 200.200.200.2:3000host:www.hungry.com IP와 포트 : 200.200.200.2:3000이와 같은 상황에서는 포트번호가 같아 작동하지 않는다. 포트번호는 응용 계층(즉, OS)에서 관리하는 가상의 개념인지라 같은 포트번호를 두개의 어플리케이션에서 공유할 순 없다. 라고 되어있는데 다른분 질문에서는aaa.com 의 포트번호 100번에 배달의 민족 주문 서비스(하나의 .jar파일 실행이라고 가정)bbb.com 의 포트번호 100번에 카카오 선물하기 서비스(IP는 200.200.200.2 로 동일하다)이런식으로 따로 연결이 되고 이 포트번호 100에는 또다른 프로그램(서비스)을 연결할 수 있다고 되어있습니다. 다른 도메인이 같은 포트를 사용할 수 있는 건지 궁금합니다. 답변주시면 정말 감사하겠습니다.