묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
대용량 트래픽이 어려운 이유가 무엇인가요?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)[질문 내용]치킨 이벤트나 콘서트 티켓팅 등 같은 시간에 딱 맞추어 발생하는 대용량 트래픽은 최대한 Stateless 하게 개발하는 것이 중요하다고 하셨는데, 어떤 도메인에서는 아예 로그인도 풀려버리고 홈페이지 접속조차 안되는 상황이 발생하는 반면 콘서트 티켓팅이나 수강신청의 경우 대기번호(queue?)를 주어 로그인이 풀리거나 사이트에 접속이 안되는 경우가 없도록 하는 경우가 있습니다. 전자와 후자의 경우에서 "상태"의 차이, 서버 증설 규모의 차이, 대기큐 유무 중 어떤 것이 제일 대규모 트래픽을 감당하는데에 중요하다고 생각하시나요? 이외에도 대규모 트래픽을 수용하는 것에 있어서 중요한 요소가 있다면 알고 싶습니다. 페이지 앞단에 정적인 페이지를 두어 클라이언트의 시선을 분산시키는 것 등의 방법 말고 기술적인 측면에서만요.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
TypeCast에서 다루는 템플릿 흑마법 정말 잘 들었습니다!
안녕하세요!빨간책(moden C++ design)이 온라인에 검색해보니까 해외 직구로 살 수 있긴 하더라고요.지금 이직 준비 단계에선는 보기 어려울 거 같아 일을 시작하면 읽고 싶단 생각이 듭니다.괜찮을까요?
-
미해결이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
액터 생성/삭제와같은 중요한 행위에 대한 복제와 연관성
서버에서 어떤 AI 캐릭터 액터를 Spawn Actor 하거나생성된 이 AI 캐릭터가 스스로 Destroy하여 삭제되는 행위가 서버에서 발생했을때 이러한 것들은 무조건 연관성 상관없이 복제되서 위치상 매우 멀리 떨어져있는 클라이언트에서도 같은 캐릭터 액터가 생성되고 삭제 되는 건가요?
-
미해결그림으로 쉽게 배우는 네트워크
질문이있습니다!
vpn 부분을 듣던 중 궁금한 점이 생겼습니다. 인도를 거대한 인트라넷이라고 생각하였을때 이 인도 인트라넷으로 접근 가능하게 해주는게 vpn이 맞는걸까요? vpn을 쓰면 (인도로 설정하면) 해당 장비의 ip가 인도아이피라 인도로 유튜브나 스팀이 인식했떤건가요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
세션 레퍼런스 카운트 관련 질문입니다.
void Session::ProcessConnect() { _connectEvent.owner = nullptr; // (1) _connected.store(true); // (2) // 세션 등록 GetService()->AddSession(GetSessionRef()); // 컨텐츠 코드에서 재정의 OnConnected(); // 수신 등록 RegisterRecv(); }5장 Session#3 강의를 듣고 따라해보다가 클라이언트 프로그램이 위 함수를 실행하다가 터지는 문제가 발생했습니다. 디버깅을 해보니(1)에서 _connectEvent.owner의 strong ref가 1에서 0으로 줄어들면서 세션(this)이 삭제되고(2)에서 this를 참조하면서 문제가 생긴 것이었습니다. bool IocpCore::Dispatch(uint32 timeoutMs) { DWORD numOfBytes = 0; ULONG_PTR key = 0; IocpEvent* iocpEvent = nullptr; if (::GetQueuedCompletionStatus(_iocpHandle, OUT &numOfBytes, OUT &key, OUT reinterpret_cast<LPOVERLAPPED*>(&iocpEvent), timeoutMs)) { // (A): 강사님 코드 // strong ref: 1 IocpObjectRef iocpObject = iocpEvent->owner; // strong ref: 2 iocpObject->Dispatch(iocpEvent, numOfBytes); // (B): 제 코드 // strong ref: 1 //iocpEvent->owner->Dispatch(iocpEvent, numOfBytes); } else { int32 errCode = ::WSAGetLastError(); switch (errCode) { case WAIT_TIMEOUT: return false; default: // TODO : 로그 찍기 IocpObjectRef iocpObject = iocpEvent->owner; iocpObject->Dispatch(iocpEvent, numOfBytes); break; } } return true; }강사님 코드와 제 코드에서 어떤 부분이 다른지 확인해 본 결과 위와 같은 차이가 있었습니다. 강사님은 지역 변수로 스마트 포인터를 하나 만들어서 레퍼런스 카운트가 2인 상태로 세션->Dispatch 함수를 호출하는 반면, 저는 레퍼런스 카운트가 1인 상태로 세션->Dispatch 함수를 호출하는 차이가 있었습니다. [질문 1] 혹시 강사님은 코드를 짜실 때 (B)와 같이 코드를 짜면 문제가 생긴다는 걸 인지하고 (A)와 같이 짜신 걸까요? 레퍼런스 카운트를 어느 정도까지 고려하면서 프로그래밍을 하는 것이 좋은지 궁금합니다. [질문 2] 아래와 같이 코드를 수정해서 문제를 해결해도 별 문제가 없을까요?// 원본 코드 void Session::ProcessConnect() { // RELEASE_REF _connectEvent.owner = nullptr; _connected.store(true); // 세션 등록 GetService()->AddSession(GetSessionRef()); // 컨텐츠 코드에서 재정의 OnConnected(); // 수신 등록 RegisterRecv(); }// 수정된 코드 void Session::ProcessConnect() { _connected.store(true); // 세션 등록 GetService()->AddSession(GetSessionRef()); // RELEASE_REF _connectEvent.owner = nullptr; // 컨텐츠 코드에서 재정의 OnConnected(); // 수신 등록 RegisterRecv(); }
-
미해결그림으로 쉽게 배우는 네트워크
질문이있습니다.
루프백주소는 네트워크를 타지 않고 다시 자신에게 돌아오는데 이게 어느 계층에서 이렇게 돌아오는걸까요? 패킷까지는 생성되고 트랜스포트 계층까지는 가지 않은 상태로OS 자체에서 라우팅 테이블을 확인하여 다시 자신에게 전달하는건가요?-?
-
미해결이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
클라이언트 새로 생성시 크래쉬 나는 문제..
안녕하세요. 영상을 보면서 언리얼을 배우고있는 학생입니다.선생님께서 알려주신대로 제가 따로 만든 프로젝트에 점목을 시키고있는데 클라이언트 추가 생성시 GameMode를 상속받은 클래스에서 Login()함수에 NewPlayer의 플레이어 컨트롤러가 NULL로 들어와 크래쉬가 나 에디터가 꺼지는 현상이 일어 나고있습니다.. 어떻게 해결이 가능할까요???
-
미해결그림으로 쉽게 배우는 네트워크
질문이있습니다.
라우팅 테이블은 캐싱되는거라고 생각하면되나요? 아니면 별도의 하드에 직접 저장되는건가요? 라우팅 테이블에 저장된 정보도 lru알고리즘 같은걸로 삭제가 되고 새로운게 입력되고 이런 방식으로 돌아가는건가요?
-
미해결실습으로 배우는 핵심 네트워크 기술
ap란?
access switch에 대해서 배웠는데 예전에 access pointap에 대해서도 들은 적이 있습니다. 둘이 다른 개념인가요?
-
미해결실습으로 배우는 핵심 네트워크 기술
스위치 초기화
스위치 초기화 명령어로 erase startup을 알려주셨는데이렇게 rommon에서 지우는 것과 어떤 차이가 있을까요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
ObjectPool 강의에서 메모리 오염에 관한 질문입니다!
안녕하세요!메모리 풀의 단점 중 하나가 메모리가 오염됐을 때 계속 재사용되다가 시간이 지나서 문제가 되니까 원인 찾기가 어렵다고 말씀하셨는데요.그게 정확히 어떤 식의 오염인지 감이 안 와서 잘 와닿지 않았습니다. 요구하는 사이즈와 같거나 큰 크기의 메모리를 할당받아서 사용하고 반납하는데, 어떤 오염이 발생할 수 있는 건지 알고 싶습니다! 심지어 다른 애가 그 오염된 메모리를 사용하는 게 문제라고 하셨는데 그 오염된 상태가 어째서 계속 유지될 수 있는지 궁금합니다.
-
미해결김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
오타 제보
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]그냥 문제 없는 단순 오타이긴 한데 제보드립니다..리플렉션 강의노트와 강의자료 MethodV2 클래스 주석에 동적 메서드 호출 - 리플렉션 사용인데 사요로 되어 있어서 제보드립니다. 감사합니다.
-
미해결자동차 SW - UDS 진단통신 정복하기
요청/응답 포맷에서 RID 부분 질문있습니다.
강의자료 초반부에 RID 는 2byte 정수라고 하셨는데,요청/응답 포맷에 보면 RID 부분이 1바이트처럼그림이 설명되어 있습니다. 그림부분에서 RID 는 2바이트(2칸)라고 이해하면 될까요?
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
ArraySegment<byte>.Offset의 정의와 사용법이 궁금합니다.
안녕하세요?AraaySegment 관련해서 코드리뷰하다 궁금한게 생겨서 질문 드립니다. ArraySegment<byte>.Offset이 잘 이해가 안가서요. 제가 알아 본게 맞다면?Offset은 항상 0이 아니고 데이터가 시작하는 위치를 가르킴그렇다면 _buffer는 항상 0부터 데이터를 사용하고 있으므로 항상 Offset은 0임그렇다면 RecvBuffer.cs의 이 코드는 이렇게 바꿔도 되지 않을까? 원래 코드public void Clean() { int dataSize = DataSize; if (dataSize == 0) { // 남은 데이터가 없으면 복사하지 않고 커서 위치만 리셋 _readPos = _writePos = 0; } else { // 남은 찌끄레기가 있으면 시작 위치로 복사 Array.Copy(_buffer.Array, _buffer.Offset + _readPos, _buffer.Array, _buffer.Offset, dataSize); _readPos = 0; _writePos = dataSize; } } 수정 후 Array.Copy(_buffer.Array, readPos, buffer.Array, 0, dataSize); _readPos = 0; _writePos = dataSize; 마찬가지로 Session.cs 에서 _buffer정보를 리턴해 주는 이 코드는 이렇게도 되지 않을까?수정 전void RegisterRecv() { if (_disconnected == 1) return; _recvBuffer.Clean(); ArraySegment<byte> segment = _recvBuffer.WriteSegment; _recvArgs.SetBuffer(segment.Array, segment.Offset, segment.Count); 수정 후_recvBuffer.Clean(); ArraySegment<byte> segment = _recvBuffer.WriteSegment; _recvArgs.SetBuffer(segment.Array, segment.Offset, segment.Count); 제가 계속 곱씹어봤는데 Offset에 대한 이해가 안되서 ㅜㅜ 답변해주시면 감사하겠습니다.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Memory Pool #2에서 Use-After-Free 문제 관련 질문입니다!
안녕하세요!개인적으로 메모리 관련한 수업..굉장히 잘 듣고 있습니다.감사합니다!!다름이 아니라 우리가 수업에서 제작한 코드는 47:33에서 언급하셨듯 Use-After-Free 문제가 남아 있는데요.이 부분이 마소 성님들이 만든 SLIST 시리즈를 사용하면 해소가 되는 부분일까요? 아니면 SLIST와는 관련 없는 설계/구조적인 문제일까요?관련해서 설명하실 때 직접 만들어서 사용하지 말라고 하신 부분에서, 마소의 SLIST는 이 문제를 어떻게 다루었는지 궁금증이 생겼습니다.
-
미해결풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, flask 배포) [풀스택 Part3]
[인프런-수업자료요청] e북 자료(구글) 권한 요청드립니다 !
[인프런-수업자료요청] e북 자료(구글) 권한 요청드립니다 ! 본 강의명: 풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, flask 배포) [풀스택 Part3] 구글 이메일로 보냈으나 아직 답변이 없어서 커뮤니티에 남깁니다 ㅠㅠ
-
미해결이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해
수업과 좀 관련없는 문제지만 질문 있습니다
안녕하세요. 항상 강의 잘 듣고 있습니다.제가 집에서 듀얼 모니터를 사용하면서 노트북 모니터가 아닌 다른 모니터에서 언리얼 엔진을 띄우고 공부를 합니다.근데 밖에 나가서 노트북 모니터로만 하다가 그동안은 잘 됐었는데 갑자기 GPU Crashed or D3D Device Removed.Use -d3ddebug to enable the D3D debug device.Check log for GPU state information. 이라는 에러 창이 뜨면서 프로젝트가 켜지질 않습니다.제가 인터넷에서 방법을 찾아보면서 드라이버 재설치, defaultengine.ini에서 dx11로 바꾸고 실행, trddelay 설정, 엔비디아 제어판 전원파워 최고 성능 선호로 설정, 언리얼 엔진 외장 그래픽만 사용하도록 설정이렇게 다양한 방법들을 해봤는데 그래도 안되더군요. 근데 집가서 다시 듀얼 모니터로 연결하고 실행해보니 언리얼 엔진이 잘 켜졌습니다.어디가 문제고 어떻게 해결할 수 있을까요? 다음은 크래쉬 리포터에 뜨는 내용입니다. LoginId:e119c4204e141de266d9dca94151ea5aEpicAccountId:2ceddc945c6f4fcab6b011ccf8e10152Fatal error: [File:D:\build\++UE5\Sync\Engine\Source\Runtime\D3D12RHI\Private\D3D12Util.cpp] [Line: 868] hr failed at D:\build\++UE5\Sync\Engine\Source\Runtime\D3D12RHI\Private\Windows\WindowsD3D12Viewport.cpp:189 with error DXGI_ERROR_DEVICE_REMOVEDUnrealEditor_D3D12RHI!D3D12RHI::VerifyD3D12Result() [D:\build\++UE5\Sync\Engine\Source\Runtime\D3D12RHI\Private\D3D12Util.cpp:868]UnrealEditor_D3D12RHI!FD3D12Viewport::Init() [D:\build\++UE5\Sync\Engine\Source\Runtime\D3D12RHI\Private\Windows\WindowsD3D12Viewport.cpp:180]UnrealEditor_D3D12RHI!FD3D12DynamicRHI::RHICreateViewport() [D:\build\++UE5\Sync\Engine\Source\Runtime\D3D12RHI\Private\D3D12Viewport.cpp:831]UnrealEditor_SlateRHIRenderer!FSlateRHIRenderer::CreateViewport() [D:\build\++UE5\Sync\Engine\Source\Runtime\SlateRHIRenderer\Private\SlateRHIRenderer.cpp:409]UnrealEditor_SlateCore!SWindow::ShowWindow() [D:\build\++UE5\Sync\Engine\Source\Runtime\SlateCore\Private\Widgets\SWindow.cpp:1410]UnrealEditor_MainFrame!FMainFrameHandler::ShowMainFrameWindow() [D:\build\++UE5\Sync\Engine\Source\Editor\MainFrame\Private\Frame\MainFrameHandler.h:265]UnrealEditor_MainFrame!FMainFrameModule::CreateDefaultMainFrameAuxiliary() [D:\build\++UE5\Sync\Engine\Source\Editor\MainFrame\Private\MainFrameModule.cpp:319]UnrealEditor_UnrealEd!EditorInit() [D:\build\++UE5\Sync\Engine\Source\Editor\UnrealEd\Private\UnrealEdGlobals.cpp:171]UnrealEditor!GuardedMain() [D:\build\++UE5\Sync\Engine\Source\Runtime\Launch\Private\Launch.cpp:176]UnrealEditor!GuardedMainWrapper() [D:\build\++UE5\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:107]UnrealEditor!LaunchWindowsStartup() [D:\build\++UE5\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:244]UnrealEditor!WinMain() [D:\build\++UE5\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:282]UnrealEditor!__scrt_common_main_seh() [D:\a\_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288]kernel32ntdll
-
해결됨CloudNet@와 함께하는 Amazon EKS 기본 강의
EKS 클러스터 및 관리형 노드 그룹 생성에서 에러나시는 분들
// EKS 클러스터 및 관리형 노드 그룹 생성 EKS 클러스터 및 관리형 노드 그룹 생성쪽 스크립트 실행시--ssh-access 위부분 하위에--ssh-access \ --ssh-public-key abc-key \처럼 지정필요하네용
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
HttpOnly 가 http프로토콜에서만 사용된다?
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용]강의 13:25 에서 httpOnly를 설명할 때http전송에만 사용한다고 설명을 해주셨습니다. 전송방식에 http, https가 있다고 보는데둘 중 하나만 전송되는 것인지 궁금합니다.(인터넷검색을 했을 때 둘 다 사용된다고 합니다)
-
미해결그림으로 쉽게 배우는 네트워크
마지막강의에서 질문 2분 30초에서 2분 50초 사이
2분 30초에서 50초 사이 보면 애플리케이션 계층(Layer 5)에서 갑자기 네트워크 계층으로 설명이 넘어가시던데 이 사이에 TCP 3hand shake? 가 일어낫다라고 해석해도 괜찮을까요? http 프로토콜에서도 포트번호 있고 구글자체에서도 포트가 있고 내 컴퓨터에서도 포트가 있다라는 개념이 지금도 이해가 안가고 있습니다 포트라는 개념자체가 지금 이해가 안갑니다 ip주소가 있는데 왜 굳이 포트를 쓰는거지?? 거에서 지금 막혀 있습니다 .. 도와주세요 ㅠㅠ