묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
패킷직렬화 암호
간결하게 얘기하자면 패킷직렬화하고 클라나 서버로 보낼떄 패킷을 암호화처리를 하여서 보내야하는것으로 알고있는데 Protobuf에서 자체적으로 암호화처리를 하고 보내는건가요? 아니면 Protobuf와 별개로 암호화처리를 해줘야하는건가요?
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
MAX_NUMBER를 1'000'000까지 하면 답이 안나오는데 혹시 어떤게 문제인지 봐주실 수 있나요?
1,000번이나 100'000번까지 하면 바로 답이 나오는데 100만번으로 설정하면 계속 기다려도 감감무소식이라서 문제를 잘 모르겠습니다 ㅠㅠ. #include "pch.h" #include "CorePch.h" #include "CoreMacro.h" #include "ThreadManager.h" #include <iostream> // 소수 구하기 // 1과 자기 자신으로만 나뉘면 그것을 소수라고 함. Mutex m; bool CalculateRepeatToSelf(int32 selfNum) { int8 count = 0; for (int32 i = 2; i <= selfNum; i++) { if (count > 2) return false; if (selfNum % i == 0) { count++; } } if (count == 1) return true; return false; } int32 PreCalcuate(int32 order, int32 devision, int32 interval) { // 1, 10, 100'000 // 2, 10, 100'000 // 3, 10, 100'000 // ... // 10, 10, 100'000 int32 startNum = (order - 1) * interval + 1; int32 endNum = order * interval; int32 count = 0; for (int32 i = startNum; i <= endNum; i++) { if (CalculateRepeatToSelf(i)) count++; } return count; } int main() { const int MAX_NUMBER = 1'000'000; //const int MAX_NUMBER = 10'000; // 1229 //const int MAX_NUMBER = 1'000; // 168 // 1~MAX_NUMBER까지 소수 개수 // 멀티스레드로 병렬로 구해서 덧셈한다. /*for (int32 i = 1; i <= 20; i++) { if (CalculateRepeatToSelf(i)) count++; } cout << count << endl;*/ // ------------------------ vector<thread> threads; int32 devision = thread::hardware_concurrency(); int32 interval = MAX_NUMBER / devision + 1; atomic<int32> totalCount = 0; for (int32 i = 1; i <= devision; i++) { threads.push_back(thread([&totalCount, i, devision, interval](){ totalCount+= PreCalcuate(i, devision, interval); })); } for (thread& t : threads) { t.join(); } cout << "Total: " << totalCount.load() << endl; }
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
GetTickCount64() 의 정밀성
#include "pch.h" #include "CorePch.h" #include <iostream> #include <atomic> #include <thread> #include <mutex> #include <Windows.h> #include <future> int32 buffer[10'000][10'000]; int main() { memset(buffer, 0, sizeof(buffer)); // 배열을 전부 0값으로 초기화 //! [i][j] 순으로 더하기 { uint64 start = GetTickCount64(); //~ 시작 시간 측정 int64 sum = 0; for (int32 i = 0; i < 10'000; i++) for (int32 j = 0; j < 10'000; j++) sum += buffer[i][j]; uint64 end = GetTickCount64(); // ~ 종료 시간 측정 cout << "Elapsed Time [i][j] : " << (end - start) << endl; } //! [j][i] 순으로 더하기 { uint64 start = GetTickCount64(); //~ 시작 시간 측정 int64 sum = 0; for (int32 i = 0; i < 10'000; i++) for (int32 j = 0; j < 10'000; j++) sum += buffer[j][i]; uint64 end = GetTickCount64(); // ~ 종료 시간 측정 cout << "Elapsed Time [j][i] : " << (end - start) << endl; } }해당 코드를 7900 CPU 에서 테스트하는데, 경과시간이 둘 다 0,0 이 나오더군요.. 분명 그럴수가 없는데, CPU클럭이 너무 빨라서 gettick64() 의 정밀도로 측정이 불가능해서그런건가요? 분명 두번째 스코프에 있는 경과시간이 더 느리게 나와야 정상인데, 둘 다 틱이 0 0 이 나와서 당황스럽습니다
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
uses가 0이 될 때 객체 부분이 삭제가 어떻게 일어나나요?
make shared로 shared_ptr를 만들게 되면우리가 예제에서 만든 것처럼우리가 포인터로 가르키는 객체가 RefCountingBlock을 상속해서메모리에 할당 될 때 같이 된다는 이점있다고 이해했습니다Refcount_obj2(_Type&&... Args) : Ref_count_base를 예시를 드시며21:11 에서 설명 해주셨습니다 만약 uses가 0이 되고 weak는 아직 1일 때객체 부분은 구현에 따라 삭제 될 수도 있고RefCountingBlock은 남아있게 된다고 말씀해주셨는데RefCountingBlock을 상속해서 하나의 객체로 만들어진 상태에서객체의 부모(countringBlock)을 남긴채로 자식(객체부분)만 메모리 해제를 할 수 있는건가요? 아니면 이게 불가능 하기 때문에 그냥 구현에 따라 다른건가요?
-
미해결AWS Certified Cloud Practitioner 자격증 준비하기
실전6에 32번과 실전7에 27번
실전 6에 32번 고객책임 관련 정답 : D (서버 측 암호화 유지)실전 7에 27번 고객책임 관련 정답 : C ( 고객데이터 )7-27번 보기B 에도 서버측 암호화가 있는데 aws책임이라고 설명해주시는데, 헷갈리는데 부연 설명부탁드리겠습니다.
-
미해결AWS Certified Cloud Practitioner 자격증 준비하기
실전 7에 7번 문의
엔지니어 액세스 중 가장 싼 건 비즈니스 플랜 아닌가요 ? 개발자 플랜은 업무시간에만 가능한것 아닌지 문의 드립니다.
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
유니코드 특수문자 출력 관련
안녕하세요유니코드 특수문자를 출력시킬 때 일부 특수문자(Ballot Box with X)가 ?로 출력이 되고 있습니다레지스트리 편집기에서 chcp를 새로 설정해주기도 하고인코딩을 새롭게 해서(유니코드 65001) 저장도 하고문자 그림 대신 유니코드 번호를 적어도 봤지만('\u2612')여전히 해결되지 않고 있습니다다른 해결방법이 있을까요?
-
미해결ChatGPT 100% 활용하여 배우는 파이썬 네트워크 프로그래밍 A to Z
자료 공유
모든 질문은 언제나 환영합니다. 최대한 빨리 답변드리겠습니다.사실 대부분의 질문은, 자신이 질문을 정리하는 과정에서 해결되기 마련입니다.따라서 질문을 남기실 때, 자세하게 어디 부분이 이해가 되고 안되고를 자세히 말씀해주시면 감사하겠습니다.
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
수강 기한 연장드립니다.
안녕하세요.수강 기한이 한 달 남았는데, 수강 기한 연장이 가능할까요? 업무와 병행하다보니 강의 수강을 못했네요...연장해주시면 정말 감사하겠습니다 !
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
컨트롤uri
회원 등록 폼 조회: /member/new get에서 컨트롤 URI는 컨트롤러라고 교제에 되어 있는데,회원 등록 폼 조회: /member/new get는@getMapping("/new")통해서받게 됨으로 따라서 여기서 GET /edit도 컨트롤 uri 가 되는거 아닌가요?
-
미해결[게임 프로그래머 입문 올인원] C++ & 자료구조/알고리즘 & STL & 게임 수학 & Windows API & 게임 서버
궁금한게 있어요!
안녕하세요 해당 강의 보면서 Sprite와 Unity에서의 Atlas 관련해서 궁금한게 있습니다. BitBlt을 사용해서 Sprite 하나씩 그려주고 있어서 나중에 CPU, GPU에게 부담이 갈 수 있는 상황이라 가정하면 Unity에서의 Atlas처럼 한번에 묶어서 처리하도록 만들게 될텐데 여기서 궁금한게 Atlas라는게 여러개의 Sprite들을 다시 하나의 Texture로 만드는 과정일까요?그리고 이렇게 Atlas같은 기능을 활용하면 CPU, GPU에게 덜 부담을 주게 되는건 알겠는데 메모리 상으로는 여러 Sprite로 묶은 Texture를 만들어야하니까 메모리적으로는 불이익을 볼 수 있는걸까요?
-
해결됨이해하면 인생이 바뀌는 네트워크 프로그래밍
유해사이트 차단 프로젝트 관련 질문입니다.
안녕하세요, 먼저 양질의 강의를 만들어 네트워크를 이해할 수 있는 실습도 준비해주셔서 정말 감사드립니다.덕분에 정말 많은 인사이트를 얻어가는 듯 합니다.이렇게 질문을 드리는 이유는 다름이 아니라, 유해사이트 차단 프로젝트를 해보는 중에 rst 플래그를 이용한 위조 패킷을 날려 dns 질의에 대한 응답을 차단시키는 방향으로 프로젝트를 진행해 보고 싶어 그런 방향으로 진행하였습니다. 어찌저찌 dns response 보다 빠르게 rst 패킷을 날리는데에는 성공하였고, DOH(Dns Over Https) 프로토콜을 사용하는 웹페이지들은 추적자체가 불가능하여 TCP+HTTP 연결을 사용하여 DNS 응답을 주는 사이트로 테스트를 해보고 있습니다.문제는 RST 패킷이 제대로 인식은 됐는지 이후 ACK나 DNS 응답에 RST 패킷으로 DNS 서버에 응답을 주는데, 브라우저는 정상적으로 페이지를 로드를 한다는 것입니다. 제가 이해한 바로는 HTTP는 TCP 위에서 동작하는 것이니 연결이 종료된 포트로는 더이상 응답을 수신 안하고 무시해야 할 것 같은데.. 이해가 잘 되지 않습니다. 원인을 알 수 있을까요? 네트워크 스택이 달라 HTTP만 바라보는 브라우저 입장에선 TCP 스택인 RST 패킷이 오든 말든 상관 없는걸까요? Chat GPT는 브라우저에서 DNS를 처리하는 엔진에서 RST 패킷을 무시하는 로직이 있을 수 있다고 하는데 이것 때문일 지 궁금합니다.
-
해결됨모든 개발자를 위한 HTTP 웹 기본 지식
컨트롤 uri 가 궁금합니다.
html form애서회원 등록 폼 조회: /member/new get에서/new도 컨트롤 uri 이라고 할 수있지 않나요? 강의자료 5.http-method-use 에서는 왜 post의 /new 만 컨트롤 uri 라고 하는지 궁금합니다. 마찬가지로: 회원수정폼: /members/{id}/edit get에서도/edit 도 컨트롤 uri 이라고 할 수있지 않나요?
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
수강기간 연장 부탁드립니다
제가 저번주 토요일에 시험을 치뤘는데 아쉽게도 떨어졌습니다.좀더 기초를 다져야할거같아 수강연장가능한지 여쭈어요...
-
미해결[C++과 언리얼로 만드는 MMORPG 게임 개발 시리즈] Part4: 게임 서버
소수를 나열하는 방법에 대한 질문
안녕하세요 연습문제를 풀어보다가 궁금한 점이 생겨 질문 드립니다.atomic<int> primeCount에 thread들이 cnt++하는것 까지는 이해를 했습니다.궁금한 점은 vector나 배열에 구해진 소수를 push_back해서for(int i : vector) 하려면 CountPrime할때 writeLock을 잡아서 push_back을 해줘야 하나요?
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
실전문제9-Q20
방화벽 IP 주소를 줄여야 한다가 문제의 요지일까요?Global Accelerator 는 2개의 고정 IP 주소를 쓰니깐IP 주소를 적게 쓰면서 문제의 요구사항을 충족할 수 있다.이런식의 흐름으로 풀면되는 문제일까요?이해하기 쉽게 설명해주시면 감사하겠습니다!
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
실전문제9-Q11 질문
이와 같은 문제는 풀이가 어려워서요제가 풀이해주신 내용만 정리해봤는데 맞는지 확인 부탁드립니다.1) 기본 보안그룹의 경우인바운드, 포트 443 허용아웃바운드, 임시포트 허용2) 네트워크 ACL 의 경우인바운드, 포트 443 허용아웃바운드, 포트 443 허용이렇게 정리하는게 맞을까요?틀린 부분 있다면 알려주시면 감사하겠습니다.
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
실전문제8-Q20 질문
문제에서 AWS 와 온프레미스 연결이라고 설명해주셨는데VPC 간 통신이 위 문장을 의미하는걸까요?질문의 어떤 내용이 "AWS 와 온프레미스 연결" 부분을 설명하는건지 정확하게 알려주시면 감사하겠습니다.!
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
실전문제8-Q17 질문
A 지문은 운영오버헤드 최소화에 맞지 않아서 틀린건 이해했습니다.만약 운영오버헤드 최소화라는게 질문에 없었으면A, B 둘다 답이 될 수 있는건가요?아니면 A 는 그래도 질문에 맞지 않는 부분이 있는걸까요?A, B 지문이 문제에 자주 등장해서 질문드립니다.
-
미해결AWS Certified Solutions Architect - Associate 자격증 준비하기
실전문제8-Q1 질문
이러한 문제는 개념 강의만 통해서 풀기 어렵다고 생각하는데요외워서 풀어야 하는걸까요?특히 보기 B, C, D 의 경우 문풀 해설 설명이 부족하다고 생각하는데 좀 더 자세히 설명해주실 수 있을까요!