일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 정렬알고리즘
- 알고리즘
- BFS
- 강참조
- map
- moreeffectiveC++
- enumasByue
- stl
- C++
- 정렬
- 프로그래머스
- C++최적화
- UML관련
- 데이터애셋
- 스마트포인터
- 람다
- 선택정렬
- unorder_map
- UE4 커스텀로그
- dataasset
- 언리얼가비지컬렉터
- 언리얼엔진구조체
- 자료구조
- UE_LOG
- 약참조
- 델리게이트
- 크리티컬섹션
- 람다사용정렬
- UELOG
- 애셋로드
- Today
- Total
목록Note (423)
기억을 위한 기록들
처음에는 좁은 자취방에서 삼성 m7 43인치를 고민했었다... 하지만 ps5를 즐기면서 이래저래 기존 모니터 (32인치)에 비해 큰 업그레이드가 될거같지 않은 기분에(?) 55인치로 크게 질렀다... 지마켓 빅스마일데이 세일로 749,000에 구매를 하였다. 재밌던 점은 설연휴라 배송문의를 해보려고 전화를 했었는데, 상품문의 상담 직원이였나 전화로 해준 말이 새벽배송이라는 시스템이 있는데 배송팀에 한번 문의 해보라고 한것이다. 그래서 배송팀에 문의해보니 네이버스토어에서 주문할때 선택하는 창에 새벽배송 +3000원이라는 선택이 있었지만, 지마켓에는 없었다. 그래서 새벽배송으로 어떻게 안되냐고 한번 물어보니, 알려보고 전화준다하고 얼마 후 전화가 왔다. http://mitem.gmarket.co.kr/Ite..
최초 작성 : 2020년 3월23일 1차 수정 : 2023년 1월 29일 경량패턴 이름에서도 알 수 있듯이 경량패턴은 어떤 객체의 개수가 너무 많아서 좀 더 가볍게 만들고 싶을 때 사용. 인스턴스 렌더링에서는 메모리 크기보다 렌더링할 나무 데이터를 하나씩 GPU버스로 보내는데 걸리는 시간이 중요하지만, 기본 개념은 경량 패턴과 같다. 이런 문제를 해결하기 위해 경량 패턴은 객체 데이터를 두 종류로 나눔. 1. 고유상태(or 자유문맥) : 메시(나무 형태), 텍스쳐 등 해당 2. 외부상태 : 위치, 크기, 색 등 즉, 한개의 고유 상태를 다른객체에서 공유하게 만들어 메모리 사용량을 줄일 수 있다. ex) 한그루의 나무 클래스를 만들어 숲을 만들어야한다. 나무 객체에 들어 있는 데이터 대부분이 인스턴스별로 ..
// assert 는 DO_CHECK = 1 일때만 실행 // check 는 false 값이면 실행을 중지 check(Mesh != nullptr); checkf(MyPtr, TEXT("MyPtr is nullptr")); // false 이면 로그 출력 checkcodeMyPtr, TEXT("MyPtr is nullptr")); // checkf 와 비슷 checkNoEntry(); // 절대 실행될 리 없는 경로 표시 checkNoReentry(); // 호출 완료 전까지 다시 호출되면 안되는 경우 체크 checkNoRecursion(); // checkNoReentry() 와 동일 unimplemented(); // 반드시 재정의해야 하는 가상 함수를 표시하기 위해 사용 // verify 는 DO_..
컴퓨터 언어에 대해 다룬다고 하면 무조건 필수라고는 안하지만(?) 안 하는 사람은 없을 것이다. (즉, 모르면 손해 정도랄까) 그 와중에도 그렇게 대중적이진 않지만 심오한(?) C언어로 해당 책은 구성되어 있다. 책의 구성은 다음과 같다. 자료구조와 알고리즘 순서대로 각각의 종류에 대해 알려주고 있다. 그리고 후반은 알고리즘 설계 기법이라는 챕터로 상황별 알고리즘 설계기법과 성능 측정법에 대해 알려준다. 어떤 알고리즘이 어떤 성능을 발휘하는지에 대해 알고 있어야 적재적소 필요할때에 알맞게 사용할 수 있기 때문이다. 챕터 0에서는 자료구조와 알고리즘이 뭔지 왜 배워야하는지에 대해 간단히 설명해주고 있어서 상기시켜줄 수 있어서 좋았다. 우선 자료구조란? 데이터 보관 방법 & 데이터에 관한 연산의 총체를 뜻한..
초안: 2021-03-31 1차수정 : 2022-12-05 람다란??? 람다 표현식이란 함수나 함수 객체를 별도로 정의하지 않고, 필요한 지점에서 곧바로 함수를 직접 만들어 쓸 수 있는 일종의 익명 함수(이름 없는 함수라고도 할수 있을 것 같다? )혹은 클로저(Closure)를 말한다. 람다 표현식을 잘 활용하면 코드를 깔끔하게 만들 수 있다. 사실 람다 함수라는 단어 자체도 원래는 존재하지 않아야 한다고 한다. 우리가 평소에 사용하는 [](){}로 묶인 람다 함수라고 불리우는 것들은 정식적인 명칭으로는 람다 표현식(Lambda Expression)이라고 불러야 한다. 그로 인해서 탄생한 함수를 만드는 문법이기 때문에, 클로저를 만드는 문법 또는 기술이라고 봐야한다. 하지만, 람다 함수라고 하면 일맥상통..
https://forums.unrealengine.com/t/arecapslocked-not-exposed-to-blueprints/414107
https://docs.unrealengine.com/4.26/ko/ProgrammingAndScripting/ProgrammingWithCPP/UnrealArchitecture/Delegates/ 먼저 Delegate의 사전적 의미로는 "대리자 혹은 위임자" 라는 뜻이 있다. 델리게이트설명 : Delegate (델리게이트)로 C++ 오브젝트 상의 멤버 함수 호출을 일반적이고 유형적으로 안전한 방식으로 할 수 있습니다. 델리게이트를 사용하여 임의 오브젝트의 멤버 함수에 동적으로 바인딩시킬 수 있으며, 그런 다음 그 오브젝트에서 함수를 호출할 수 있습니다. 호출하는 곳에서 오브젝트의 유형을 몰라도 말이지요.델리게이트 오브젝트는 복사해도 완벽히 안전하다.델리게이트는 값으로 전달 가능하나 보통 추천할 만 ..
이번에 읽어본 책은 생소한 데브렐에 관한 내용이다. 나도 이 책을 통해 처음 알게 됐는데, 몇 년 전까지만 해도 국내엔 생소했고, 최근 우리나라 기업에서도 데브렐 담당자를 만들고 팀을 운영하고 있다고 한다. 참고 : https://engineering.linecorp.com/ko/blog/line-plus-developer-relations-team/ 개발자의 성장 엔진, LINE Developer Relations 팀을 소개합니다! 2022-LINE-engineering-site engineering.linecorp.com '개발자'들이 기업의 핵심영량으로 자리 잡으면서 왜 이런 데브렐 즉 개발자들의 관계들이 중요한지에 대한 책의 설명 책자라고 볼 수 있다. 회사들 기업에서는 일 자체도 그렇고 그 기업..
std에서 std::async라는 함수가 존재한다. 여러 갈래로 갈라져서 동시에 진행되어서 CPU를 조금 더 효율적으로 사용하기 위해서입니다. 즉, 프로그램을 비동기적(asynchronous) 실행을 하기 위해서이다. 해당 함수는 언리얼엔진에서 AsyncTask 함수라는걸 제공하고 있다. 보통은 아래와 같이 사용하고 있는데 뭔뜻인지 알수가 없어 찾아 보았다. AsyncTask(ENamedThreads::GameThread, [SlotName, UserIndex, SavedDelegate, bSuccess]() { SavedDelegate.ExecuteIfBound(SlotName, UserIndex, bSuccess); }); 해당 함수의 엔진 코드는 이렇게 되어있고, 어떤 Taks를 생성해주고, 준비가..
UE에서는 전체 렌더러는 게임 스레드에 한 두 프레임 뒤쳐지는 별도의 스레드에서 작동 (렌더 스레드가 N 프레임일때 게임 스레드 N+1 일수 있음.) 렌더링 처리를 할 때 모든 메모리 읽기 쓰기의 스레드 안전성뿐만 아니라 그 행위의 결정론적 특성을 세심히 고려해야함. 함수적 행위가 두 스레드간의 실행 속도 차이에 따라 달라지는 경우를 경쟁(race) 조건이라 함. 경쟁 조건은 보통 재현하기가 매우 어렵기 때문에 피하는 것이 중요한데, 속도차이 때문에 기계, 플랫폼, 디버거, 환경설정에 따라 달라질 수 있기 때문입니다. 이러한 유형의 버그는 거의 디버깅이 불가능하여, 일반적으로 재현 가능한 버그에 비해 고치는 데 10 배 정도의 시간이 걸립니다. 경쟁 조건 / 스레딩 버그의 간단한 예제는 이렇습니다. /*..
동기적(Synchronous) 어떤 작업을 요청했을 때 그 작업이 종료될때 까지 기다린 후 다음 작업을 수행하는 방식 비동기적(Asynchronous) 어떤 작업을 요청했을 때 그 작업이 종료될때 까지 기다리지 않고 다른 작업을 하고 있다가, 요청했던 작업이 종료되면 그에 대한 추가 작업을 수행하는 방식 https://velog.io/@emawlrdl/%EB%8F%99%EA%B8%B0%EC%A0%81-vs-%EB%B9%84%EB%8F%99%EA%B8%B0%EC%A0%81
최근은 어떤지 모르겠지만 난 처음 프로그래밍 언어를 배울 학부시절에 C언어를 배웠었다.. 하지만 낯설기도 했고 어렵기도 했었다. 그러다가 이후에는 다른언어를 얇게 배우고, C++와 UE C++를 계속해서 공부하고 있다. 그러다가 운좋게 다시 C언어에 대한 책을 읽어 볼 기회가 생겨서 깊숙하게 다 읽어보진 않았지만 훑어보고 이 글을 작성하게 됐다. 이 책은 제목처럼 아예 C언어를 처음 접하는 사람에게는 추천하기는 힘들고, 어느정도 C언어의 기본 문법을 다 아는 상태에서 좀 더 다음 단계로 가기 위한 책인듯 싶다. 그렇다고 이책에서도 아예 짚어주지 않는 건 아니다. 짧고 간결하게 설명을 잘 해주고 있다. 간단하게 무엇들을 할수있고 어떤 개념들이 필요한지에 대한 나열을 해주고 있다. 그러다가 좀 더 전문가스러..