묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, flask 배포) [풀스택 Part3]
pymsql 라이브러리 설치 어떻게 하셨나요?
주피터 노트북 서버 만들어보기 챕터 12분 06초 경에 느낌표와 pip install 을 하면 명령어를 바로 실행할수 있어서 바로 라이브러리 설치를 하셨는데요.엔터를 누르면 그냥 줄바꿈이 되는데 어떻게 설치하셨나요?
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
CSpinLock 코드 작성중 원리에 대해서 의문점이 들어 질문 드립니다.
void CSpinLock::lock(){ bool expected = false; bool desired = true; while (_locked.compare_exchange_strong(expected, desired) == false) { expected = false; }}SpinLock의 해당 코드에서 _locked의 값이 true일때, expected의 값이 초기에는 false임으로, 해당 반복문을 통과하지 못하고 기다립니다. 그런데 expected가 locked의 값인 true로 바뀌므로 이를 반복문 내에서 expected = false; 값으로 변경해주는데, expected의 값을 false로 변경해주기 전에 true인 locked의 값이 들어오면 아직 expected의 값은 변경되기 전이므로 SpinLock을 빠져 나올 수 있지 않을까요?코드를 실행해보니 SpinLock이 잘 실행되고 있는 것은 확인했지만, 머리속에서는 납득하지 못한 의문점이 멤돌아서 이렇게 질문 드립니다.
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
그림에 있는 웹서버가 무엇인가요??
그림에 있는 웹서버가 무엇인가요?? 요청을 사용자 컴에서 보내면 문서 + css파일 + js파일 다 받아온 후에 사용자 컴퓨터의 브라우저가 조립해서 표기를 해주는것으로 알고있습니다.제가 헷갈리는 부분은 웹서버에서 정적 파일 서빙이후파일 받으면 웹서버를 거쳐서 was를 갈 필요 없이바로 was로 갈 수 있을텐데 구조가 저렇게 되있으면 반드시 거쳐가야 하는것 아닌가? 하는 의문이 들었습니다. 물론 서비스를 제공하는 회사별로 다르겠지만 일반적으로 어떻게 되는 것인가요?
-
미해결풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, flask 배포) [풀스택 Part3]
[리눅스용 도커 설치] 편 4:20
[리눅스용 도커 설치] 편 4:20 쯤에서 질문있습니다.docker repository 등록할때 자료에 적혀있던 명령어 둘다 안되는데(1) 강의에 있는 명령어 실행시(2) 자료 아래 추가로 작성된 명령어 실행시어떻게 찾아야할지 모르겠어서... 어떻게 해야할까요?우분투는 20.04로 진행했습니다!
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
TryPop()함수 중 _head와 _tail이 같을 때 ReleaseRef()를 해야하나요?
강의 코드를 똑같이 따라하는 도중 TryPop()함수에서 무한 루프에 빠지는 것을 확인하였습니다.위의 이미지 중 주석처리 한 곳이 TryPop()중 무한 루프에 빠지게 하는 함수입니다._head와 _tail이 같을 경우 ReleaseRef()에 들어갑니다. 하지만 초기 internalCount는 0이고 unsigned입니다.때문에 저의 컴퓨터 환경기준 --를 진행할 시 '1073741823'으로 바뀌면서 무한에 가까운 루프에 빠지게 됩니다.위의 이미지 같이 주석처리 할 경우 강의의 예시처럼 잘 진행되는 것을 확인 하였습니다.혹시 저 부분을 주석처리 해도 되는지, 안된다면 위와 같은 상황에서 어느 부분을 수정해야 하는지 확인해 주실 수 있으실까요?
-
해결됨[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
GIocpCore에서 Dispatch할 때
iocpObject Dispatch할때 어떻게 자동으로 리스너 Dispatch로 들어가는건가요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
클라이언트 연동 강의
안녕하세요 루키스님 제가 c++ icop 멀티스레드 환경에서 서버를 제작하고 원래 언리얼로 클라이언트 만들어서 연동하려했는데 자료가 부족해서 유니티 강의를 참고하려고합니다.Part7 : MMORPG 컨텐츠 구현 (Unity + C# 서버 연동)Part9 : MMORPG 컨텐츠 구현 (DB 연동 + 대형 구조 관리 + 라이브 준비)두가지의 강의를 들어보려고하는데 유니티와 c#에 대한 지식이없어도 들을수있을까요?언리얼 연동에 도움이 되는강의가 더 있을까요?Part5 : 데이터베이스(SQL Server) 강의는 수강하려고합니다.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
소켓 프로그래밍 질문 있습니다!
msdn 문서도 찾아보면서 공부 중인데, 제가 이해한 게 맞나 확신이 안가서 질문 드립니다!서버가 계속 listen 상태이고 여러개의 클라이언트들이 연결을 하고 연결을 끊는 과정에서도 서버가 listen 상태를 계속 유지하게 하려면 accept() 함수를 while 문으로 반복적으로 받게 한다 (여러 클라이언트들의 연결을 수용하기 위함) accept() 함수로 백로그 큐에 있던 수신정보?연결대기정보?를 pop하여 새로운 소켓을 생성한다내부에 또다른 while 문으로 생성된 새로운 소켓을 활용해 송수신을 한다accept() 함수를 호출하는 while문 마지막 부분에 생성된 소켓을 close 한다.이렇게 하는게 맞을까요??제가 이렇게 코드를 짠 것 같은데, 서버를 실행시키고 한개의 클라이언트를 실행시켜서 송수신을 하다가 클라이언트를 종료시키면 서버도 같이 종료되는 것 같아서요...여러 클라이언트를 실행시켜도 처음 실행시킨 클라이언트만 송수신이 가능하더라구요 ㅠㅠ(제가 코드를 잘못 짠 걸수도 있습니다 ㅎㅎ;;)아래는 서버와 클라이언트의 주요 소스코드 부분입니다[Server]// 윈속 초기화와 socket(), bind(), listen() 함수 생략 while (1) { // accept() clntAddrSize = sizeof(clntAddr); clntSock = accept(listenSock, (SOCKADDR*)&clntAddr, &clntAddrSize); if (clntSock == INVALID_SOCKET) ErrorHandling(L"accept() error"); // 접속한 클라이언트 정보 출력 wprintf(L"\n[TCP 서버] 클라이언트 접속 : IP 주소 = %s, 포트 번호 = %d\n", inet_ntoa(clntAddr.sin_addr), ntohs(clntAddr.sin_port)); // 클라이언트와 데이터 통신 while (1) { recvLen = recv(clntSock, (char*)message, sizeof(message), 0); if (recvLen == SOCKET_ERROR) ErrorHandling(L"recv() error"); else if (recvLen == 0) break; // 받은 데이터 출력 message[recvLen / 2] = L'\0'; wprintf(L"[TCP/%s:%d] : %s\n", inet_ntoa(clntAddr.sin_addr), ntohs(clntAddr.sin_port), message); // 데이터 보내기 strLen = wcslen(message) * sizeof(wchar_t); if (send(clntSock, (char*)message, strLen, 0) == SOCKET_ERROR) ErrorHandling(L"send() error"); } closesocket(clntSock); wprintf(L"[TCP 서버] 클라이언트 종료 : IP 주소 = %s, 포트 번호 = %d\n", inet_ntoa(clntAddr.sin_addr), ntohs(clntAddr.sin_port)); } closesocket(listenSock); WSACleanup();[Client]// 윈속 초기화와 socket(), bind() 함수 생략 // connect() if (connect(hSocket, (SOCKADDR*)&servAddr, sizeof(servAddr)) == SOCKET_ERROR) ErrorHandling(L"connect() error"); else { printf("Connected...........\n"); } // 서버와 데이터 통신 while (1) { // 데이터 입력 wprintf(L"data input : "); if (fgetws(message, BUF_SIZE, stdin) == NULL) break; // '\n' 문자 제거 strLen = wcslen(message); if (message[strLen - 1] == L'\n') { message[strLen - 1] = L'\0'; strLen--; } if (wcscmp(message, L"q\n") == 0 || wcscmp(message, L"Q\n") == 0) break; //데이터 보내기 recvLen = 0; recvLen = send(hSocket, (char*)message, strLen * 2, 0); if (recvLen == SOCKET_ERROR) { ErrorHandling(L"send() error"); break; } printf("[TCP 클라이언트] %d 바이트를 보냈습니다.\n", strLen); while (recvLen < strLen * 2) { recvCnt = recv(hSocket, (char*)&message[recvLen / 2], BUF_SIZE - 1, 0); if (recvCnt == SOCKET_ERROR) { ErrorHandling(L"recv() error"); break; } else if (recvCnt == 0) break; recvLen += recvCnt; } message[strLen] = L'\0'; printf("[TCP 클라이언트 %d 바이트를 받았습니다.\n", strlen); } closesocket(hSocket); WSACleanup();
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
제공한 기출만 보고 시험봐도 괜찮을까요?
선생님이 제공해주신, 기출만 보고덤프에서 나오는 c03 문제는 안 보고 시험 보러 가도 될까요?
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
프로세스간 연결시에 질문
프로세스간 연결시 왜 ip를 통해서 가나요?(그러니까 소켓열어서 파일 입출력하는 이유가 무엇인가요)그냥 memory를 공유할 수 잇는 방법이 잇으면 더 빠를거같은데보조기억 장치 메모리를 공유할 수 잇는 방법이 어렵거나 불가해서 저렇게하는건가요?
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
tcp 관련하여 질문드립니다
안녕하세요 선생님^^tcp 관련하여 궁금한 점이 있습니다tcp는 왜 굳이 segmentation을 하나요? segmentation을 하지 않아도 ip에서 fragmentation이 일어나니까 딱히 안해도 상관없지 않나 싶은데요...2-way handshake는 아예 사용되지 않는 기법인가요?3-way handshake에서 한 클라이언트가 서버에게 다수의 syn을 보내게 되면, 서버는 이를 어떻게 처리하나요? 중복임을 인지하고 하나의 syn을 제외한 나머지는 모두 드랍하나요?궁금한건 많은데 글로 정리하는게 너무 어렵네요~~;;물론 답변해주시는 선생님도 마찬가지시겠지요~노고에 감사드립니다^^
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
서브넷 마스크에서 == 연산 질문
비트 연산이 === 보다 빠른지 아닌지 궁금합니다c언어 공부할때 비트연산이 더 빠른 것으로 기억하는데아무리 컴퓨터가 좋아져도 네트워크 빠르게 동작하려면 비트연산 사용하는게 좋지 않을까 하는 의문이 들어 질문 드립니다.
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
socket의 생성시점에 관하여
선생님! 안녕하세요.Server쪽 Socket의 생성 시점에 관하여 궁금한 점이 있습니다.질문)Server쪽 Socket은 무엇이 Trigger가 되어 Socket이 Create되고 Open되는지 궁금합니다.Client와 Server가 통신을 하기 위해선 우선 서로 Socket이 생성되어야 합니다.Client쪽에서 Process가 통신을 하기 위해 운영체제에게 요청하여 Socket을 생성(혹은 개방)한다는건 알겠습니다. 즉 Process의 요청이 Trigger가 되어 Socket이 생성이 되는거죠.그리고 Client에서 Socket이 만들어지면 Server로 요청이 가는데 이때 Server쪽 Socket이 Listen 즉 연결 대기 상태가 아니라면 Kernel의 TCP에서 연결을 받아줄 Socket이 없어서 응답을 못받아준다고 설명하셨습니다. 그럼 Server쪽에서는 Socket을 Create하고 Open되어 Listen 상태가 되어있어야 하는데 이는 무엇이 Trigger가 되어 만들어지는 건가요? 그니깐 Client에서 최초 요청을 보낼 때 Server는 이때 처음 Client에게서 요청이 온건데 그러면 당연히 Client와 통신할 사실을 모르고 있을거기 때문에 Process가 Socket을 생성해놓지 않았을거고 그러면 응답이 거부되는 상황밖에 안생기는데 이는 뭔가 아닌거 같아서요.Client에서 Server에 Socket을 만들어라는 뭔가 모르는 Trigger가 있는건가요? (나름 열심히 작성했는데 글 솜씨가 부족하여 제 질문의 의도를 파악하실지 모르겠습니다ㅠ)
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
[문의][SAP-C02 취득]추가 필요 학습 내용
강사님 덕분에 오늘 SAA 취득했습니다.. 감사합니다..^.^바로 SAP 취득 준비할려고 하는데, 강사님 강의 내용 대비 추가로 각 서비스별 어떤 내용을 더 심화 학습해야 하는지 혹시 가이드해 주실 수 있는지 문의 드립니다..그리고, SAA & ANS 외에 추가 강의 검토 중에 하셨는데, 혹시 구체화 된 사항 있으면 같이 답변 부탁 드립니다..
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
데드락 어떻게 해결할 지 궁금합니다.
안녕하세요. Rookiss 강사님.덕분에 강의 아주 감사히 잘 들어가며 배우고 있습니다.다름이 아니라, 강의 중, 데드락 프로파일러를 이용하여, lock 간 사이클 여부를 확인하여사전에 어느 정도 사전에 예방 가능하지만 그래도 다 막을 수는 없다고 하셨는데,막상 발견된다면 데드락을 해결하는 것은 어렵지 않다고 알려주셨습니다. 혹시, 데드락 프로파일러를 통해 발견되지 않을 경우,데드락이 발생했는지 어떻게 확인하고, 데드락이 발견되면 어떻게 해결하는 지 궁금합니다. 스스로 생각하기로는 스핀락의 경우, 데드락이 발생하게 되면 뺑뺑이를 계속 돌게 될테니CPU가 증가하는 모습으로 나타날 것으로 보이려나 싶네요 혹여나 강의 중에 설명 주셨는데, 재질문 드리는 거라면 정말 죄송합니다.항상 좋은 강의 감사합니다.
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
std::future에서 사용되는 쓰레드의 개수
std::future에서 비동기적으로 함수를 처리하기 위해서 사용하는 쓰레드는 미리 생성된 쓰레드를 통해서 처리하는 건가요?만약, 미리 생성된 쓰레드를 통해서 처리한다면 미리 생성된 쓰레드의 개수는 알 수 있나요? 그리고 해당 쓰레드의 개수도 수정할 수 있을까요?답변 부탁드립니다. 감사합니다.
-
미해결모든 개발자를 위한 HTTP 웹 기본 지식
실무에서 캐시 처리를 할 때 질문입니다.
안녕하세요 캐시 강의 듣다가 궁금한점이 생겨서 질문하게 되었습니다.https://www.inflearn.com/questions/112647/no-store-%EB%A1%9C%EB%8F%84-%EC%B6%A9%EB%B6%84%ED%95%A0-%EA%B2%83-%EA%B0%99%EC%9D%80%EB%8D%B0-no-cache-must-revalidate-%EB%8A%94-%EC%99%9C-%EA%B0%99%EC%9D%B4-%EC%B6%94%EA%B0%80%ED%95%98%EB%8A%94-%EA%B2%83%EC%9D%B8%EA%B0%80%EC%9A%94위 링크를 참고했는데요~캐시 기능에 대해 여러 클라이언트 환경을 지원하는 셋팅을 하려면 캐시를 사용할 대상 (정적 리소스)에 헤더에는 no-cache, must-revalidate, etag를 걸어주고, 캐시를 사용하지 않을 대상에는 no-cache, no-store, must-revalidate를 걸어줘도 성능상 단점이 없을까요? HTTP 헤더에 값을 넣으려면 여러가지 방법이 있는데 interceptor를 이용해도 성능상 단점이 없을까요?Thymeleaf에서 prefix, suffix 설정을 하여 viewResolver가 view를 찾으면 캐시된 값에 대해 304 응답코드를 반환하는 반면에, 설정하지 않으면 200 (디스크 캐시, 메모리 캐시) 응답코드가 반환됩니다.. 무슨 차이가 있는건가요?
-
해결됨자동차 SW - UDS 진단통신 정복하기
메세지 바이트가 8 바이트 초과시 전송 방법 문의
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 안녕하세요.서비스 ReadDTCInformation : DTC 기록 읽기 - SnapShot Data 수업 듣다가 데이터 크기가 8바이트 넘으면 CAN 또는 LIN은 전송을 어떻게 하는지 의문이 들어서 문의 드립니다.강의 내용 중 예를 들어Snapshot Record Num 이 많으면 뒤에 붙는다고 하셨는데 그럼 데이터 바이트 크기가 8 바이트 넘어 어떻게 전송이 되는걸까요?
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
실전문제풀이 02_7번 문제 정답 재확인
안녕하세요. 실전문제풀이 02_7번문제가 다음 ExamTopics 문제와 동일합니다..-. https://www.examtopics.com/discussions/amazon/view/94990-exam-aws-certified-solutions-architect-associate-saa-c03/그런데, ExamTopics에서 다음과 같이 D과 최다투표로 정답 표시되어 있습니다..강사님, 정답 재확인 부탁 드립니다. 미리 감사드립니다...D. 프런트엔드 계층과 애플리케이션 계층에 로드 밸런싱된 다중 AZ AWS Elastic Beanstalk 환경을 사용합니다. 데이터베이스를 Amazon RDS 다중 AZ DB 인스턴스로 이동합니다. Amazon S3를 사용하여 사용자 이미지를 저장하고 제공합니다. 최다 투표
-
해결됨외워서 끝내는 네트워크 핵심이론 - 기초
단편화에 관하여
선생님. 안녕하세요! 단편화 수업을 듣고 궁금점이 생겨 질문드립니다.질문1수업에서 단편화는 가급적 발생하지 않는게 좋다고 하셨습니다. 그 이유가 Packet 한 개 보낼걸 두 개로 보내면 네트워크 통신 비용이 더 나가기 때문이라고 봐도 될까요?질문2단편화를 발생시키지 않는 방법으로 처음부터 PC쪽에서 단편화를 발생시키는 Router의 MTU인 1400bytes로 보내는 방법을 말씀 해주셨습니다.예를 들어 PC쪽에서 보낼 데이터의 크기가 1500bytes이고 Router의 MTU는 1500bytes, 단편화를 발생시키는 Router의 MTU가 1400bytes라고 가정해보겠습니다. 방법1)그럼 위에서 말한 방법대로 1400bytes로 보내면 1400bytes -> 100bytes 이렇게 보내면 단편화는 일어나지 않지만 데이터를 두 번 보내야 합니다. 방법2)근데 PC에서 1500bytes로 보내면 단편화는 일어나겠지만 데이터는 한 번만 보내면 됩니다. 그럼 질문1에서 Packet을 단편화 시키는데 네트워크 비용이 증가하는게 맞다면 어떤 방법1과 방법2 중 어떤것을 선택하든 장점과 단점이 발생하는게 아닌가요?