분류 전체보기 91

Crescendor - Android Build 관련 삽질

학기 중에 졸업작품 제안서를 쓰면서 테스팅을 진행하는데, 나를 계속 괴롭혔던 오류이다. android build support가 설치되지 않고, sdk / ndk / jdk를 따로 설치하니 계속 오류가 떠서 결국 빌드를 못해보고 다른 팀원에게 넘기게 되었다. 이제 oculus build는 거의 내가 담당할 예정이라 기기도 내가 가지고 있고, apk 빌드를 꼭 해내야만 하는 상황이어서 밤새 붙잡고 있어봤다.... 나는 unity에서 jdk, sdk, ndk의 경로를 직접 설정했다. unity editor에 내장된 모듈은 설치가 안되고 (아마 유니티 허브와 에디터의 버전이 안맞아서인 듯한데, 우리가 맞추기로 한 버전은 더이상 허브에서 설치할 수 없는 버전이었다.) android studio의 sdk mana..

Metaverse/Unity 2024.01.04

C++ - 복사 생성자

: 한 객체가 다른 객체로 복사될 때 호출되는 특별한 멤버 함수 class MyClass { public: // 복사 생성자 MyClass(const MyClass& other) { // 복사 수행 // ... } // 다른 멤버 함수들과 변수들 }; 객체의 복사 생성자는 해당 객체와 동일한 자료형의 다른 객체를 받아들여서, 원본 객체의 내용을 새로 생성된 객체에 복사함 여기서 const MyClass& other는 복사 생성자의 매개변수로 전달되는 객체를 상수 참조로 받음을 나타냄 복사생성자가 호출될 때 복사될 객체를 변경하지 않고 읽기만 한다는 것을 의미 복사 생성자가 호출되는 상황 객체의 복사가 필요한 경우: 객체를 다른 객체로 복사하려고 할 때 함수에 인자로 전달 객체 반환 MyClass obj1..

Metaverse/복습 2024.01.03

C++ - 범위 기반 for문

구문 for (for-range-declaration : 식) statement 설명 기존의 for문과 달리, 시작과 끝점을 알려주지 않아도 알아서 처음부터 끝까지 순회하는 반복문 index 정보 존재하지 않음 기존의 for문에서는 index를 나타내는 로컬 변수가 존재하는데, 범위기반 for문에는 존재하지 않음 오직 elem이라는 값만 존재 array의 요소를 변경할 수 없음 매 반복문을 돌 때마다 int elem : arr을 통해 하는 일은 다음과 같음 elem = arr[0]; elem = arr[1]; 이런식으로 array의 요소들이 elem이라는 변수에 복사됨 배열의 요소를 내부에서 바꾸려고 해도 복사된 값이므로 요소 값이 바뀌지 않음 reference, const reference 위에서 말한..

Metaverse/복습 2024.01.03

Reflection

: 프로그램이 실행시간에 자기 자신을 조사하는 기능 에디터의 디테일 패널 Serialization Garbage Collection Network Replication Blueprint / C++ Communication 등 다수의 시스템에 탑재됨 C++은 어떠한 형태의 리플렉션도 지원하지 않아, 언리얼에는 자체적으로 C++ 클래스, 구조체, 함수, 멤버 변수, 열거형 관련 정보를 수집, 질의 조작하는 별도의 시스템이 구축되어 있음 전형적으로 이러한 리플렉션은 Property System이라고 부름 Replication System은 옵션임, Reflection System에 보이도록 했으면 하는 유형이나 property에 주석을 달아주면, Unreal Header Tool (UHT)가 그 프로젝트를 컴..

Metaverse/UE5 2023.12.29

Garbage Collection

사용되지 않는 메모리 리소스를 회수하고 해제하여 프로그램의 메모리 누수를 방지하고 성능을 최적화 관리 대상으로 지정된 객체들은 UObject의 모든 하위 클래스들임 참조 카운팅 객체 간의 참조를 추적하기 위해 참조 카운팅을 사용 객체가 다른 객체에 의해 참조되면 해당 객체의 참조 카운트가 증가하고, 참조가 제거되면 감소함 참조 카운트가 0이 되면 해당 객체는 더 이상 필요하지 않으며 가비지 컬렉션의 대상이 됨 주기적인 가비지 콜렉션 일정한 주기 또는 메모리 입력이 발생할 때마다 가비지 콜렉션을 수행, 이 과정에서 더 이상 참조되지 않는 객체들이 해제됨 루트 객체 가비지 콜렉션은 일반적으로 게임 월드 내에서 시작되며, 게임 월드 내의 루트 객체들을 기반으로 작동 루트 객체는 참조 카운트가 1 이상이어야 하..

Metaverse/UE5 2023.12.28

C++ - 생성자와 소멸자

생성자 객체만 생성해도 생성자는 자동 호출됨 상속관계에 있을 때 자식 객체를 생성하면 맨위 부모 클래스의 생성자부터 차례대로 생성자 호출이 일어남 생성자가 private이라면 다른 함수에서 객체 선언 시 생성자 호출 자체가 불가능해짐 #include #include using namespace std; class A { public: A() { cout name.c_str()); } }; int main(void) { B b(10, "Yubin"); return 0; } 실행 화면>> 소멸자의 호출 시점 데이터 영역: 해당 프로그램이 종료될 때 스택 영역: 해당 객체가 정의된 블록을 벗어날 때 힙 영역: delete를 사용하여 해당 객체의 메모리를 반환할 때 임시 객체: 임시 객체의 사용을 마쳤을 때

Metaverse/복습 2023.12.27

운영체제 - Call Stack

Stack과 Heap 프로그램이 실행 중일 때, 변수는 일반적으로 call stack 혹은 process heap에 저장됨 process heap은 stack과 마찬가지로 실행 중인 프로그램에 변수를 저장하는 메모리 영역 Stack Allocation 할당은 function calll stack에서 발생 (stack memory allocation) 할당된 메모리의 크기 정보는 컴파일러가 갖고 있으며, 함수가 호출될 때마다 해당 변수는 stack에서 메모리를 가져오고 함수 호출이 끝날 때마다 변수에 대한 메모리 할당이 해제됨 메서드가 실행 중일 때만 데이터에 접근할 수 있는 임시 메모리 할당 체계 저장된 데이터의 소유자 쓰레드만 접근할 수 있어 상대적으로 안전함 메모리 할당과 해제가 힙 메모리 할당보다 ..

Metaverse/복습 2023.12.27

운영체제 - Thread

1. 프로세스 및 쓰레드 2. 쓰레드의 유형 프로세스와 쓰레드 프로세스: 실행 중인 프로그램 프로세스제어블록(PCB) 텍스트 (코드, 명령어) 데이터(전역변수) 힙(동적 메모리 할당) free area 스택(지역변수, 매개변수) 멀티 쓰레드 프로그램 하나의 프로그램을 2개 이상의 객체가 수행 multithread server 구조 동시 다발적으로 일어나는 일들을 thread로 구현 server data 분리 쓰레드의 장점 프로세스에 비해 새로운 쓰레드 생성 시간/비용이 절약되며, 프로세스 종료 시간보다 쓰레드 종료 시간이 짧음 병렬처리에 적합 멀티프로세서의 효율적 사용 병행 서버 응답 시간 향상 I/O 작업과 컴퓨팅 작업이 병행적으로 실행 프로세스 생성 - fork() 함수 : 유닉스 환경에서 함수를 호..

Metaverse/복습 2023.12.27

사물인터넷융합기술 - 텀프로젝트

Raspberry pi 4, DC motor, oled - 아래의 사진에서 우측에 있는 버튼은 oled와 모터의 전원을 제어하고, 좌측에 있는 버튼은 모터의 속도를 제어함 - adafruit의 circuit python 모듈을 사용하여 개발 import time import subprocess from xmlrpc.client import boolean from board import SCL, SDA import busio from PIL import Image, ImageDraw, ImageFont import time from adafruit_motorkit import MotorKit import adafruit_ssd1306 import board import digitalio #Motor Spe..