묻고 답해요
161만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
GET, POST 메서드 외 비활성화 관련
실제 실무에서 URI 설계를 강의 내용과 같이 설계하고 진행한 경우가 있었으나, PR 서버 환경에서 PUT, DLETE, PATCH 메서드가 비활성화 되어 이슈가 있었던 적이 있습니다. 관련하여 사유를 확인해보니 보안과 관련한 사항으로 GET과 POST만을 허용하기 위함이라고 응답받았는데 이와 관련해서는 어떻게 생각하시나요?? 실제로 PUT, DELETE, PATCH가 보안에 위협이 되는 메서드인지도 잘 모르겠습니다.
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
멀티쓰레드와 관련해서 질문이 있습니다.
멀티쓰레드를 학습하게 되면서 나름대로 정리를 해보았는데요. 멀티쓰레드 환경에서는 쓰레드가 공유하는 자원에 대한 일관성이 보장되어야 한다. 즉, 특정 쓰레드에서 공유 자원의 데이터를 변경하면 다른 쓰레드에서도 똑같이 변경된 데이터를 다뤄야한다. 이러한 문제를 해결하기 위해 쓰레드가 공유 자원에 접근하기 전 Lock을 걸고 들어가서 다른 쓰레드가 해당 자원에 접근하지 못하도록 막고, UnLock을 통해서 다른 쓰레드가 접근할 수 있게 해준다. 이 때 접근한 쓰레드는 변경된 공유 자원 데이터를 사용하게 된다. 이렇게 이해한게 맞는건가요 ? 원자성이라는 개념을 이해하기를 하나의 작업을 처리할 때 수행되는 모든 과정들을 일련의 한 묶음으로 보고 이것은 마치 더이상 나누어지지 않는 것처럼 모두 수행되거나 모두 수행되지 않아야 한다. 그런데 Lock을 통해서 원자성을 구현한다고 이해하고 있는데 이게 맞는건지 궁금합니다... 왜냐하면 Lock을 통해서 공유자원에 다른 쓰레드가 접근을 못하게 막는것은 맞지만 Unlock을 할 때까지 여러가지 작업을 할 수 있는데 그것은 원자성을 보장하지 않는 거 같다고 생각해서입니다.
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
코어와 프로세스, 쓰레드간의 관계에 대해서 궁금합니다
그림판 비유를 보면 컴퓨터에서 동시에 사용하는 프로그램마다 최소한 하나의 프로세스와 쓰레드를 가지고 있는데 컨텍스트 스위칭이 일어난다고 하면 코어 하나만 갈구는거 아닌가요? 그리고 아직 쓰레드를 직접 사용해본적이 없어서 잘 모르겠지만 메모리의 동기화를 보장하기 위하여 멀티스레드 프로그래밍에서 lock를 적극적으로 사용하는데 이러면 어느부분에서 성능향상이 일어나나요? lock을 사용하면 사용할수록 싱글코어와 다를것이 없다고 생각되서요 Web에서 종종 다루는 비동기적 처리를 하기 위해서 스레드를 사용하는건가요?
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
TCP/IP UDP 용어질문
안녕하세요 김영한님. 용어가 햇갈려 질문드립니다. TCP/IP는 IP 프로토콜을 이용하는 TCP 프로토콜을 뜻하는 것으로 아는데, UDP도 IP 프로토콜을 사용하는 것 아닌가요? 그런데 UDP/IP 라는 말은 들어본적이 없는 것 같아서 질문드립니다. 감사합니다.
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
안녕하세요! 영한님! 질문 하나 드려도 될까요?
안녕하세요 영한님! 인프런과 타사 플랫폼으로도 강의를 잘 보고 있습니다. 추운 날씨에 감기 조심시고 고생 너무 많습니다! 다름 아니라 쿠키 Secure과 HttpOnly 설명을 들었습니다 Secure는 Https일때만 쿠키를 세팅해주고 HttpOnly는 XSS를 방지해주고 자바스크립트에서 쿠키를 세팅 못하고 HTTP 전송에만 사용하신다고 하셨는데, 이 때 HTTP전송이란 Http/Https의 구분이 아닌 Http 프로토콜을 이용한 전송을 말씀하시는 건가요? Https일때만 쿠키를 세팅하고(Secure 활용), XSS 방지를 같이 하고 싶을땐(HttpOnly 활용) 이렇게 세팅하면 되는건가 싶어서 여쭤봅니다!
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
304 와 캐시
304를 받으면 데이터를 새로 다운받지 않고 원래의 것을 그대로 사용한다고 하셨는데요. 캐시가 소멸됐기 때문에 캐시의 star.jpg를 사용할 수 없는 건데 어떻게 새로 다운받지 않고 star.jpg를 사용할 수 있는 것인지 이해가 잘 안 됩니다.
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
DELETE 메소드의 코드 설계
강의 잘 듣고 있습니다. 좋은 강의 감사합니다. 강의 주제를 벗어난다고 생각하지만 질문이 있습니다. 예시를 드신 것처럼 DELETE method 를 호출해서 파일을 삭제한다고 했을 때, 두번째 호출의 응답을 어떻게 하는 것이 코드 레벨에서 좋은 설계인지 궁금합니다. 가정 클라이언트에서 파일 삭제를 요청, 서버에서 성공했으나 정상 응답을 주지 못함 클라이언트는 정상 응답을 받지 못했으니 재요청을 함 위 가정에서 서버는 재요청으로 인해 존재하지 않는 파일을 삭제하라는 요청을 받은 상황이 되는데요 제가 생각하는 방식은 2가지가 있습니다. 1. 없는 파일을 삭제하라고 하는 요청이니 '파일이 존재하지 않습니다.' 같은 오류 메시지와 함께 오류 코드를 응답 ```java File file = fileRepository.find(File.class, id); if (!file.isExist()) { return FileNotExistException("파일이 존재하지 않습니다."); } ``` 2. 사용자의 요청은 파일을 삭제하는 것이다. 파일의 존재 유무가 어떻든 요청에 성공한 상태이니 성공했다고 응답 ```java File file = fileRepository.find(File.class, id); if (!file.isExist()) { return true; } ``` 저는 둘 다 일리가 있지만 1번 방식이 더 좋은 방식이라고 생각하는 편입니다. 재요청을 받았을 때 실제로는 파일을 삭제하지 않았으면서 사용자에게는 삭제했다고 응답을 주는 게 맞지 않다고 생각해서요. 그런데 이렇게 생각하던 당시 제 머리 속에는 '멱등' 에 대한 개념을 고려하지 않은 상태였었습니다. 개념은 알고 있었지만 평소에 신경 써서 고려하던 것은 아니었거든요. 더 정확하게는 민망하지만 잊고 있던 내용이었습니다. ㅎㅎ 오늘 이렇게 강의를 들으면서 다시 한번 궁금해지는 내용이라 질문을 남깁니다. 서비스에 따라 정답이 없는 영역이라는 생각도 듭니다. 그렇다면 좀 더 '정설'에 가까운 쪽이나 사례, 선생님의 견해가 궁금합니다!
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
HTTP Form 과 HTTP API 질문입니다.
QnA를 읽다가 이런 답변을 봤습니다."HTTP API는 HTTP를 사용해서 서로 정해둔 스펙으로 데이터를 주고 받으며 통신하는 것으로 이해하시면 됩니다." 여기서 질문입니다. 1. 위 말씀대로라면 HTTP Form 도 HTTP API의 일종 같은데, 맞나요? 2. HTTP Form과 HTTP API를 강좌에서는 아예 따로 설명하는데, 둘을 나누는 기준이 뭔가요?
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
영구 리다이렉트와 일시 리다이렉트
안녕하세요 강사님, 질문 드리겠습니다. 영구 리다이렉트와 일시 리다이렉트의 차이점을 모르겠습니다. 물론 강의에서 말씀하신대로 영구는 앞으로도 쭉 리다이렉트 해야하고 일시는 그러지 말아야 할 수도 있는 상황에 사용한다고 하지만.. 어쨌든 영구든 일시든 3xx로 보내면 리다이렉트 된다는 결과는 둘 다 똑같지 않나요? 그냥 의미적으로만 구분하기 위해 나눠서 사용하는 것인지, 아니면 사용 측면에 있어서 다른 차이점이 있는지 궁금합니다. 감사합니다.
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
TCP/IP 패킷 정보 부분에서 질문이 있습니다.
서버의 응답을 클라이언트가 받는 과정에서 질문이 있습니다. 클라이언트는 요청을 할 때 출발지 IP, 목적지 IP 와 기타 정보를 IP 패킷에 넣어서 하고, 서버는 응답 시 출발지 IP 와 목적지 IP 를 반대로 해서 한다고 이해했습니다. 큰 틀에서는 이해했습니다만 IP와 관련해서 의문이 있습니다. 대부분의 서버는 공인 IP를 사용할테니 찾아가는데 문제가 없을 것이라 생각합니다. 문제는 클라이언트인데 일반적인 인터넷 사용자는 통신사에서 할당한 공인 IP 에 내부 IP 를 받아 사용할텐데요. 목적지 IP를 찾아오는 방식이 궁금합니다. 클라이언트가 요청할 때 출발지 IP 정보에 내부 IP 와 공인 IP, mac address 를 다 넣어서 요청을 하는건가요? 아니면 다른 방식이 있는건가요?
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
POST 사용 예시 질문
강사님 안녕하세요:) 강의 내용 중 POST 예시에서 "기존 자료에 데이터 추가 ex) 한 문서 끝에 내용 추가하기" 에서 궁금한 점이 생겨 질문드립니다. 위 경우 저는 PATCH 나 PUT을 사용해서 /contents/{id} 이런식으로 기존 내용에 추가해야 할 것이라고 생각했는데, 왜 POST를 사용하는지 궁금합니다. 또한, POST를 사용할 경우 http body에 기존 문서의 id를 넣어서 전송해야 되는 것 맞나요? 그리고 뒤에 HTTP API 설계 예시 강의 "HTTP API -컬렉션 회원관리 시스템" 부분에서 PATCH와 PUT을 사용하기 애매한 경우에는 POST를 사용하여 수정하라고 하셨는데, 어떤 경우가 애매한지 궁금합니다("기존 자료에 데이터 추가"가 그 애매한 경우인가요..?). 쓰다보니 질문이 많아졌네요,,ㅜ 강의를 들으면서 많이 배우고 있습니다. 정말 감사합니다!!
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
API 질문
안녕하세요 강사님, 질문 드리겠습니다. 클라이언트가 서버에게 요청할 uri를 설계하는 것이 API 설계로 표현되었다면, 백엔드 개발자가 개발하게되는 모든 백엔드 로직들을 API라고 보면 되는 건가요? 지금까지 제게 있어 API는 그냥 남이 만들어놓은 것을 가져다 편리하게 쓸 수 있는 도구(ex 구글맵 API) 정도였는데요. 백엔드 개발자가 개발하는 서버 프로그램들도 API의 범주에 포함되는 것인가요? 감사합니다.
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
PDF 강의자료
안녕하세요 영한님 모든 강의 잘 듣고 있는 수강생입니다! 다름이 아니라 이번에 HTTP 강의를 수강하기 시작하면서 PDF파일이 350이 넘는 방대한 양을 가지는 것을 알게되었습니다. 수강생 개개인 마다 학습 스타일이 다르다고 생각하지만 복습 하는 과정에서 제가 원하는 내용이 pdf의 몇 페이지에 있는지 찾는데 어려움을 느끼고 있습니다. 제가 기억하기로는 Spring jpa강의에서는 코드 중심의 교육 자료가 아닌 정보전달 위주로 준비하셨기에 챕터마다 구분된 PPT로 제공해주셨고 data jpa에서는 코드가 중요한 부분을 차지하고 있기 때문에 한 개의 pdf파일로 구성되었다고 생각합니다. 따라서 혹시 강의 자료를 PPT로 제공해주셔도 되고, 아니면 Spring jpa처럼 챕터를 구분하여 강의자료를 올려주실수 있는지 질문드립니다. 사실 data jpa 실전편 강의들을 때도 강의 자료가 하나의 pdf로 되어있어서 복습하고 싶은 부분이나, 까먹었던 부분 바로바로 찾아보기에 힘듦도 있습니다 ㅠㅠ 마지막으로 강의마다 강의자료의 기본 페이지 크기가 차이가 많이 나는듯 합니다. 요즘 pdf나 ppt를 노트앱에 저장해놓고 팬슬이나 키보드 사용해서 강의 내용을 받아 적으면서 공부하는데 기본 페이지 크기가 들쭉날쭉해서 강의 들을 때 마다 자료의 크기에 맞게 환경을 조정하니 자연스레 강의에 몰입하는데 시간이 좀 걸리는거 같아요 ㅠㅠ 혹시 기본 페이지 크기를 완벽하게 맞추지는 못하더라도 어느정도 균일하게 만들어서 제공해주시면 어떤지 생각합니다ㅠㅠ 두서가 상당히 없지만 항상 강의 잘 듣고 있습니다!
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
IP 4계층 질문
안녕하세요, 질문 드리겠습니다. 웹 통신에서는 강의에서 설명하시는 IP 4계층을 통해서만 통신이 이뤄지나요? 흔히 알려져있는 OSI 7계층과 완전히 개별적인 것인지 궁금합니다. 감사합니다.
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
모바일에서 flow
안녕하세요 김영한님. 강의를 듣다가, 문득 모바일의 경우에는 flow가 어떻게 되는지 궁금해져서 질문남깁니다. 인터넷에서 통신은 결국 IP와 Port번호를 알아야 data를 전송할 수 있는 것으로 이해하고 있습니다. 그런데, 모바일은 IP가 계속 바뀌고 Port번호를 따로 설정하지 않아도 카톡 메시지를 서버로 부터 수신할 수 있습니다. 검색을 통해, FCM이나 APNs과 같은 Push 서버를 이용해서 보낸다는 개념은 이해하였습니다만, 이 Push 서버들이 어떻게 바뀌는 모바일의 IP를 알아내는 건지, port 포워딩?은 어떻게 해결하는지 궁금합니다. 바쁘시겠지만, 답변남겨주시면 정말 감사하겠습니다.
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
Persistent Connection 질문입니다.
안녕하세요 김영한님. Persistent Connection 질문입니다. 제가 간단한 웹 프로젝트를 운영하고 있는데, 자동으로 Persistent Connection가 적용된 것처럼 보입니다. 원래 따로 설정을 해주어야 적용이 되는 건지, g유니콘이나 그런 앱에서 알아서 처리를 해주는 건지, HTTP 자체적으로 기본설정이 되어 있는 건지, 궁금합니다!
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
질문있습니다!
안녕하세요. 좋은 강의를 보고 패킷모아 보내기를 테스트 해보고 있습니다. 강의와 같이 ServerSession을 500개 만들어서 테스트를 해보면 500개 까지 Connect가 안되고 400좀 넘어서 끝나버리는데(실행할때마다 달라요) 이게 피씨 사양과도 관련이 있나요? 아님 다른 이유가 있을까요? (선생님 파일을 받아서 실행해봐도 비슷해서요)
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
cache-control: no-store 메모리 질문
캐시 컨트롤 지시어가 no-store일때, 메모리에서 사용하고 최대한 빨리 삭제하라고 되어있는데, 저 메모리는 어디인가요? 보통, 캐시는 웹 브라우저상에 있는 저장공간에 저장되는거로 알고있는데, no-store일때 저장되는 메모리공간은 다른곳인가요?
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
cache 메타 데이터 갱신
클라에서 서버로 요청 할 경우, 1. header에 cache-control의 max-age의 시간은 이미 만료 2. last modified date의 시점이 아직 변경되지 않은 시점일 때 서버에서 클라이언트로 보내주는 header 정보에 cache meta 데이터는 어떤 식으로 갱신이 되는건가요?
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
웹 서버 포트에 대해서 ...
웹 서버, 즉 http는 80번 포트로 연결된다고 알고있는데, 스프링 부트에서 동작하는 톰캣은 왜 8080번 포트로 연결되는 것이 기본값 인가요?