1. vcpkg 설치 [https://github.com/microsoft/vcpkg]
  2. 설치 후, vcpkg 폴더 가서 vcpkg install glfw3 (기본 32bit 버전임 [64bit가 필요하다면 ':x64-windows'를 추가])
  3. vcpkg 폴더 가서 vcpkg install glm(기본 32bit 버전임 [64bit가 필요하다면 ':x64-windows'를 추가])
  4. vcpkg 폴더 가서 vcpkg install assimp (기본 32bit 버전임 [64bit가 필요하다면 ':x64-windows'를 추가])
  5. glad는 https://glad.dav1d.de/ 에서 현재 GL버전을 선택하고 Profile은 'Core' 선택 후, 'ADD ALL'을 누른 뒤, 'GENERATE'
  6. 다운로드하면 'vcpkg/install/x(선택한 비트)-windows/include'위치에 glad, KHR 폴더를 넣고 'glad.c'는 본인 편한 곳에 풀어서 본인 설루션에 포함시킨다.
  7. 이렇게 되면 vcpkg에서 설치가 됐고 이제 Visual Studio와 연동하기 위해 'vcpkg integrate install'!
  8. 이제 Visual Studio에서 #include ~~~~ 로 사용 가능하다.
 

https://glad.dav1d.de/

Extensions...

glad.dav1d.de

 

GitHub - microsoft/vcpkg: C++ Library Manager for Windows, Linux, and MacOS

C++ Library Manager for Windows, Linux, and MacOS. Contribute to microsoft/vcpkg development by creating an account on GitHub.

github.com

'OpenGL' 카테고리의 다른 글

OpenGL[Lighting]  (0) 2022.10.18
OpenGL[Coordinate System]  (0) 2022.10.18
OpenGL[02](First Triangle)  (1) 2022.10.12
OpenGL[01](Shader)  (1) 2022.10.12
OpenGL[00](First Window)  (0) 2022.10.12

오늘은 특별히 쉬는 날이다.

근데 7시 반에 눈이 떠진 뭐,,,

요 근래에 아토피가 갑자기 심해져서 약을 타 왔다.

근데 약을 먹다 보니 임파선이 부어서 조금 곤란하다.

 

어제는 시험도 통과했고 오늘 쉬는 날이라 윤수형한테 한번 볼까 했다.

생각해보니 약을 먹고 있어서 애매해서 미안하지만 못 만나겠다고 했다.

그래서 오늘은 뭐 별거 안 했다.

 

게임 좀 하다가... kqueue에 대해 공부 좀 하다가...

글도 몇 개 적다가... 쉬는 날인데 뭐 하는 건지 참 ㅋㅋㅋ

오늘은 생각이 많은 날이긴 했는데 뭐 한 게 별로 없었다.

그냥 뭐 이제 취업을 걱정할 상황이 됐는데 말이지... 뭘 하고 있는지 모르겠다는 생각?...

하하하하하하하하 2022-07-23(23:13)

'진짜 일기' 카테고리의 다른 글

2023.09.02  (2) 2023.09.02
2023.08.29  (0) 2023.08.29
7/19 일기  (0) 2022.07.19
7/13 일기  (0) 2022.07.13
7/12 일기  (0) 2022.07.12

헤더

#include <sys/types.h>
#include <sys/event.h>
#include <sys/time.h>

 

kqueue 생성

int	kqueue();

새로운 Kernel event queue를 생성하고 해당 FD를 반환한다.

생성된 queue는 fork 된 자식이 상속할 수 없지만, RFFDG 플레그를 사용하지 않은 rfork사용 시 fd table을 공유할 수 있다.

반환 값 : -1은 실패, 이외의 값은 fd이다.

 

event 관리

int	kevent(int kq
		, const struct kevent *changelist, int nchanges
		, struct kevent *eventlist, int nevents
		, const struct timespec *timeout)

반환 값 : -1은 실패, 0은 Timeout, 이외의 값은 현재 발생한 Event의 수이다.

인자

  • kq : kqueue로 생성된 kqueue의 fd
  • changelist : 추가 혹은 수정이 필요한 이벤트의 리스트이다.
    (나는 이 매개 변수가 많이 헷갈렸다.) 한 번 풀어서 쓴다면, 추가하거나 변경사항이 있는 이벤트는 여기에 추가된다. 하지만 한 번에 내가 정한 최대의 이벤트의 개수만 확인하여 처리한다. 이후 처리한 이벤트는 큐에 다시 쌓이게 되고 해당하는 큐는 처리하지 못한 이벤트가 가장 앞으로 나오게 되어 다음번에 처리할 수 있도록 해준다.
  • nchanges : 한 번에 변경, 추가할 이벤트의 수
  • eventlist : 이벤트를 받으면 커널에서 이벤트를 넣어주는 배열(발생한 이벤트의 정보를 넣어준다.)
  • nevents : 한 번에 처리할 수 있는 이벤트의 수
  • timeout : timeout값(NULL일 땐 무한정 대기한다.)

큐에 이벤트를 등록, 처리되지 않은 이벤트들을 사용자에게 반환하고자 할 때 사용한다. 큐에 이벤트들을 등록하는 것은 chagelist, 이벤트가 발생했을 때는 eventlist에 정보가 담긴다.

즉, changelist는 변경사항이 발생했을 때, 추가되고 kevent를 실행한 뒤 초기화시켜야 한다.(nchanges = 0) 또한, eventlist도 초기화될 것이다.

 

kevent 구조체

struct kevent
{
	uintptr_t	ident;
	short		filter;
	u_short		flags;
	u_int		fflags;
	intptr_t	data;
	void		*udata;
}

인자

  • ident : 해당 kevnet에 대한 fd
  • filter : 이벤트 필터 플래그
  • flags : kqueue에 대한 액션 플래그
  • fflags : 필터 플래그 값
  • data : 필터 데이터 값
  • udata : 사용자 정의 데이터

 

이벤트 추가, 변경 시에 사용할 매크로

EV_SET(&kev, ident, filter, flags, fflags, data, udata)

flags

  • EV_ADD : 이벤트 추가
  • EV_ENABLE : kqueue에서 이벤트를 활성화
  • EV_DISABLE : kqueue에서 이벤트를 비활성화
  • EV_DELETE : kqueue에서 이벤트 삭제
  • EV_ONESHOT : kqueue에서 설정된 이벤트를 단 한 번만 알려준다.
  • EV_CLEAR : 이벤트 reset
  • EV_EOF : EOF상태를 인식할 수 있다.
  • EV_ERROR : 에러

fflags

  • EVFILT_READ : 읽기 액션
  • EVFILT_WRITE : 쓰기 액션
  • EVFILT_EMPTY : 버퍼가 비어있을 때 발생하는 액션
  • EVFILT_AIO : AIO 요청
  • EVFILT_VNODE : fflag에서 감시 중인 이벤트 중 하나 이상이 발생할 때 발생하는 액션
  • EVFILT_PROC : 프로세스 id에서 이벤트를 감시
  • EVFILT_SIGNAL : 감시하는 시그널이 프로세스에 전달될 때 발생하는 액션

'42일기' 카테고리의 다른 글

inception  (0) 2022.10.24
I/O Multiplexing  (0) 2022.07.23
ft_containers[Red-Black Tree]  (1) 2022.04.29
ft_containers[Map]  (0) 2022.04.26
CPP [템플릿]  (0) 2022.03.02

Multiplexing

  • 하나의 통신 채널을 통해서 둘 이상의 데이터를 전송하는 데 사용되는 기술
  • 물리적 장치의 효율성을 높이기 위해서 최소한의 물리적인 요소만 사용해서 최대한의 데이터를 전달하기 위해 사용되는 기술
  • Multiplexing을 서버에 적용하면 필요한 프로세스의 수를 줄일 수 있다. 클라이언트의 숫자와 상관없이 서버에서 서비스를 제공하는 프로세스의 수는 딱 하나이다.

 


System Call

  • 응용프로그램에서 운영체제에게 시스템 자원을 요청하는 하나의 수단.
  • System Call을 요청하면 제어가 kernel로 넘어가 내부적으로 각 System Call을 구분하기 위해 기능별로 고유한 번호를 할당해 놓는다.
  • 번호에 맞는 서비스 루틴을 호출하여 처리한 후 사용자로 넘어온다.
  • 프로세스 제어, 파일 조작, 장치 관리, 시스템 정보 및 자원 관리, 통신 관련 등이 있다.

 


Select

  • 등록된 FD를 전부 체크해야 하고 커널과 유저 공간 사이의 여러 번의 데이터 복사가 발생한다.
  • 제한된 FD를 사용한다.
  • 사용이 쉽고 이식성이 좋다.

Poll

  • Select와 서의 동일하지만 FD의 개수가 무제한이다.
  • low level의 처리로 시스템 콜의 호출이 Select보다 적다.
  • Select는 3bit, poll은 64bit로 양이 커지면 Select보다 성능이 떨어질 수밖에 없다.

Epoll

  • Linux 2.6.x이상 버전에서만 지원된다.
  • FD의 개수는 무제한이다.
  • Select, Poll은 FD를 직접 관리하지만, Epoll은 kernel에서 관리된다.
  • 그렇기에 매번 FD의 정보를 보내주지 않아도 괜찮다.
  • 또한, kernel과 유저스페이스 간의 통신 오버헤드가 대폭 줄어든다.

Kqueue

  • Epoll은 Linux에서 사용되지만 Kqueue는 BSD계열의 Epoll이다.(유닉스 계열)

Libevent

  • FD에서 이벤트가 발생했을 때 지정된 콜백 함수를 실행해주는 라이브러리이다.
  • 시스템마다 서로 다른 I/O Multiplexing Method를 추상화시켜 준다.

'42일기' 카테고리의 다른 글

inception  (0) 2022.10.24
kqueue의 사용법  (0) 2022.07.23
ft_containers[Red-Black Tree]  (1) 2022.04.29
ft_containers[Map]  (0) 2022.04.26
CPP [템플릿]  (0) 2022.03.02

오늘은 7시에 일어났다.

얼마전부터 IRC 팀을 구해서 개포동 클러스터에 나가고 있다.

 

오늘은 시험을 보기위해 조금 일찍가서 머리에 기름칠을 하고 시험을 봤다.

내 코드가 아닌 카피코드를 쓰려니 이해는 했지만 오류가 난 부분을 찾지 못했다.

분명 다 되던것 같았는데...

그냥 내 코드를 만들어서 써야겠다.

간만에 C를 쓸라니까 고향에 온 것 같고 좋았다.

아니 사실 나는 고향이 지금 살던곳이라 좋고 말고할게 없었다.

그리고 C도 똑같았다.

 

오늘 IRC 이야기를 나눈것이 많이 없었다.

그 이유는 우리 모두가 잘 모르기 때문이다.

처음하는 과제에 평가도 해본적이 없다.

아무것도 없는 빈 깡통에 뭘 넣어야할지 몰라서 고민만 하는 꼴이었기 때문이다.

그래서 가장 큰 범주의 소켓 프로그래밍을 공부해서 다음날 아침에 이야기하기로 했다.

현재시간 6시 21분 이제 시작이다.

고!!! 2022-07-19(18:21)

'진짜 일기' 카테고리의 다른 글

2023.08.29  (0) 2023.08.29
7/23 일기  (0) 2022.07.23
7/13 일기  (0) 2022.07.13
7/12 일기  (0) 2022.07.12
7/11 일기  (0) 2022.07.12

오늘은 8시 반에 일어났다.

아침은 된장찌개와 감자전을 먹었다.

오늘은 하늘에 구멍이 뚫린 것처럼 비가 왔다.

요즘은 참았다가 한 번에 쏟아내는 비가 종종 내리는 것 같다.

 

오늘은 유튜브에서 베르의 게임 개발 유튜브라는 곳을 찾았다.

정말 쉽게 재밌게 잘 배울 수 있는 언리얼 엔진의 C++ 였던 것 같다.

물론 아직 언리얼 엔진 5의 내용으로 강의가 많은 것은 아니다.

하지만 언리얼 엔진 4의 몇몇 부분을 고쳐서 빌드하면 충분히 된다.

기본은 같고 추가된 느낌의 업그레이드이니까.

 

열심히 보고 공부하고 했는데 정리는 하지 않았다.

왜냐하면 지금까지 본 것들은 내가 생각하기에 너무나도 기본적인 것이라 언리얼을 사용할 때 무조건 해야 하는 작업 같았기 때문이다.

몸으로 익혀내는 공부는 내 전문이다.

학교 다닐 때도 이론보다는 문제를 풀어가며 이론을 배우는 것이 편했다.

그렇게 따지면 지금 프로젝트를 잡고서 해야 하는데 마땅히 생각난 프로젝트가 딱히 없다.

그리고 아직 기초를 바로 잡지도 못했고.

 

여튼간 오늘은 비가 너무 많이 와서 기분이 꿀꿀하다.

비 오는 날은 나한테 뭔가 좀 안 좋은 날이다.

게임으로 치면 디버프가 있는 것 같다.

알레르기도 심하게 올라오고 기분도 안 좋다.

 

나중에 취업해서는 비 오는 날 어떻게 출근할지 막막하다.

일단... 취업부터 해야겠지...? 2022-07-13(23:09)

'진짜 일기' 카테고리의 다른 글

7/23 일기  (0) 2022.07.23
7/19 일기  (0) 2022.07.19
7/12 일기  (0) 2022.07.12
7/11 일기  (0) 2022.07.12
7/10 일기  (0) 2022.07.10

오늘은 11시에 일어났다.

날이 별로 좋지 않아서 그런가 너무 졸려서 힘들었다.

오늘은 간단하게 점심을 먹고 싶어서 물만두를 먹었다.

 

하는 것 없이 오늘은 러셀 님의 마지막 강의와 언리얼 디벨로퍼에서의 첫 강의를 들었다.

근데 어제도 이상하다 느꼈지만 점점 속이 안 좋고 멍해지고 졸린 느낌이 들었다.

이거 혹시... 3D 멀미인가....

증상이 심해지길래 예전에 봤었던 웹툰을 봤다.

오랜만에 보니까 재밌었다.

 

쉬어도 증상은 계속되었다.

안 되겠으니까 일찍 자야겠다.

내일은 상태가 괜찮기를... 2022-07-12(23:01)

'진짜 일기' 카테고리의 다른 글

7/23 일기  (0) 2022.07.23
7/19 일기  (0) 2022.07.19
7/13 일기  (0) 2022.07.13
7/11 일기  (0) 2022.07.12
7/10 일기  (0) 2022.07.10

오늘은 8시 반에 일어났다.

약 한 달 전부터 왼쪽 턱이 아파서 치과에 갔었는데 치아 문제가 아니란다.

그래서 치과 간 김에 스케일링도 받고 왔다.

 

조금 지나면 괜찮아질 줄 알았는데 어제부터 식사가 버거워졌다.

집 근처 정형외과가 두 곳이 있었다.

가장 가까운 곳을 가보니 목 위로는 진료하지 않는다고 한다.

이 무슨 경우인지... 모르겠다 생각하고 다른 병원을 갔다.

이 병원은 다행히도 X-Ray도 찍고 진료는 받았다.

근데 이 의사도 자기는 목 아래의 뼈를 전문으로 하는 정형외과 의사라고 하신다.

 

그래도 친절하게 이야기해주시는걸 찬찬히 들어보았다.

가끔씩 나처럼 턱이 아픈 분들이 오셔서 본인이 알고 있는 성형외과 의사, 구강외과 의사분들이랑 이야기를 나눈다고 한다.

근데 보통은 소염제로 염증을 없애면 된다고 한다.

그래서 일주일치 약을 받아왔다.

사실 뼈에 문제가 있다고 하면 이 기회를 틈타 양악이라도 해볼까 했는데 아쉽게 됐다.

 

점심으로는 라면을 먹었다.

씹는 행위 자체가 아파서 면을 그냥 삼켰다.

김치도 없이 면을 그냥 삼키다 보니 문득 그런 생각이 들었다.

1차적으로 소화를 위해 음식물을 분해하는 구강에서 씹지 않아도 내 위는 커버할 수 있는 상태지 않을까?

뭐 그냥 그렇다고....

 

여하튼 저 튼 오늘은 '러셀과 함께하는 시작 해요 언리얼'강좌를 3주 차까지 보았다.

생각보다 많은 것들을 할 수 있게 만들어준 언리얼과 이것을 어떻게 다뤄야 할지 모르겠는 나는 화면 속에서 싸운다.

여러 가지 에셋을 지원해주는 것, 그런 에셋의 디테일함을 바꾸는 것, 여러 개를 만들 때 하나씩 하기 힘들기 때문에 불규칙적으로 뿌려주는 폴리지 등 신기한 디자인 작업들인 것 같다.

아직까지는 디자인적인 부분들만 만지는 작업들이라서 음... 그저 그렇다.

계속해서 공부해야 하는 부분들이 많기 때문에 꾸준히 공부할 것이다.

 

 

오늘 컴퓨터에 드디어 랜선을 꼽아줬다.

거실에 있던 메인 와이파이가 있었는데, 내 방에서 메인으로 인터넷을 뽑아서 라우터인지 스위치인지로 나눠준다.(써져있는 건 게이트웨이이다.)

뭐 확실히 빠르긴 하다.

시험 삼아 롤토체스를 몇 판 했는데 벗어나질 못했던 플레티넘 4에서 플레티넘 3으로 넘어가버렸다.

역시 운빨 X망 게임이다.

그렇게 띄우고 싶었던 용 3성이 연속판으로 2번이나 떠버리니까 기분은 좋았다.

근데 아마 내일 한두 판 돌리면 떨어질 것이다.

공부를 해야 하는데 롤체 전략 공부도 병행하고 있으니 참... 뭐하니 이놈아.

 

여하튼 오늘은 생각보다 많은 일들이 있었고 한건 없었다.

오늘보다 나은 내일이 되길... 2022-07-12(00:22)

'진짜 일기' 카테고리의 다른 글

7/23 일기  (0) 2022.07.23
7/19 일기  (0) 2022.07.19
7/13 일기  (0) 2022.07.13
7/12 일기  (0) 2022.07.12
7/10 일기  (0) 2022.07.10

오늘은 11시에 일어났다.

잡곡밥, 오이냉국, 두부조림, 달걀찜을 먹었다.

몸을 깨끗하게 씻고 평소같이 머리를 말리지 않았다.

축축한 머리 상태로 카누 3개를 뜯어 텀블러에 넣는다.

뜨거운 물로 녹이고 얼음 5개를 넣은 뒤, 재빨리 찬물을 들이 붇는다.

 

컴퓨터가 있는 책상에 앉는다.

처음으로 할 일은 어제 강의를 보면서 써 내려갔던 코드의 찾지 못했던 오류 해결

이 아니라 롤토체스 한판이다.

커피 한 잔하면서 머리를 돌리기에 적당하다.

졌다.

 

어제 찾지 못한 코드의 오류는 다행히도 대략 20분 만에 찾았다.

OpenGL의 강의를 유데미에서 찾아서 보고 있는데 상당히 새로웠다.

C++은 거들뿐?인건지 OpenGL의 기능들을 이용하여 여러 종류의 빛을 계산한다.

 

다음 강의를 한참 보다가 다른 짓을 하고 싶어 졌다.

C++정리, CS공부, 언리얼 엔진 강의 찾기 등을 생각했다.

컴퓨터 그래픽을 공부해보고 싶었는데 무엇을 해야 할지 아직도 감이 잘 안 온다.

일단 OpenGL도 C++도 언리얼 엔진도 공부할 생각이다.

 

수박 1/4통을 숟가락으로 퍼먹었다.

잘라서 먹는 거랑은 조금 다르다.

네모네모 수박은 조금 이상하다 생각이 든다.

수박은 동그란데 네모나게 먹지 말고 내가 먹고 싶은 모양으로 먹자.

 

언리얼 온라인 학습에서 흥미를 끈 강의가 생겼다.

언리얼 엔진을 사용하진 않지만 어떤 기능이 있고 어떻게 생겼는지 알려준다.

 

저녁은 비빔국수를 먹었다.

오늘 아침을 먹고서도 알레르기 때문에 살짝 힘들었다.

비빔국수를 먹으니 참을 수 없었다.

아무래도 생마늘에 알레르기가 있는것 같다.

2시간을 알레르기 때문에 허비했다.

 

다시 강의를 봤다.

신기하고 졸렸다.

 

하루하루 일기를 써볼까 하면서 첫 일기를 적어 내려 간다.

블로그는 일기인데 일기가 없는 느낌이었다.

이제라도... 2022-07-10(23:35)

'진짜 일기' 카테고리의 다른 글

7/23 일기  (0) 2022.07.23
7/19 일기  (0) 2022.07.19
7/13 일기  (0) 2022.07.13
7/12 일기  (0) 2022.07.12
7/11 일기  (0) 2022.07.12

개념 요약

  • 한가지 문제를 한번만 풀도록 만드는 알고리즘이다.
  • 문제를 여러번 풀어 반복하지 않도록 하여 실행시간을 줄여준다.
  • 규칙에 대한 점화식을 도출하여 푸는 방법이다.
  • Memoization : 한 번 계산된 결과를 저장해 두었다가 활용하는 방식으로 중복 계산을 줄이는 것.

 

Ex. 피보나치 수열

TOP-DOWN

int	fiboData[100] = {0, };

int	fibo(int n)
{
	if (n <= 2)
		return (1);
	if (fiboData[n] == 0)
		fiboData[n] = fibo(n - 1) + fibo(n - 2);
	return (fiboData[n]);
}

 

BOTTOM-UP

int	fiboData[100] = {0, };

int	fibo(int n)
{
	fiboData[0] = 0;
	fiboData[1] = 1;
	for (int i = 2; i <= n; ++i)
		fiboData[i] = fiboData[i - 1] + fiboData[i - 2];
	return (fiboData[n]);
}

'CS공부 > Algorithm' 카테고리의 다른 글

최소 공통 조상(Lowest Common Ancestor)  (0) 2022.06.30
최장 증가 수열(Longest Increasing Sequence)  (0) 2022.06.29
DFS & BFS  (0) 2022.06.29
해시 테이블(Hash Table)  (0) 2022.06.23
이분 탐색(Binary Search)  (0) 2022.06.22

+ Recent posts