프로그래밍 405

25년 3월 첫주의 기록

홍랩 DX Part2 절반 조금 넘게 들었다.홍랩 DX강의는 진짜 들으려고 해도 날 잡고 들어야하고꼼꼼히 정리하면서 들으려고 했는데,음...그렇군 하고 넘어가던 날도 있어서매번 꼼꼼하게 듣지는 못했었다.그래도 꾸준히 하면 어떤 날은 꼼꼼히 듣고 어떤 날은 좀 덜 꼼꼼해도그나마 안하는 것 보단 낫겠지 하는 마음으로 들었다. 오늘은 주말이라 서버 강의 한 4개 정도 듣고오랜만에 DX 강의도 3개정도 봤다.그 외에도 언리얼 강의도 보고코테도 풀면서 오랜만에 게임 로직이 아닌순수 코딩에 대한 고민도 해봤다. 실질적으로 게임 구현은 안했어서 아쉬워서오늘이 3월의 첫째주의 마지막인 만큼 뭘 구현할지 고민해보는 시간을 가져야겠다. 실질적으로 이론에 투자하는 시간은 많지만손이 많이 가는 구현에 투자하는 시간이 적어 아..

언리얼 문자열 처리 FString과 FName, FText 사용 이유

언리얼의 문자열 처리 FString과 FName, FText 언리얼에서는 문자열 처리를 위해 FString을 제공한다.문자열을 다룰 때 사용하는 FString과 TCHAR를 변환하는 메커니즘을 사용하도록언리얼에서는 권장하고 있다. 간단히 FString과 TCHAR를 설명하자면,TCHAR는 문자열 배열 FString는 클래스라는 차이가 있다.  그런데 문자열 관리를 위해 FString을 제공하는데왜 Fname, FText를 또 제공할까? FName & FText의 제공 용도  FName과 FText는 주로 에셋관리를 위해서 사용되는 문자열 체계이다. 우리가 어떤 애셋을 빠르게 찾고 싶을 때이름을 지정해주는 게 명확하다.이 때, FName과 FText를 사용하는 것이다. 즉 언리얼에서 제공하는 둘의 사용 용..

UE5 2025.03.08

쓰기 PART 조사

동태 조사동태 조사는 동사 뒤에서 동작의 완료, 경험, 지속을 나타낸다. 了 "~했다"=> 동작의 완료를 나타낸다. 已经 A了 로 주로 쓰인다 예시)懂了睡觉了 过 "~한 적이 있다"=> 동작의 경험을 나타낸다 주로 과거의 경험을 뜻한다. 曾经 A 过 => 이미 A한 적이 있다 예시)去过 간 적 있다.工作过 일 한 적 있다. 着 "~하고 있다"=> 동작의 지속, 상태를 나타낸다. 존현문에 잘 쓰인다. 예시)站着 서있다. 어기조사어기조사는 문장 끝에 쓰여 의문, 청유, 추측, 변화 등을 나타낸다 吗 "~입니까, ~에요?"=> 의문어기 呢 의문사와 함께 쓰여 의문 강조, 동작의 진행을 표현한다 吧 "~하자, ~하겠지"=> 청유나 추측의 어기 주로 还是· 。。。 吧!로 쓰여or의 뜻과 ~하는 ..

취미/HSK 2025.03.07

쓰레드 내부코드 보는 법

다음과 같은 join 코드의 내부 코드 보는 법 디버깅 돌려서 HelloThread() 함수에 중단점 찍기 중단점을 찍은 뒤 쓰레드를 주 스레드로 변경하면내부코드 볼 수 있다. 뿐만 아니라스레드 설정을 바꿔가며 다른 스레드들은 뭘 하고 있는지 왔다갔다하며체크할 수 있다. Thread 클래스 5가지 함수 사실 Thread 클래스와 관련된 내용들은 사실 복잡하지 않다.Thread 클래스에서 5가지 핵심 함수를 알면,그 외에는 크게 신경 쓸 일은 없다.int main(){ // HelloThread(); std::thread t(HelloThread); cout std::thread hardware_concurrency(); - CPU 코어 개수멀티 코어 환경에서 실질적으로 구동할 수 있는 코어 개수가..

대입 연산자

대입 연산자 정의 방법대입 연산자를 구현하는 방법은복제 생성자와 비슷하지만,몇 가지 중요한 차이점이 있다.첫째, 복제 생성자는 초기화할 때 단 한 번만 호출된다.이때 대상의 객체는 유효한 값을 가지고 있지 않다.또한 대입 연산자는 객체에 이미 할당된 값을 덮어쓸 수 있다.그러므로 객체에서 메모리를 동적할당하지 않는 한이 차이점은 크게 드러나지 않는다.이에 대한 코드 예시는 아래와 같다.MyClass myClass;myClass = myClass;대입 연산자를 구현할 때는 자기 자신을 대입하는 경우도 고려해야 하지만,고려하지 않아도 될 경우가 있다.1) 클래스 내부에 멤버가 하나고2) 이 멤버가 기본형이라면 이를 고려하지 않아도 된다.위 예제의 MyClass가 double형 하나만 가진 클래스라면이를 성립..

멀티쓰레드 개론

멀티쓰레드가 필요한 경우는 그림판과 같은 간단한 프로그램의 실행의 이유보다는몇천명이 로그인하여 동시에 접속을 하고,패킷을 보내고 게임 로직도 실행하고데이터비트 저장도 하는 정말 할 일이 많은 이러한 경우가 이유가 될 것이다. 그림판과 같은 단순 프로그램은 단일 스레드가 맡는 것이 되려 적합할 수 있지만,아까 말했던 대규모 접속 게임과 같은 경우에는단일 스레드로만 처리하기에는 하나의 스레드가 너무 많은 일을 담당해야 한다.따라서 멀티 스레드라는 개념이 적합하다. 각각의 여러 개의 스레드가 각 로직을 담당하여 동시에 로직을 실행하는 것이다.그렇다고 해서 스레드를 여러 개 배치했다고 해서 항상 성능이 좋아지는 것은 아니다.앞서 말했다 싶이, 간단한 프로그램과 같은 경우에는오히려 스레드가 놀게 되어 성능이 저하..

2025년 목표

개발 공부1. 서버 강의 완강하기 (루키스)2. 유데미 서버연동 완강하기3. 전문가를 위한 C++ 완독하기4. 말버릇 고치기~해서 안될 거 같아요 -> 말씀하신 ~부분은 예외처리 하겠습니다.원래 그런 거 아닌가 하는 생각 보단, 말씀하신 부분은 알아본 뒤 수정하도록 하겠습니다.말 먼저 나오기.자기 계발1. 중국어 자격증 취득하기2. 건강 챙기기 규칙적인 생활하기 3. 마라톤 준비

카테고리 없음 2025.02.24

생성자

명시적으로 정의하는 복사 생성자C++에서의 복사 생성자는명시적으로 정의할 수 있다.명시적으로 정의하는 2가지 방식은default로 만드는 것과delete로 삭제하는 것이 있다.복사 생성자를 삭제하면더 이상 객체를 복제하지 않는다.객체를 값으로 전달하는 것을 방지하기 위하여이러한 삭제를 정의할 수 있다.만약 클래스의 데이터가 복사 생성자가 삭제되었다면,그 클래스의 복사 생성자도 자동으로 삭제된다.초기화 리스트 생성자초기화 리스트 생성자란,std::initilalizer_list를 첫 번째 매개변수로 받고,다른 매개변수는 없거나 디폴트 값을 가진 매개변수를추가로 받는 생성자를 말한다.위임 생성자(delegating Constructor)위임 생성자를 사용하면같은 클래스의 생성자끼리 호출할 수 있다.단, 생성..