현재 운영체제 수업을 듣고 있는데, 과제로 리눅스를 사용하는 과제가 주어졌습니다. 내용은 즉슨 "두개의 프로세스를 실행하고, 서로 네임드 파이프라인 통신을 하게 하라. 단 각 프로세스는 fork를 통해 자식프로세스를 만들고, 자식은 전송을 부모는 읽고 출력하는 형식으로 제작하라. 그리고 Ctrl + C 가 입력되면 좀비 프로세스를 만들지 않고 종료하라" 라는 과제가 주어졌습니다. 그래도 교수님게서 사용할 기본 함수들은 알려주셔서 그나마 쉽게 풀어나갈 수 있었습니다. 통신 기본 코드 char *chatTtoJ = "./chatTtoJ"; char *chatJtoT = "./chatJtoT"; mkfifo(chatTtoJ, 0666); mkfifo(chatJtoT, 0666); fdr = open(chatT..
현재 프로그램을 짜거나 할 때 const를 자주 사용하지 않았었는데, 이 주제에서 const를 상당히 중요하게 보는 것을 보고 깨우쳤습니다. 상당히 중요해 보이더라구요. 특히 컴파일 할 때 에러를 잡아줄 수 있는 부분의 메리트가 상당히 커 보였습니다. 다음은 const가 붙는 위치에 따른 변수의 변화입니다. char test1[] = "Hello"; char test2[] = "World"; char *p = greeting; const char *p = greeting // 비상수 포인터 // 상수 데이터 [0] = test2[0]; //error p = test2; //complete char * const p = greeting // 상수 포인터 // 비상수 데이터 p[0] = test2[0]; /..
Rookiss님의 유니티 엔진 강의를 보고 정리한 내용입니다. 한 지점에서 특정 방향으로 레이저를 발사하여, 맞은 물체를 파악하는 방식입니다. 원래는 컴퓨터 그래픽스의 기술이기도 합니다. 기본적인 사용 방법은 Physics.Raycast(~~~~);입니다만 안에 들어가는 방식은 매우 다양합니다. if (Physics.Raycast(transform.position, Vector3.forward, out hit, 10)) { Debug.Log($"RayCast!{hit.collider.gameObject.name}"); } 이번 방식은 레이저에 닿는 모든 물체를 감지하는 방식입니다. RaycastHit[] hits; hits = Physics.RaycastAll(transform.position + Vec..
Rookiss님의 유니티 엔진 강의를 보고 정리한 내용입니다. 공식 문서 : https://docs.unity3d.com/kr/530/Manual/CollidersOverview.html 콜라이더 - Unity 매뉴얼 콜라이더(Collider) 컴포넌트는 물리 충돌 처리를 위한 오브젝트의 형태를 정의합니다. 콜라이더는 보이지 않는 요소이므로 오브젝트의 메시와 정확히 동일한 모양일 필요는 없으며, 실제로는 게 docs.unity3d.com 먼저 Collision이란 충돌을 의미하는 것이고, 유니티에서 물리적인 충돌을 발생시키는 것을 말합니다. 그래서 유니티의 각 오브젝트들에 충돌 여부를 부여하기 위해서 Collider, RigiBody가 존재합니다. 먼저 충돌의 조건에는 세가지가 필요합니다. 위 공식문서에..
정말 간단한 키보드 후킹 프로그램을 만들었습니다. 작동 원리는 간단합니다. 1. SetWindowsHookEx() API를 통해서 클라이언트 측 키보드 값을 후킹합니다. 2. 서버 측에 입력받은 키보드 값을 DWORD 형태로 전달합니다. 3. 서버 측에서는 입력받은 키보드 값을 출력해줍니다. SetWindowsHookEx의 형태는 검색을 해보시면 다양한 자료들을 얻으실 수 있겠지만, 간단하게만 말씀드리면 _hook = SetWindowsHookEx(WH_KEYBOARD_LL, UseFunction, hInstance, NULL); 이런 형식으로 됩니다. 사용할 함수에는 키보드를 입력받았을 때 행동할 함수를 작성하여 넣어주시면 됩니다. 아래는 기본형태입니다. LRESULT CALLBACK AnyName(i..
DebugGame - 자세한 디버깅을 위해 최적화가 안 된 결과물을 생성하는 빌드 구성. 게임 실행을 위한 exe 파일을 생성한다. DebugGame Editor - DebugGame과 동일한 수준의 에디터용 DLL 파일을 생성한다. Development - 중간 수준의 최적화와 디버깅도 가능한 결과물을 생성하는 구성이다. Development Editor - 에디터용 DLL 파일을 생성한다. 설정의 기본값이다. Shipping - 게임의 최종 배포를 위해 최적화된 코드를 만들어내는 구성이다. exe 파일을 생성한다. 스태틱메시 컴포넌트(StaticMesh Component) - 애니메이션이 없는 모델링 애셋인 스태틱메시를 사용해 시각적인 기능과 물리적인 기능을 제공하는 모듈이다. 주로 배경 물체에 사용..
Config - 게임 프로젝트의 설정 값을 보관하는 공간. 이 폴더를 제거하면 게임 프로젝트의 중요한 설정 정보가 날아가므로 항상 보관해야 한다. Content - 게임 프로젝트에 사용하는 에셋을 관리하는 공간이다. 항상 보관해야 한다. Intermediate - 프로젝트 관리에 필요한 임시 파일들을 저장하는 공간이다. 이 폴더는 제거해도 에디터에 의해 자동으로 재 생성된다. Saved - 에디터 작업 중에 생성된 결과물을 저장하는 공간이다. 예를 들어 세이브파일, 스크린샷은 모두 이곳에 저장된다. 이 폴더를 제거하면 수동으로 저장한 세이브 파일이나 스크린샷 등이 삭제될 수 있다. 게임 프로젝트에는 영향을 주지 않는다. Binaries - C++ 코드가 컴파일된 결과물을 저장하는 공간. 이 폴더는 삭제해..
강의 : (인프런)C++과 언리얼로 마드는 MMORPG 게임 개발 시리즈 - 게임서버 데이터를 저장하거나, 패킷으로 전달할 때 정수값이나 char 값은 그대로 저장할 수 있으나 동적으로 할당된 값은 그대로 저장할 수 없습니다. 예를 들어 아래의 구조체를 가진 데이터를 보내거나 저장하려고 할때, target이나 vector의 값을 저장해도 후에 복원시킬 때 제대로 된 값을 복원할 수 없습니다. 따라서 이러한 값을 byte나 배열로 만들어서 보내거나 저장할 수 있도록 하는 것을 직렬화라고 합니다. class Player { public: int32 hp = 0; int32 attack = 0; Player* target = nullptr; vector buffs; }; XML vs JSON javascrip..
- Total
- Today
- Yesterday
- c++
- 지뢰찾기
- 학교
- 고양이
- 멀티쓰레드
- 알고리즘
- Dreamhack
- 스레드풀
- 자료구조
- 컨퍼런스
- 정보보안
- 시스템보안
- BFS
- queue
- 개발
- 워셜알고리즘
- 백준
- Select모델
- STL
- 보안
- 링크드 리스트
- 야경
- 레지스터
- 인제대학교
- 드림핵
- 더블버퍼링
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |