묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
서버에 관하여
서버는 단 한개의 데이터베이스를 갖지 못하는건가요?마이크로서비스아키텍쳐나 이런것들을 사용하면 서버 한개가 죽어도 Stateful 하게 통신할 수 있지 않나요? 또는 기존 모놀리식 아키텍쳐로 여러 서버를 설계를 한다해도 DB를 하나로 통합하여 사용하면 되는것이 아닌가요?방금 말한 방법은 확장성과 Scale out을 고려한다면 비효율적인 방법같긴 하지만 하나의 방법으로 생각되어 질문 남깁니다!
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
reinterpret_cast질문이있습니다.
template<typename T> BufferWriter& BufferWriter::operator<<(const T& src) { *reinterpret_cast<T*>(&_buffer[_pos]) = src; _pos += sizeof(T); return *this; } reinterpret_cast c++강의에서 아주 강력한 변환 포인터랑 정수사이도 변환이 가능하고.. 다 가능한 변환 느낌이었는데 앞에*를 붙여주는 이유가 궁금합니다. *reinterpret_cast<T*>(&_buffer[_pos]) = src; =========================== T*로 변환하는데 src가 참조라서 *를 한번 더 붙여주신건가요?
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
/{id}가 뭘까요?
안녕하세요. members/{id}에서 /{id}가 뭘 뜻하는거죠? members/100이 아니라 members?id=100 아닌가요? 제 생각에는 해당 메서드를 호출할 경우 뒤에 아이디값을 파라미터로 넘겨 주는 것 같은데 /는 디렉토리 표시 같아서 헷갈려서 질문 남깁니다. 감사합니다.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
상속관계 복사부분 질문이있습니다.
1. // 상속 관계 복사 template<typename U> TSharedPtr(const TSharedPtr<U>& rhs) { Set(sticta_cast<T*>(rhs._ptr)); } 강의에서 TSharedPtr클래스의 상속관계복사부분이 이해가 조금 부족한 것같습니다. 부모 자식관계에서 받아온 값들을 다시 static_cast<T*>로 하면 복사가 정상적으로 되는건가요? 2. 강의에서 wraight = nullptr 이 부분은 실제로 wraight = WraightRef(nullptr); 로 되어있어서 TSharedPtr(T* ptr) { Set(ptr); }이 호출된 후 복사 연산자가 호출된다고 말씀하셨는데 실제 디버깅을 해보니 복사가 아니라 이동쪽으로 브레이크 포인트가 타고있었는데 같은 맥락인건가요 ?
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
서버에서 URI를 만들어 넘겨준다고 하셨는데 React, Vue 로 만들어진 프론트에서는 어떻게 처리하나요?
React나 Vue 같은 SPA에서는 데이터를 받아서 대부분의 처리를 클라이언트에서 하기때문에 클라이언트에서 URI를 통해 처리하는것 처럼 유사하게(흉내내서) 처리하게되는데 이럴때는 서버는 그냥 데이터만 넘겨주나요?
-
해결됨20년 경력자의 알기쉬운 컴퓨터네트워크
시뮬레이션을 활용한 네트워크 구성 질문
강의 Layer2 네트워크 개요 및 특성에서 말씀하신 부분 중 10분 54초에서 스위치는 브로드캐스팅 도메인을 물리적으로 나눌수 없다고 하셨는데 물리적으로 브로드캐스팅 도메인을 나눌 수 있는 거는 라우터 아닌가요?? 스위치라고 말씀하셔서 문맥상으로 라우터라고 생각하는데 자막을 달아주셨으면 좋겠네요
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
TCP 4 way handshake
[질문 내용] 안녕하세요. TCP 프로토콜을 공부하다 궁금한 점이 있어 질문드립니다. 연결지향의 특징을 갖는 TCP는 연결할 때 뿐만 아니라 해제할 때도 4-way handshake라는 과정을 거친다고 알고 있습니다. 4-way handshake는 언제 이루어지는 것인가요? 연결을 종료하는 시점이 말씀하신 데이터 전달 보증 과정이 종료되면 일어나는 것인지 궁금합니다..
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
오버로딩 new
오버로딩 new가 궁금합니다 매개변수로 타입 size_t인데 어떻게 생성자로 new Knight()가 받아지는건가요? 디어셈블리에서도 해당 크기가 받아지는데 그 부분이 왜그런지 궁금합니다.
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
3-way handshake 질문
안녕하세요 3-way handshake 관련해서 질문 드립니다 syn, syn-ack, ack의 과정이 클라이언트의 TCP전송계층에서 서버의TCP전송계층으로 서로 연결 가능한 상태인지 확인을 하는걸로 이해하고 있는데요 이런 논리적인 연결을 하려면 결국에는 클라이언트 전송계층에서 서버쪽 전송계층으로 가기위해서는 네트워크 -> 물리계층 을 거쳐서 연결을 위한 패킷이 먼저 왔다갔다 한다고 이해하면 될까요? 단순설명으로만 보면 클라이언트 TCP계층에서 서버TCP계층으로 다이렉트로 연결되는 것처럼 느껴지는 부분이 있어서 헷갈려 질문드립니다!
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
소켓프로그래밍 질문드립니다.
현재 락프리까지 듣고 소켓프로그래밍이 궁금해서 바로 넘어 왔는데 현재 게임서버쪽이 ws2에러가 재정의 에러가 나서 질문드립니다. 현재 msdn으로가서 오타도 확인하고 안되서 루키스님의 소스도 복붙했는데 제 visual에서 에러가 발생하는데 혹시 threadmaanager 강의쪽에서 추가하신 것이 있어서 그런건가요? 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
AcceptEx 질문있습니다.
AcceptEx가 실패가 나는 경우 즉 , AcceptEx호출 자체가 false가 나고, 이때 GetlastErrror가 WSA_IO_PENDING이 아닌경우나 , AcceptEx의 호출로 IOCP 에서 Pending중일때 모종의 이유로 GQCS에서 AcceptEx pending에 대한 실패가 리턴되는경우 listen socket이 close되었거나, 어찌되었든 더이상 유저를 받지못하는 상황일 수 있는데 이럴때 서버에 강제로 CRASH를 내도록 해도 될것같은데, 혹시 이렇게 하면 안될 이유가 있을까요?? (AcceptEx를 호출할때 close된 session 소켓을 전달하는 경우는 없고, AcceptEx의 호출결과로 IOCP 유저접속을 대기중인상태(Pending)일때 session socket이 close되거나 session이 삭제되는 일은 일체 없다고 가정합니다. 물론 listen socket은 닫힐 수 있지만, listensocket이 닫히면, 서버를 유지시켜줄 이유가 없다고 생각되긴 합니다.)
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
초록줄에러...
ㅇ이런에러는 어떻게 해결하나요??
-
해결됨20년 경력자의 알기쉬운 컴퓨터네트워크
단말기와 장치들과의 연결할때
안녕하십니까. 단말기와 스위치 및 라우터 장비에 연결시킬 때 강의에서는 선과 선 사이에 Fa0 Fa0/1 등등 선 끝과 끝사이에 이렇게 문구가 떠 있는데 제 PC 프로그램에서는 선만 표시되고 Fa0 및 Fa0/1 등 과 같은 문구가 표출이 안되는데 설정시키는 방법이 따로 있는건가요?
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
브라우저 캐시 갱신 관련 질문
=========================================[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예/아니오) 예2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예[질문 내용] 먼저, HTTP 웹 기본 지식 강의 완강했습니다. 좋은 강의 만들어주셔서 감사합니다. python django backend 개발자를 준비하고 있습니다. 질문은 `브라우저 캐시 갱신` 관련 질문입니다. 1. 브라우저는 기본적으로 서버에서 보내는 캐시를 다 저장하기 때문에, 캐시 무효화를 위해서 서버에서는 이와 관련된 header를 반드시 넣어야 한다고 이해하는 게 맞나요?? 2. 캐쉬 유효 시간이 지나서 갱신하려고 할 때, 수정된 내용이 없으면 header만 보낸다고 이해했습니다. 그러면 representation header 설명 강의 내용에서 'clinet와 serer 간에 주고 받는 resource의 data를 어떻게 표현할지 결정하는 header' 라고 설명하셨는데, 클라이언트가 브라우저 캐시로 접근 유무를 결정하는 역할도 포함하는 건가요??? - header가 업데이트 되어 클라이언트가 브라우저 캐시를 조회 후, 업데이트 되는 원리를 제가 모르는 것 같습니다. 3. representation 관련 부분에서 Meta data 가 언급되는데 제가 이해하기로는 데이터 안에 담겨진 content data로 이해했습니다. 이게 맞나요?? 잘못되었다면 정확한 내용을 가진 출처를 알려주시면 공부해보겠습니다.
-
해결됨20년 경력자의 알기쉬운 컴퓨터네트워크
버전 질문
안녕하세요? Cisco Packet Tracer Student가 깔려있는데 이 버전으로 수강해도 무리 없을까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Interlocked를 통한 원자성 보장
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 멀티스레딩에 관해서 큰줄기를 잡아가는 중입니다 멀티 스레딩의 기본적인 개념과 쓰임새는 이해를 했습니다. 멀티 스레딩을 사용할 경우에 겪을 수 있는 오류, 즉 다수의 스레드의 경합에 의해서 데드락에 걸리는 경우도 이해를 했습니다. 거기다, 해당 오류에 대한 해결책이 경합시 원자성을 바탕으로, 목표 프로세스는 하나의 스레드에 의해 처리되고 나머지 스레드는 대기하게 만드는 거라고 이해했습니다. (혹시 제가 잘 못 이해한거라면 고쳐주세요!) 원자성을 보장하는 방법에 관해서 제 예상과 강의가 조금 달라서요 강의 초반에 해주신 설명과, 의사코드로 보여주신거로 봐서 처음에는 이 원자성을 보장하는 방법도 C#코드로 구현이 될 거라고 생각했는데, C#에서 마련된 InterLocked 클래스를 쓰시더라고요 거기다 의사코드로 설명하실 때, 이건 이렇게 몇줄로 나눠진 거라서, 화장실에 동시에 2명이 들어가는 가능성이 있다라고 하셨는데 InterLocked를 쓰니까 같은 내용인데 해당 오류가 방지되는걸 보고서 다음과 같은 생각이 들더라고요 원자성은 다른 스레드가 침범할 수 없는 하나의 막을 두루는 것이며 InterLocked클래스가 바로 이 보호막을 둘러달라고 C#에 마련되어 있는 CPU에게 요청하는 방법이 아닌가 싶습니다. 혹시 제가 이해를 똑바로 한 걸까요?
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
HTML Form에서 GET/POST만 지원하는 이유
[질문 템플릿]1. 강의 내용과 관련된 질문인가요? (예)2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (아니오)3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예)[질문 내용] http://haah.kr/2017/05/23/rest-http-method-in-html-form - 해당 글을 읽어 봤는데 잘 이해가 되지 않습니다. - DELETE는 form 을 통해 값을 전달할게 없다는것은 알겠는데 - 위 블로그 글에서 PUT 의 내용이 이해가 안되네요.. - 그래서 GET/POST만 지원하는 궁극적인 이유가 무엇인가요~? 아래는 PUT 내용입니다. - PUT도 전송해야할 것은 대상 리소스를 대체할 representation 그 자체인데, 대상 리소스더러 조각난 form 데이터를 처리하라고 보낼 수는 없는 노릇
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
get에 쿼리파라미터가 있으면 캐시는 어떻게 처리되나요?
get은 uri를 키로 사용하니까 쿼리 파라미터가 있더라도 uri로 캐시를 하나요? /members/sort=desc&page=1 이럴 경우
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
컬렉션과 스토어 질문드립니다.
안녕하세요. 컬렉션과 스토어 정리가 잘 되지 않아 질문드립니다. https://www.inflearn.com/questions/265095 를 읽고나서 조금 더 혼란스러워서요..ㅠㅠ 위 질문에서 DELETE /members/{memberid} 는 생성/관리의 역할을 서버가 맡고 있다고 보는것이 맞다라고 답변이 적혀있는데요. 강의에서는 PUT /files/{filename} 은 클라이언트가 리소스의 URI를 알고 관리하기 때문에 /files는 스토어라고 설명되고 있습니다. 형태만 봤을 땐 files나 members의 URI 형태나 처리하는 방식이 비슷해 보여서 정리가 되지 않습니다.ㅠPUT /files/{filename} 은 파일 자체를 만들어주는것이(생성)이 아니라서 스토어이고,DELETE /members/{memberid}는 멤버정보를 DB에 저장해서 하나의 회원을 생성/관리(수정,삭제)하기 때문에 컬렉션이라고 이해하면 될지요?그게 아니라면 파일도 결국 members처럼 파일정보를 넘겨서 파일은 서버에 저장하고, 파일정보는 DB에 저장하므로 서버에서 처리하는게 아닌가하는 의문이 듭니다.매번 답변해주셔서 감사합니다 :)
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
안전(Safe), 멱등(Idempotent) 관련하여 질문드립니다.
안녕하세요. safe와 멱등 개념을 확실히 이해하고 싶어서 질문드립니다. ---------------------------------------------------- - safe : 리소스를 변경하지 않는, 즉 읽기전용 메서드(GET, HEAD)를 말한다. - 멱등 : 특정 메서드를 여러번 호출하여도 결과가 같다. ---------------------------------------------------- - GET, HEAD : Safe하면서, 멱등하다.- POST : 리소스의 위치를 지정하지 않았을 때 리소스를 생성하는 등 데이터를 변경하고 새로 생성된 결과를 보내줄 수 있으므로 safe하지도 않고, 멱등하지도 않다.- PUT : 리소스의 위치를 클라이언트가 알고 있고, 같은 리소스를 생성하거나 수정하므로 동일한 데이터로 요청하면 결과가 같다.그러므로 safe하지 않지만, 멱등하다.- DELETE : 클라이언트가 지정한 리소스를 삭제, 즉 수정이 일어나지만 삭제라는 동일한 결과를 제공하므로 safe하지 않지만, 멱등하다.혹시 잘 못 이해한 부분이 있으면 답변 부탁드립니다.감사합니다 :)