묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨20년 경력자의 알기쉬운 컴퓨터네트워크
패킷 트레이서에서 라우터 모듈 설정이 되지 않습니다.
32:00 (패킷트레이서 기본 및 라우터 스위치 기본설정) 안녕하세요, 강의를 들으며 네트워크에 대해 매일매일 새롭게 배워가고 있는 학생입니다. 좋은 강의 정말 감사드립니다. 패킷 트레이서로 강의를 들으면서 실습을 해보고 있는데, NIM-2T 모듈을 라우터에 장착하는 부분에서 문제를 겪고 있습니다. ㅜ 저 모듈 버튼이 당최 말을 듣지 않습니다...프로그램의 오류일까요? 사용환경은 macOS (Big Sur)이며, 패킷트레이스 버전은 8버전입니다.
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
강사님 rest, http api 설계에 대해 궁금한점이 있습니다!
안녕하세요 김영한 강사님!! 이렇게 또 질문을 올리게 되었습니다..! 토이프로젝트로 api를 설계할때마다 너무나도 궁금한점들이 있었습니다. 간단한 예제로 회원 정보 api 설계로 예를 들어보겠습니다! . 회원 조회 api 설계라고 하면 보통 /members/{id} 이런식으로 알고 있습니다. . Spring Security를 이용해 jwt나 세션을 사용하면 Principal 객체에 회원 데이터가 들어있어서 이를 이용해 /members/me -> 이런 api 설계도 가능했었습니다 (jwt decode 된 정보나 세션 정보를 확인해서 정보조회) . 클라이언트 입장에선 로그인 후 회원 정보를 보고싶으면 회원조회를 요청하는 uri 주소를 띄워줘야 하는데 회원 리소스의 식별 값을 알아야지 조회가능 하지 않나? 라는 생각이 들었습니다. . Admin 페이지에서의 예를 들어보면 회원들 관리를 위해 전체 회원 목록 조회를 하면 회원 entity들을 dto로 반환하고 hateoas를 이용해 각각의 회원 정보를 조회하는 uri를 PagedResourcesAssembler를 이용해 각 회원마다 만들어 주었었습니다. (예시를 들자면 회원 목록 조회후 @Id 값들로 회원 조회, 게시판 글 목록 조회 후 @Id 값들로 게시판 글 조회, 주문 목록 조회후 @Id 값들로 주문 조회 이런식입니다!) ex) "id": 1, "username": member1, "links":[ { "rel": "회원 정보", "href": "http://localhost:8080/members/1" } ] "id": 2, "username": member2, "links":[ { "rel": "회원 정보", "href": "http://localhost:8080/members/2" }] ..... 하지만 로그인한 일반 유저 입장에선 -그냥 세션을 이용한다면 세션에 setAttribute한 값을 가져와서 회원을 조회해서 정보를 나타내주면 되고 -jwt를 이용한다면 decode된 정보를 바탕으로 회원을 조회해서 정보를 나타내주면 되는데 /members/{id} 로 api 설계를 하고 api 문서를 적어놨다고 하였을때 클라이언트 쪽에선 어떻게 개발을 하는지 궁금합니다. (보통 실무에선 restful을 지키기가 힘들기 때문에 보통 지켜지지 않으며 개발이 된다고 하신 답글을 보았었습니다!) . - /members/1 이라고 했을때 1번인걸 클라이언트가 어떻게 알고 회원 정보를 보는 페이지로 가는 uri를 적는걸까? -> 서버로 로그인 요청을 보내면 서버에서 1번 응답을 줘서 클라이언트에 따로 저장시켜놓는건가? . 이런 생각들입니다..! 제가 이부분에선 잘못 생각하고 있을수도 있지만 이상하게 헷갈리는 부분은 꼭 알고 가고싶어서 여쭤보게되었습니다. 구글에 찾아봐도 설계만 딱 있을뿐 저에게 답이 되는 부분은 찾지 못하였습니다..ㅜ . 그래서 정리하자면 1. /members/me -> Principal 에 저장된 정보로 회원조회 하는 설계랑 /members/{id} -> @PathVariable id 값으로 회원 조회 하는 설계가 명확히 어떤 측면에서 장단점들이 있고 제가 앞에서 말씀드린 내용의 대한 것과 제가 어떤 부분을 잘못 알고있는지 궁급합니다! 2. 보통 rest가 아닌 실무에서의 http api 설계를 할때 해당 페이지에서 이동 가능한 link 까지 포함해서 응답을 주는지 궁금합니다! (회원 정보 페이지 라고 한다면 회원 정보 페이지에선 회원 수정, 회원 탈퇴 의 링크가 있다면 이걸 포함시켜서 응답을 해야하는지)
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
쿠키에 관련해서 질문드립니다.
안녕하세요. 강의를 듣고 여러 프로젝트를 하면서 개념이 정리가 잘되지 않아서 이렇게 질문 드립니다. 실제로 일을 하다보면 여러 쿠키에 대한 여러 설정값이 나오더라구요. withcredentials, sameSite, secure, httponly 등등... 첫 번째로 서로 다른 도메인에서 쿠키를 주고 받으려면 클라, 서버 둘 다 withcredential = true 로 설정해야 된다는 것을 알고 있습니다. 만약 클라가 aaa.com이고 api요청을 api.aaa.com을 가지고 있는 서버에 준다고 하면 withcredential에 대한 설정을 어떻게 해야 하는 건지 궁금합니다. aaa.com과 api.aaa.com은 sameSite이고 서로 다른 origin 인것까지는 이해했습니다. 인터넷에 여러 글을 찾아봐도 어떤 글은 서로 다른 도메인간의 쿠키 전달이라고 명시되어 있는 반면 아떤 글은 서로 다른 origin 간의 쿠키 전달 옵션이라고 되어 있어 혼란스럽습니다. 결론적으로 1. 도메인과 서브 도메인의 도메인 일치 여부 2. withcredential 옵션의 기준 -> 서로 다른 도메인인지, 서로 다른 origin인지 3. sameSite 가 같은 도메인을 의미하는지 그래서 클라: aaa.com 서버: api.aaa.com 환경에서 withCredentials 설정을 해줘야하는지 궁금합니다. 답변해주시면 감사합니다.
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
디버깅 시작 시 오류가 뜹니다
처음부터 안된게 아니라 잘 되다가 vs를 껐다 킨 후 부터 계속 디버그 자체가 실행이 안됩니다. 코드상 문제는 아닌거같은데.. 이유를 잘 모르겠습니다 ㅠ
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
한번에 여러 회원들을 생성, 수정, 삭제 하려고 할때는?
안녕하세요. 강의 잘 보고 있습니다. 기존에는 전부 Post 로 createMember, deleteMember, modifyMember 등으로 api를 설계 했었는데요. 강의 보면서 createMember -> Post /members modifyMember -> Patch /members/멤버Id deleteMember -> Delete /member/멤버Id 이런식으로 바꾸려고 합니다. 근데 생각하다보니 만약 클라이언트에서 편리성을 위해 한번에 한개씩이 아닌 여러개의 회원을 만들거나 수정하거나 삭제하려고 할때 저런식으로 하면 애매한 부분이 있어서요. 예를들면 3명의 회원을 한번에 등록하기 위해 Post /members body에 { [{name: 홍길동, age: 20}, {name: 임꺽정, age: 25}, {name: 심청이, age: 22}] } 이런식으로 요청한다고 할때 응답코드의 Location 값은 어떻게 넣어주는게 좋을까요? (회원Id 값이 3개라서요) 그리고 Put, Patch 같은경우 클라이언트가 "리소스 위치를 알고 URI 지정" 이라고 하셨는데 일괄 수정하기 위해 Patch /members { [{id: 1, age: 21}, {id:2, age: 22}] } 이런식으로 호출하는건 규칙위반이라는 뜻인가요? (URI에 리소스 위치를 넣어준게 아니라 body에 리소스id값인 id를 넣어줌) 마지막으로 Delete /members 해서 임꺽정과 심청이를 삭제하려고 하는데 Delete 메소드는 요청에 body가 허용 안된다고 나와 있어서요. 이럴땐 어떻게 설계하는게 좋을지 궁금합니다.
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
mvc, spring과의 관계
안녕하세요 김영한멘토님, 매번 잘 듣고있습니다. 웹개발을 시작한지 7개월정도 되었는데요, 대부분의 홈페이지 프로젝트에선 전자정부 프레임워크로 개발을 하고 있구요. 강의를 보게 된건 aJax통신을 하던 중에 http 헤더와 바디에대한 개념을 잡고 싶어 바로 보게 되었고, 많은 궁금증이 풀려가고 있습니다. 다만, SI웹개발 현업에선 정말 Get,Post메소드만 사용하고 aJax통신에서도 다른 메소드를 사용하는 경우가 거의 없는데 그러다보니 MVC2와 Spring에 이 메소드들이 어떤 연관이 있는지 잘 이어지지가 않습니다. 다른 질문글에 있는 답변 중, 어차피 HTTP URI를 설계 했으면 스프링에서도 컨트롤러에서 매핑을 시켜주는 과정이 필요하다 라고 하셨는데, 그럼 혹시 스프링MVC에 PUT, DELETE등을 사용하는게 더 나은 경우가 어떤게 있을까요? 감사합니다.
-
해결됨20년 경력자의 알기쉬운 컴퓨터네트워크
강의노트를 공유해주시면 감사하겠습니다.
복습을 위해 pdf 형식의 강의노트를 받고싶습니다. 강의노트를 업로드해주시면 감사하겠습니다.
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
socket 라이브러리에 대해서 질문이 있습니다!
안녕하세요 영한센세~~ socket 라이브러리의 라이프사이클 궁금합니다.제가 이해한 바로는 애플리케이션 계층의 SOCKET 라이프러리에서 3 way handshake 연결을 끊을땐 4 way handshake과정을 하는 것으로 이해했는데! 그렇다면 서버측에서 응답 요청이 완료될때까지 SOCKET 라이브러리의 연결은 지속되는 것인가요~? 결론적으로...하기 빨간색 네모친 부분에 대해서도 SOCKET 라이브러리가 살아있는지가 궁급합니다!!
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
전체적인 흐름이 이게맞을까요?
강의를 듣다보면 가려웠던 부분을 긁는듯 시원한 느낌이 드네요! 좋은강의 감사합니다 전체적인 흐름을 한번 정리 해봤는데, 제가 이해한게 맞을까요?? (캐시가 되는 데이터라고 가정하겠습니다) 1. 데이터 최초요청 2. 서버 응답에 last-modified 정보 포함 3. 브라우저 캐시에는 last-modified 정보가 포함되어있음 4. 두 번째 요청시, 캐시의 유효시간이 만료됐다면 last-modified 정보를 바탕으로 if-modified-since 를 만들어 요청 5. 서버는 if-modified-since 정보를 바탕으로 데이터에 변경점이 없다면 304 notmodifed 리턴 6. 브라우저는 캐시에있는 데이터를 사용
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
멀티 쓰레드 질문 드립니다.
멀티 쓰레드 질문 드립니다. GameRoom 이 JobQueue를 가지고 있어서 멀트 쓰레드에서 안전하다고 하셨는데 GameRoom 의 Broadcast , Enter,Leave 등은 JobQueue 를 이용 하니 멀티 쓰레드에서 안전 한거 같은데 GameRoom 의 Flush 는 어떻게 안전 할수가 있나요?
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
stateless 하게 설계 예시에 대한 부연설명 부탁드립니다.
안녕하세요! 강의 잘 듣고 있습니다. 마지막 부분에 stateless 한 설계가 중요하다고 하면서 높은 트래픽이 예상될 경우에 정적 페이지를 첫 페이지로 설정하기도 한다는 케이스를 소개해주셨는데, 이 예시가 트래픽, stateless 와 어떻게 상관이 있는 건지 조금 더 부연설명 해주실 수 있을까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
패킷모아보내기 실습 보내는 갯수가 500으로 안떨어지는경우
더미클라이언트 수를 500으로 설정하고 실행 했을때 500으로 유지되지는 않고 267 정도로 계속 보내게 됩니다. 프로세스 메모리는 일정하게 유지가 되구요. 이런경우 프로세스 성능에 따라서 모아보내기가 적게 자주 보내게 될수도있나요? 예를 들어 while에서 패킷을 모아보내는 수가 500이 안차더라도 보낼수 있는건가요?
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
post 관련 질문드립니다.
안녕하세요! 항상 좋은 강의 감사드립니다 ^^ post 와 put 신규등록을 하는 경우가 헷갈리는데요 클라이언트가 등록될 리소스의 uri를 모르는 상황이라고 설명해주셨는데 예를들어 회원을 가입할 때 회원 id는 유니크 해야되고 사용자가 회원 id를 입력을 합니다 ( ex: testid) 클라이언트는 본인이 입력한 id이기 때문에 알고 있습니다. /member/testid 그리고 거꾸로 파일을 등록할땐 (ex : test.jpg)를 등록하면 서버에는 동일한 파일명이 존재할 수 있으니 식별자를 알 수 없고등록후에 test.jpg와 매핑된 아이디를 전달받아야 됩니다. 이런 상황이라면 예시와 똑같은 업무지만 post와 put 을 거꾸로 적용하면 될까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Action Invoke 질문입니다.
action 에 이벤트를 할당하고 Invoke 해서 실행시키는데 이게 그냥 실행시키는거랑 어떤 차이가 있을까요? Action<PacketSession, IPacket> action = null;if (_handler.TryGetValue(p.Protocol, out action)){ //1 action.Invoke(session, p); //2 action(session, p);}
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
DELETE의 응답 메시지 포맷
안녕하세요. 강의 항상 잘 듣고 있습니다. DELTE의 경우에 응답 메시지를 어떻게 해야 하는지가 강의에 나오지 않은 것 같아서요. 찾아보니 200,202,204 정도가 가능하다고 나와있는데(https://developer.mozilla.org/ko/docs/Web/HTTP/Methods/DELETE), 실무에서는 상태코드와 응답메시지를 어떤 식으로 처리하는 경우가 많은지 궁금합니다!
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
IP가 틀려서그런지 유니티에서 서버로 접속이 안되네요.
첫번째 사진이 서버 IP로그구요. 밑에 사진이 유니티 클라이언트 IP로그 입니다. 유니티에서 서버로 접속할때 OnConnectCompleted Fail: ConnectionRefused 로그가 뜨면서 플레이어 케릭터가 생성이 안되는 현상이 발생했습니다. 서버에 연결이 실패한 원인을 찾아보니 서버쪽에선 아이피가 :::1인반면 유니티쪽은 127.부터 시작하는 아이피로 서로 틀리더라고요. 서버쪽 로그를 보니 더미 클라에서 모아 보내기가 계속 찍히는거 보면 문제는 없어보입니다만, 이 경우 어떻게 해야될까요? 잘 부탁드립니다 ^^
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
Packet Queue 질문
안녕하세요. "Rookiss"님, Packet Queue에 대해서 질문드리려고 합니다. Push() 에 대해서는 BackGround Thread가 계속 Push하므로 lock을 거는 이유가 맞다고 생각되는데 Pop()에 대해서는 Unity의 Main-Thread만 사용한다면 따로 lock을 걸 필요가 없다고 생각되는데 혹시 다른 이유가 있어서 lock을 거신건가요?? 답변해주시면 감사하겠습니다!
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
리소스가 대체가 되어버린경우
같은사용자가 get으로 데이터를 요청하고 같은사용자가 put으로 데이터를 변경하고 같은사용자가 다시 get으로 요청하면 멱등이 아니지 않나요..?
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
HTTP API 설계 질문
안녕하세요. 좋은 강의 감사드립니다. HTTP API 설계와 관련하여 궁금한 점 질문 드리고자 합니다. 1. /members/{id} 와 같은 API URL에서 {id}에는 특정 회원을 식별할 수 있는 값, 주로 회원 테이블의 PK 값이 들어간다고 생각하면 될까요? 2. 만약 그렇다면 API 설계 시 URL에 PK 값을 노출시키는 것은 보안 상으로 문제가 되지 않는 것인가요? 3. 만약 회원 테이블의 PK가 id, email이라면(즉 특정 회원을 식별하기 위해서 id, email 두 개의 값이 필요하다면) /members/{id}/email/{email} 이런 식으로 설계해야 할까요? 실제 현업에서는 어떤 방식으로 하시는지 궁금해 여쭤봅니다. 감사합니다.
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
캐시지정 주체 질문
안녕하세요 이미지 캐시 지정 주체 질문 드립니다. 서버에서 <img src="abc.com"/>이 포함된 응답을 준다고 가정한 상황에서 이 이미지를 캐싱하고 싶은 경우 html을 돌려주는 서버가 캐싱 지정을 해야 하나요 아니면 "abc.com"(이미지 서버)가 캐싱 지정을 해야 하나요? 감사합니다