학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 갑자기 드는 생각인데 팀프로젝트나 기타 협업을 위해 깃허브 같은 사이트에 프로젝트를 올리게 될 경우 서버 주소와 데이터베이스 주소가 노출 될 수 있는데 해당 경우에는 어떻게 URL 데이터를 숨겨서? 올리는 방법은 무엇이 있을까요?
_listenSocket = new Socket(endPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp); _onAcceptHandler += onAcceptHandler; _listenSocket.Bind(endPoint); _listenSocket.Listen(10) 위 코드에서 new Socket() 한 뒤에 _onAcceptHandler += onAcceptHandler ; 로 핸들러를 추가 했는데, 아래 코드처럼 Listen() 뒤에 추가 해도 문제 없을까요? _listenSocket = new Socket(endPoint.AddressFamily, SocketType.Stream, ProtocolType.Tcp); _listenSocket.Bind(endPoint); _listenSocket.Listen(10); _onAcceptHandler += onAcceptHandler;
안녕하세요 교수님 part 1, part 2를 모두 수강하고 너무 도움이 많이 되어 part 3까지 듣고 있는 클라이언트 지망생입니다~ 강의를 들으니, 처음 게임을 개발 할 때, 서버를 염두해 두지 않고 개발을 하면 이후에 코드를 수정하는데 많은 시간이 걸리는 것을 이해를 했습니다. 그렇다면 리슨서버로 개발을 진행하고, 이후에 데디케이트 서버로 변경을 하려고 하면 이 또한 많은 코드 수정이 필요한가요? 정확히 궁금한 것은, 언리얼에 리슨서버와 데디케이트 서버의 호환성이 높은지 아니면 완전히 다른 코드를 사용해서 구현해야 하는 것인지 입니다~~
더미클라와 서버 의 Program.cs에서 byte가 arraysegment 부분으로 변환되는게 생략되었습니다. 어려운 작업은 아니지만, 뒤에 듣는사람 참고하라고 올립니다. 아닌가.. 내가 잘못한 부분이 있었네 public override void OnConnected(EndPoint endPoint) { Console.WriteLine($"OnConnected bytes : {endPoint}"); byte[] tempBuff = Encoding.UTF8.GetBytes("Welcome to MMORPG Server!"); ArraySegment<byte> sendBuff = new ArraySegment<byte>(tempBuff); Send(sendBuff); Thread.Sleep(1000); Disconnect(); } public override void OnConnected(EndPoint endPoint) { Console.WriteLine($"OnConnected bytes : {endPoint}"); //데이터를 보낸다 for (int i = 0; i < 5; i++) { byte[] tempBuff = Encoding.UTF8.GetBytes($"Hello World {i}"); ArraySegment<byte> sendBuff = new ArraySegment<byte>(tempBuff); Send(sendBuff); } }
멀티스레드 병렬 프로그래밍은 싱글 스레드와 다르게 디버깅하기가 매우 까다롭더라구요 ㅠㅠ I/O 출력을 하거나 로그 파일로 따로 빼서 로깅을 확인하는건 싱글스레드까지만 가능하고 멀티스레드에서는 별 도움이 되지 못하더라구요 이 외에 다른 방법으로는 디버깅 모드로 실행 시 문제가 발생했을 때, memory를 확인하면서 역추적하면서 문제를 해결하는 방법밖에 떠오르질 않는데, 이 방법이 맞을까요? 예를 들면 여러 스레드를 실행하면서 call 횟수, 작업하는 변수의 주소값, 수행 시간 등을 list에 저장한 다음에 조사식에 해당 list를 끌어와서 확인해보려고 하는데... 현업에서는 멀티스레드 로깅 및 문제 역추적할 때 어떤 방법을 사용하나요..?
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) : 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 여기에 질문 내용을 남겨주세요. 안녕하세요, 정적 데이터 조회와 동적 데이터 조회를 써야하는 경우가 정확하게 구별되지 않아서 질문 남깁니다. 강의에서 정적 파일을 받는 경우 uri에 자원을 명시하고. 동적으로 조회하는 경우에 쿼리파라미터를 사용하는데요. 정적 파일을 받는 경우에도 쿼리파라미터를 사용해도 될 거 같은데, 사용하지 않는 이유가 어떤걸까요? 예를 들어 정적 파일의 경우는 응답 받은 서버에 이미 저장되어 있는 파일을 반환하고, 동적으로 조회하는 것은 db에 저장된 내용을 불러오는 차이가 있을 것도 같은데요. 요약하자면, 정적 데이터 조회이던 동적 데이터 조회이던 쿼리 파라미터를 사용하도록 해도 될 거 같은데 왜 분리가 되는건지 궁금합니다.
안녕하세요? 게이트웨이 개념을 익히고 NAT 게이트웨이도 알게 되었는데요 두 개의 개념이 혼동이 옵니다.. 게이트웨이는 통상적인 역할을 하는 큰 개념이고, NAT 게이트웨이는 그중에 복수의 호스트(ex.인터넷 공유기)를 대상으로 NAT 기술을 사용한 게이트웨이로 이해하면 될까요?
[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
윈도우api 메인 루프 부분에서 프레임 제한을 위해 적은 코드의 원리를 모르겠습니다. uint64 prevTick = 0; uint64 now = ::GetTickCount64(); if(now - prevTick >= 10) // 요부분! { // TODO prevTick = now; } sumTick 을 만들어서 특정 시간이 되면 if 문으로 들어가는 것도 아니고 현재틱-이전틱 이 일정값 이상으로 조건을 걸어주는게 어떻게 프레임을 제한하는지 궁금합니다.
풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, 배포까지) [풀스택 Part3]
안녕하세요 선생님. docker 주요 명령 익히기6(컨테이너 다루는 다양한 옵션) 8분:25초 에서 해당 이미지를 제하려고하면 하기와 같은 오류가 뜨면서 삭제가 안되는데, 조치할수있는 사항이 있을까요?.. ubuntu@ip-172-31-38-226:~/2021_DEV_HTML$ docker system df TYPE TOTAL ACTIVE SIZE RECLAIMABLE Images 4 4 305.5MB 0B (0%) Containers 11 1 28B 26B (92%) Local Volumes 0 0 0B 0B Build Cache 0 0 0B 0B ubuntu@ip-172-31-38-226:~/2021_DEV_HTML$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE ubuntu latest b6548eacb063 12 days ago 77.8MB httpd alpine 489db2792d7f 13 days ago 59.3MB httpd latest a6ca7b52a415 3 weeks ago 168MB hello-world latest 9c7a54a9a43c 7 months ago 13.3kB ubuntu@ip-172-31-38-226:~/2021_DEV_HTML$ docker rmi httpd:latest Error response from daemon: conflict: unable to remove repository reference "httpd:latest" (must force) - container 919738d198d7 is using its referenced image a6ca7b52a415 ubuntu@ip-172-31-38-226:~/2021_DEV_HTML$ 감사합니다..
안녕하세요, 회사에서 화이트리스트에서 특정 웹 사이트를 추가해야해서 IP로 화이트리스트에 추가해야한다고 했을 때, 로드밸런서나 어떤 방법(컨테이너 서비스 등)으로 상대방의 웹 사이트에 접속할 때마다 IP가 바뀌어 화이트 리스트가 제대로 작동하지 않는 경우는 어떻게 해야 하나요? 일일이 생기는 IP를 모두 화이트리스트에 등록을 해야하는지요? 고맙습니다.
[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
포인터에 대한 강의를 듣고 포인터에 대한 공부를 하던 도중 이해가 되지 않는 부분이 있어 질문드립니다. Shape** shapes; shpaes = new Shape* [100]; shapes[0] = new Circle(); // shapes[1] = new Triangle(); shapes[2] = new Triangle(); ... // shapes[1]을 지우고 포인터 shapes[2]번을 shapes[1]번으로 옮길때 저는 현재 힙 영역의 메모리 구조를 이렇게 생각하였고 포인터는 어쩌피 주소를 닮는 공간이니 delete shapes[1];로 도형을 지우고 shapes[1] = shapes[2]로 하고 shapes[2] = nullptr로 하여 이런식으로 진행하면 문제가 없다고 생각했습니다. 그런데 프로그램을 종료할때 delete[] shapes를 진행하는 부분에서 Heap Corruption Detected( 메모리에 대한 잘못된 접근이나 이미 해제한 메모리에 대한 접근 ) 오류가 나오게 됩니다. 그래서 생각되는 문제가 shapes[1] = shapes[2]로 바로 옮기면 되는 것이 아니라 옮기기 전에 shapes[1]에도 shapes[2] 만큼의 크기를 만들어 주고 shapes[1] = shapes[2]로 옮겨야 되는 것인가 라고 생각하여 코드를 shapes[1] = new Circle(); // shapes[2]에 저장된 도형을 만들고 *shapes[1] = * shapes[2] // 값을 복사하고 delete shapes[2]; // shapes[2]를 지우고 shapes[2] = nullptr; // nullptr로 가리키고 있는 곳을 풀어준다. 이렇게 코드를 수정하니 delete[] shapes; Heap Corruption Detected에 대한 메모리 오류가 사라졌습니다. 여기서 드는 궁금한 점이 포인터는 주소를 담는 바구니(8바이트)인데 왜 shapes[1] = shapes[2]로 가르키는 곳만 바꾸는 것으로 Heap Corruption Detected의 오류가 나며 동작이 안되는지 궁금합니다.
[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예) [질문 내용] 안녕하세요. "비연결성" 강의를 보던 중 궁금한 것이 생겨 질문을 올립니다. 순간적으로 몰리는 이벤트를 위해 설계를 다음과 같이 구성하기도 하는지 궁금합니다. 특별 이벤트 페이지를 운영할 때, 짧은 시간 동안 유저들이 몰려 트래픽이 급증하는 경우가 많습니다. 예를 들어, 오후 6시부터 7시까지 1시간 동안 특별 이벤트가 진행된다면, 그 시간 동안 트래픽이 매우 높아질 것입니다. 이러한 상황에서 서버 증설을 고려하며 stateless한 서비스 구성이 중요한데, 이에 대한 다음과 같이 설계를 해보겠습니다. 예를 들어, '오후 6시부터 7시까지 1000명에 한해 20% 할인되는 콘서트 티켓 구매 이벤트'를 진행한다고 가정해보겠습니다. 이 경우, 유저가 이벤트에 참여한 후 즉시 결과를 알 필요는 없다고 생각합니다. 각 웹 애플리케이션 서버마다 독립된 DB를 두어, 이벤트 참여 여부만 해당 서버의 DB에 저장합니다. 그리고 오후 7시가 지난 후, 모든 서버의 DB에 있는 이벤트 관련 데이터를 한꺼번에 일관되게 처리합니다. 이때, 먼저 참여한 1000명을 선정한 후, 모든 참여자에게 이벤트 당첨 여부를 이메일이나 문자로 알립니다. 제가 볼때 이 구조는 마치 map-reduce 모델과 유사하고 단지 reduce 단계가 상대적으로 늦게 실행되는 구조입니다. 이러한 구조에 대해서 어떻게 생각하시나요? 또 이벤트를 위해 보편적으로 사용되는 아키텍쳐가 있을까요?
========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 예 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 예 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) 예 [질문 내용] 안녕하세요. 수업을 듣다가 PUT과 PATCH에서 리소스 판단 기준이 헷갈려서 질문드립니다. 만약 user 테이블이 있고 테이블에 컬럼이 user_id, user_name, user_pw, user_nickname 이 있습니다. 그리고 form 태그를 통해서 회원정보 수정을 하려고 할 때, user_pw와 user_nickname만 수정할 수 있게 두 컬럼에 대해서만 input 태그가 있습니다. input 태그에는 초기값으로 원래의 값이 들어가 있습니다. 이 때, 사용자가 둘 중에 어느 것을 바꾸든 form 태그에 있는 전체 데이터를 보낸다고 할 때(바꾸지 않은 값은 초기값으로 보내집니다), 리소스를 user_pw, user_nickname으로만 보고 두 정보를 다 교체하니 PUT으로 봐야할까요? 아니면 리소스를 user 테이블 전체로 보고 user 테이블 중에 두 컬럼만 바꾸니 PATCH로 하는 게 맞을까요??
안녕하세요, 선생님. L2관련 질문입니다. osi 7계층에서 data link(L2)를 구현한 Ethernet 프로토콜은 H/W를 통해 물리적으로 설명이 되는 네트워크라고 이해했습니다. 또, 선생님께서 L2는 보통 Driver와 NIC 펌웨어에 해당된다고 하셨는데요,(섹션0. 유저모드와 커널모드) 그럼 이더넷은 가상화를 통해 Virtual machine 형태로 구현이 된 것으로 볼 수 있나요?