목록Today I Learn (103)
나만의 작은 도서관
주의사항: 해당 글은 일기와 같은 기록용으로, 다듬지 않은 날것 그대로인 글입니다. 언리얼에서 스레드 만들기언리얼은 스레드를 만들 때 독자적인 방식으로 만들 수 있다. std::thread처럼 표준을 이용한 스레드 생성도 할 수는 있지만, 표준으로 만들 경우 여러 호환성 문제가 발생할 수 있기 때문에 되도록이면 언리얼에서 제공하는 스레드 생성 방식을 적용하는 것이 좋다.FRunnableThread언리얼에서 스레드는 FRunnableThread이라는 클래스 객체로 관리한다. 즉, 새로운 스레드를 만들고 싶다면, FRunnableThread객체를 하나 만들어서 작업을 물려주면 된다.FRunnableThread객체를 만들려면 정적 멤버 함수인 FRunnableThread::Create()를 호출하여 생성해야 ..

주의사항: 해당 글은 일기와 같은 기록용으로, 다듬지 않은 날것 그대로인 글입니다. 언리얼에서의 모듈과 빌드 설정모듈?언리얼에서의 모듈은 언리얼 엔진 소프트웨어 아키텍처의 가장 기본적인 구성요소로, 엔진은 대규모 모듈 모음으로 구현되어 있다.모듈은 하나의 디렉터리이다. 예를 들어, P1 모듈은 P1이라는 이름의 디렉터리를 의미한다.프로젝트 모듈언리얼 프로젝트를 만들게 되면 자동으로 프로젝트 이름으로 된 모듈이 생긴다. 예를 들어 프로젝트 이름이 “P1”이라면 P1이라는 모듈이 생긴다.해당 모듈은 Source 디렉터리 아래에 생성된다. 프로젝트 빌듯이 엔진을 제외한 모든 소스 파일들을 이곳에서 참고한다.P1.Build.csP1 모듈 아래에는 P1.Build.cs라는 파일이 하나 존재하는데, 이 파일은 P1..
주의사항: 해당 글은 일기와 같은 기록용으로, 다듬지 않은 날것 그대로인 글입니다. 데이터 링크 계층에서 오류 검증을 했어도 전송 계층에서 다시 오류를 검증하는 이유(OSI 7 계층)OSI 7 계층 기준으로 사용자가 상대 호스트에게 데이터를 전송하면 최상위 계층인 애플리케이션 계층부터 물리 계층까지 내려가면서 헤더를 추가하고, 상대 호스트는 해당 데이터를 물리 계층부터 애플리케이션 계층까지 올라가면서 헤더를 제거한다.의아한 점은 2 계층인 데이터 링크 계층과 4 계층인 전송 계층의 UDP, TCP 둘 다 오류를 검출하는 필드가 헤더에 존재한다는 것이다. 각 호스트가 데이터를 주고받을 때 모든 계층을 한 번씩 지나간다면 굳이 여러 계층에서 오류 검출을 할 필요가 없어 보였다.데이터 링크 계층(L2)에서 오..
주의사항: 해당 글은 일기와 같은 기록용으로, 다듬지 않은 날것 그대로인 글입니다. Protobuf keyword 재정리: Package, Optional, Oneofpackagepackage는 이름 충돌을 예방하기 위한 키워드이다.syntax = "proto3"package Protocol;message S_TEST { ... }위와 같이 .proto 파일을 작성하면 protoc를 거쳐 나온 xxx.pb.cc 와 xxx.pb.h에서 package이름으로 namespace가 만들어지고 message들은 해당 namespace 안에 정의되어 있게 된다(C++기준)프로젝트 내에선 아래와 같이 사용할 수 있다.// package Protocol에 의해 namespace가 Protocol인 S_TEST 클래스..
주의사항: 해당 글은 일기와 같은 기록용으로, 다듬지 않은 날것 그대로인 글입니다. 템플릿에서 정의한 타입 매개변수(typename)는 반드시 템플릿 인자로 넘겨주지 않아도 된다.템플릿 매개변수는 넘겨준 템플릿 인자를 통해 타입이 결정된다. 따라서 템플릿 매개변수가 2개라면, 반드시 템플릿 인자도 2개를 넘겨줘야 되는 줄 알았다.// 정의templatevoid add(T a, U b) { return a + b;}// 템플릿 함수 호출int result1 = add(1, 2); // => 3하지만 이는 템플릿 매개변수를 명시적으로 알려줄 뿐, 컴팡일러가 추론이 가능하다면 반드시 적어줄 필요는 없다.int result2 = add(1, 2); // => 3이렇게 C++ 컴파일러는 타입 추론(type ..
주의사항: 해당 글은 일기와 같은 기록용으로, 다듬지 않은 날것 그대로인 글입니다. 빌드 전에 protoc 자동 호출 시키기protoc.exe에 명령줄을 넣어 실행하면. proto →. cpp로 변환된다(cpp가 아닌 다른 언어도 된다) 그런데, 개발자도 사람인지라. proto를 수정해 놓고. protoc를 실행하지 않는 실수를 범할 수 있다. 이 부분을 해결하기 위해. proto가 수정되면 자동으로 protoc가 실행되었으면 한다.. protoc가 실행되는 시점은 여럿 있겠지만, 정말로 수정된 다음 저장할 때마다 protoc를 실행시키면 실행 빈도가 잦을 것이다(Unity에서 코드 한 줄 수정할 때처럼..) 그러니 시점은 빌드 전에 protoc를 실행하는 것이 가장 적당하다.빌드 전에 배치 파일을 자동..