묻고 답해요
160만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
수강 연장 부탁드립니다.
11월에 만료가 되는데 아직 강의를 다 듣지못하여서 연장 요청드립니다. 감사합니다.
-
미해결CloudNet@ - AWS 네트워킹 입문
강의 수강기간 연장에 대하여
안녕하세요 강의 구매한지는 꽤 되었는데 업무가 바쁘다 보니 아직까지 완강을 못했습니다..연말까지 수강기간 연장을 부탁드려도 될까요?
-
해결됨20년 경력자의 알기쉬운 컴퓨터네트워크
문제해결 1번 문제
packet tracer ver 8.2.2.0400 사용 중입니다.문제해결 1번, Router 에서 license 설치가 안되고 telephony-service 명령어도 안보여서혹시 version 이슈일 지 아니면 제가 놓친 게 있을 지 궁금하네요
-
미해결풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, 배포까지) [풀스택 Part3]
강의 소개에 나오는 강의자료? 들은 어떻게 받을수 있나요?
안녕하세요.강의 결제는 했는데요. 강의 영상 말고 소개에 나오는 강의 자료? pdf나 웹링크? 같은것은 어디에 안내되어있나요? 따로 요청을 해야 하나요?강의 영상이랑 같이 제공해주시는 자료가 있다면 미리 다 받고 한번에 빠르게 학습하려고 합니다. (현업개발자라 알고 있는 내용은 스킵하면서 빠르게 봐야 합니다.)메일 주소를 알려 드려야 하나요? 아니면 어디로 요청 메일을 보내야 하나요?
-
해결됨김영한의 실전 자바 - 고급 2편, I/O, 네트워크, 리플렉션
ClientV6 코드를 조금 변경해보았는데,,, 질문드립니다.
안녕하세요, 영한님뒤에 있을 채팅 프로그램을 직접 만들어보려다가 난관에 봉착해 질문드립니다.ClientV6 코드 내의 while문을 Thread에 넣는 작업을 진행하였습니다.아직 클라이언트에서 입력 값을 넣기 전임에도 불구하고 서버에서 EOFException이 나는데 그 이유를 모르겠습니다. 혹시 제가 코드를 잘못 짠 것인지아님 놓치는 부분이 있는 것인지 한 번 봐주실 수 있나요?public class ClientV6_1 { private static final int PORT = 12345; public static void main(String[] args) throws IOException { log("클라이언트 시작"); try ( Socket socket = new Socket("localhost", PORT); DataInputStream input = new DataInputStream(socket.getInputStream()); DataOutputStream output = new DataOutputStream(socket.getOutputStream()); ) { log("소켓 연결: " + socket); new Thread(new ClientHandler(socket), "ClientHandler").start(); } catch (IOException e) { log(e); } } }public class ClientHandler implements Runnable { private final Socket socket; private final DataInputStream input; private final DataOutputStream output; public ClientHandler(Socket socket) throws IOException { this.socket = socket; this.input = new DataInputStream(socket.getInputStream()); this.output = new DataOutputStream(socket.getOutputStream()); } @Override public void run() { Scanner scanner = new Scanner(System.in); try { while (true) { System.out.print("전송문자: "); String toSend = scanner.nextLine(); // send output.writeUTF(toSend); log("client -> server: " + toSend); if (toSend.equals("exit")) break; // receive String received = input.readUTF(); log("client <- server: " + received); } } catch (IOException e) { e.printStackTrace(); } finally { close(socket); } } }
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
_wfopen_s(&file, path.c_str(), L"wb"); 실패하는 경우
void Tilemap::SaveFile(const wstring& path){ { FILE* file = nullptr; ::_wfopen_s(&file, path.c_str(), L"wb");//writebinary ::fwrite(&_mapSize.x, sizeof(_mapSize.x), 1, file); <- 여기에서 크러쉬 나면서 뻗어버립니다.} 이럴 경우 관리자 권한 문제일까요?
-
미해결모든 개발자를 위한 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에 대한 이해가 안되서 ㅜㅜ 답변해주시면 감사하겠습니다.