[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 커맨드 패턴 개념 설명을 어떤 강의에서 진행하셨을까요? 바로 커맨드 패턴 적용으로 들어가는 것 같습니다!
제가 패킷 캡처 프로그래밍을 하던 중 실제로 프로그래밍을 하는 부분인 packet_handler()함수에서 실제로 캡쳐가 된 패킷을 저장하는 변수인 const u_char* pkt_data <- 이 부분이 왜 포인터 변수로 선언이 되어있는지 궁금합니다 알려주시면 감사드리겠습니다~~
안녕하세요. 널널한 개발자님! 강의 중 궁금증이 생겨 질문 작성합니다. NAT를 기점으로 NAT의 테이블을 활용함에 따라 통신과정이 달라지는데요. 저의 궁금증은 "NAT 설정의 주체는 누구인가?" 입니다. 이러한 질문을 생각한 배경은 Host를 사용하는 유저가 P2P 통신이 필요한 프로그램을 사용할 것인지. 사용하지 않을 것인지는 예측할 수 없다고 생각했습니다. 이에 따라, 만약 "유저가 P2P 통신을 하는 프로그램을 사용한다"면 NAT의 Full Cone을 사용해야할 것이고, "유저가 단편적인 Google 검색을 한다면" Symentric NAT 방식을 채택하게 될 것 같습니다. 그렇다면, NAT의 통신방식을 결정하는건 누가하게 되는건가요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문 전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 로그가 너무 안이쁘게 출력되는데 이거 어떻게 할 수 있을까요?.
void RegisterSend() { if (_disconnected == 1) return; while (_sendQueue.Count > 0) { ArraySegment<byte> buff = _sendQueue.Dequeue(); _pendingList.Add(buff); } _sendArgs.BufferList = _pendingList; try { bool pending = _socket.SendAsync(_sendArgs); if (pending == false) OnSendCompleted(null, _sendArgs); } catch (Exception e) { Console.WriteLine($"RegisterSend Failed {e}"); } } void OnSendCompleted(object sender, SocketAsyncEventArgs args) { lock (_lock) { if (args.BytesTransferred > 0 && args.SocketError == SocketError.Success) { try { _sendArgs.BufferList = null; _pendingList.Clear(); OnSend(_sendArgs.BytesTransferred); if (_sendQueue.Count > 0) RegisterSend(); } catch (Exception e) { Console.WriteLine($"OnSendCompleted Failed {e}"); } } else { Disconnect(); } } } 해당 코드에 대한 질문이 있습니다. RegisterSend에서 sendQueue에 있는 패킷들을 다 빼내서 pendingList에 넣고 pendingList를 args.BuffList로 설정합니다. 이후 OnSendComplete에 처리에 의문이 있습니다. TCP 특성상 부분 전송이 이루어질 수 있다고 생각합니다. 부분 전송이 일어날 경우 확인을 안하고 pendingList.Clear해버리면 send패킷이 유실될 것 같습니다. BufferList에 넣으면 SendAsync시에 c#에서 무조건 전송을 보장해주는건가요? 아니면 BufferList를 사용하지 말고 recv버퍼처럼 해야할 것 같다는 생각이 들어 질문합니다. 또한 BufferList에서 부분전송 체크할 방법이 있나요?
다른 분들 질문 읽어보았는데도 헷갈리네요. port 강의에서 port는 같은 ip내에서 프로세스를 구분하는 것이라고 설명하셨습니다. 예를들어 200:200:200.2: 10 200:200:200.2: 20 200:200:200.2: 30 이렇게 같은 ip로 10번,20번,30번 포트로 나뉘어 있다면 모두 다른 프로세스? 어플리케이션? 이겠지요. 여기에 이번 강의 내용을 더해 200:200:200.2: 10 ip의 서버 안에 aaa.com , bbb.com, ccc.com 로 각기 다른 어플리케이션으로 구동되어있다고 하겠습니다. (사실 강의에는 포트 언급 내용이 없어서 하나의 포트안에 다른 도메인으로 구동가능한건지 모두 다른 포트로 구동한건지는 절 모르겠으나 하나의 포트안에 다른 도메인(어플리케이션)이 구동중이라고 가정하겟습니다.) 그리고 10번포트의 aaa.com을 찾는다고 하겠습니다. 이제 클라이언트 측에서 데이터를 전송했을떄 먼저 200:200:200.2 ip중에서 실행중인 10번 포트를 먼저 찾고 선택한 후 이중에서 다시 host명으로 aaa.com 을 선택하는 방식인건가요? 많이 헷갈려서 질문조차도 혼란스러운데 답변해주시면 감사하겠습니다.
EC2에 역할을 부여할 때는 리소스에 역할을 연결하는 방식이였다면 사용자에게 역할을 부여할 때는 STS를 이용한 역할에 접근 정책을 만든 후 그 정책을 사용자에게 연결하는 방식이였는데 이건 사용자와 역할을 연결하는게 아닌 역할과 정책을 연결하는 느낌이여서 1. 원래 사용자와 역할 연결 시에는 중간에 정책이 필요한건가요? 2. ec2같은 리소스에는sts관련 정책이 필요없나요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 두가지 질문 있습니다. 1. 강의 시작에 tcp/ip 연결같은 경우에는 기본적으로 연결을 유지한다고 하셨고 연결 유지하는 모델을 설명하셨는데요. 곧바로 뒤에 나오는 연결을 유지하지 않는 모델도 tcp/ip 모델인건가요? 아니면 이건 그냥 연결을 유지하지 않는 어떤 모델을 예로 들어서 설명을 하시는건가요? 전자가 맞다면 tcp/ip는 연결을 유지/유지하지 않는 모델 둘다 가지고 있는건가요? 무엇을 사용할지는 때에 따라 다른거구요? 2. tcp/ip가 연결을 유지하는 모델이라면 강의 3:40초 부터 설명하시는 부분에서 다음 페이지로 넘어가거나 하면 tcp/ip 연결을 새로 맺어야한다고 하셨는데 tcp/ip가 연결을 유지하는 모델이라면 계속해서 연결을 유지하고 있어야하는 것아닌가요? 제가 어디를 잘못 이해하고 있을까요?
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 현재 스프링 완정정복 로드맵인 스프링 입문 - 스프링 핵심원리:기본편 - HTTP 웹 기본 지식(이번 강의) 까지 모두 들었는데요, 지금 현재 강의에서 말씀하시길 웹기본 지식 이후 다음 강의로 스프링부트와 JPA 실무 완전 정복 로드맵(야생형) 으로 넘어가고 이걸 다 듣고 다시 스프링 완전정복 로드맵으로 돌아와서 스프링 웹 MVC , 스프링 DB 접근 기술 등을 듣기를 추천하시던데요, 김영한 백엔드 개발자 자바 스프링 JPA 실무 로드맵 영한님이 올려주신 유튜브 로드맵 영상을 보면 순서가 조금 다른 HTTP 웹기본 지식 - MVC1 - MVC2 - DB 접근1 - DB접근2 까지 듣고 스프링부트와 JPA 실무 완전 정복 로드맵(야생형) 으로 넘어가서 듣고 다시 넘어와서 스프링부트 핵심원리와 활용 과 스프링 핵심원리 고급편 을 들으라고 하시던데요 어느 것으로 진행해야하나요?
void Lock::WriteLock() 부분에서 제가 실수로 expected = EMPTY_FLAG; 이 부분을 while(true) 밖에 선언했습니다. CAS과정에서 expected가 갱신되는 것을 깜빡하구요. 그럤더니, 당연히 크래시가 났는데 저는 expected가 다른 ReadLock이나 WrtieLock으로 잘못된 값으로 갱신되면 EMPTY_FLAG랑 비교하는 CAS과정을 통과할 수 없게 되어 yield를 반복하다가 TIME_OUT 크래시가 날줄 알았습니다. 그런데 ReadUnlock쪽에서 Multiple Unlock 크래시가 뜨더군요. 행여나 쌍을 맞춰주지 않았을까, 코드까지 다운로드해서 비교헀더니 딱 저 부분만 수정하니 잘 동작해서 왜 Multiple Unlock이 나타나는지 의문입니다. 아무래도 RAII 객체의 LockGuard부분에서 소멸자를 호출하는과정에서 Multiple_Unlock이 뜨는 것 같은데, TIMEOUT -> 스택 풀기 과정에서 (소멸자 호출)로 Multiple_Unlock이 뜨기에는 10초의 시간이 있음에도 실행하자마자 바로 크래시가 나서, 어느 부분에서 ReadUnlock까지 가는지를 모르겠습니다. 아무리 생각해도 READ_LOCK에서 lock을 잡지 못하면, Unlock까지 도달할 일이 없지 않나요? 디버깅을 찍어봐도 어디서 Unlock에 도달하지는지 모르겠습니다 디버깅 정보 올립니다. 혹시 이럴때 CRASH를 낸 주체를 정확히 모르겠으면 어떤식으로 디버깅 하면서 풀어나가면 좋을까요? ChatGPT는 어디가 어떻게 에러를 내는지 명쾌한 해답을 못주네요
학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 안녕하세요. 강의 너무 도움되고 있습니다. 이번 강의부터 캐시에 관한 내용이라 듣기 시작했는데 캐시가 무엇이고 같은 용어적 설명 없이 바로 캐시 동작을 설명하시는데요. 바로 캐시가 있을때 없을때~ 같이 동작을 설명하셔서 캐시가 뭐지? 하면서 그냥 대충 설명하시는 내용으로 추측만하면서 강의를 봤는데 뒤의 남은 강의들에서 캐시에 대한 개념을 설명하시나요?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 예 [질문 내용] 복습 중에 질문이 생겼습니다 콘솔 입력 / DataInputStream의 readUTF는 입력을 받은 데이터로 호출한 쓰레드에서 작업을 수행하기 때문에 블로킹 메서드 인 것이 이해가 쉽게 됩니다. 반면 DataOutputStream 의 writeUTF() 메서드는 반환 타입도 void이고(호출한 쓰레드에서 뭘 처리하지 않음), 서버에 메세지를 보내기만 하면 되기 때문에 블로킹 메서드가 아니라고 생각했는데, 막상 검색해보니 블로킹 메서드라고 나와서 이해가 잘 안됩니다. 블로킹 메서드가 맞는 걸까요? 맞다면 왜 블로킹 메서드로 설계된 걸까요