miniRT 이 프로젝트는 Raytracing의 아름다운 세계를 소개한다. 완료된다면 간단한 Computer-General-Images를 렌더링할 수 있고 다시는 수학 공식을 구현하는 것을 두려워하지 않을 것이다. Chapter 1 Introduction 3차원의 컴퓨터 생성 이미지를 렌더링할 때 가능한 접근 방식은 두 가지가 있다: 효율성 때문에 거의 모든 그래픽 엔진에서 사용하는 Rasterization과 Ray Tracing이다. 1968년에 처음 개발되었던 Ray Tracing은 오늘날에도 Rasterizaion보다 계산 비용이 더 많이 든다. 결과적으로, 아직 실시간 사용 사례에 완전히 적용되지는 않았지만 훨씬 더 높은 수준의 시각적 사실성을 생성한다. 이 그림들은 레이트레이싱 기술로 렌더링된다..
Chapter 1 Introduce 4서클 과제 중 Netpractice라는 과제를 마주했다. 주변에서 들리는 소문에 의하면 빡세게 한다면 2~3일 정도면 충분하다는 말을 듣고 호기롭게 도전해보았으나... 아차차.. 내가 네트워크에 대해 아무것도 모르고 있었다는 것을 다시금 깨닫게 되었다. 과제를 등록하면, 첨부파일이 하나 있는데 압축해제해서 index.html을 실행하면 다음과 같은 화면들이 나온다. 도대체 이게 무엇인가... 싶었다. 보아하니 연결을 하라고는 하는데, ip 주소에 대한 기본적인 이해가 없어서 어떤식으로 풀어야하는지 잘 몰랐다. 그래서 네트워크에 대한 기초 개념을 ip주소에 관한 내용들 위주로 먼저 정리했다. Chapter2 Network 네트워크? 인터넷? 먼저, 컴퓨터 네트워크라고하..
Chapter 1 Foreword 우리는 간단한 2D게임을 mlx라이브러리를 활용하여 만들어야 한다. 2D게임을 만들기 위해선, 맵 타일, 타일셋, 스프라이트, 스프라이트 시트 등이 필요하다. 이곳에 그런게 있으니 참고하면 좋다. 다른 픽셀아트 사이트도 둘러보길 바란다. Chapter 2 Goals so_long을 통해 그래픽 디자인 프로젝트를 해볼 수 있고, 창 띄우기, 색상, 이벤트 설정하기, 모양 채우기 등과 같은 분야에서 능력이 향상 될 것이다. Chapter 3 Common Instructions mlx 라이브러리에 대해 알아야한다. so_long에서 주로 사용하는 mlx라이브러리 함수는 다음과 같다. mlx_init mlx_new_window mlx_xpm_file_to_image mlx_pu..
Chapter 1 Introduction push_swap 과제는 정렬해야하는 int값들과 두개의 스택, 스택을 조작하는 명령어 집합이 주어진다. 이 때, 최소한의 명령어들을 이용하여 int형 인자들을 정렬하는 방법을 계산하고, 사용된 명령어들을 표준 출력해야 한다. Chapter 2 정렬 알고리즘을 사용하면 복잡도라는 개념을 마주하게 된다. 여기서 복잡도란 문제를 해결하는데 걸리는 시간과 입력의 함수 관계를 가리킨다. 알고리즘에서의 시간복잡도는 주로 빅-오(Big-O) 표기법을 사용하는데, 이 표기법은 낮은 차수의 항을 제외시키는 방법이다. 예를 들면 크기 n의 모든 입력에 대한 알고리즘에 필요한 시간이 최대 5n^3 + 3n이라면 이 알고리즘의 시간복잡도는 O(n^3)이라고 할 수 있다. 시간복잡도는..
Chapter 1 Introduction philosopher를 저번달에 끝낸 후, 벌써 한달 반이 지났다. 그 시간 동안 많은 일들이 있었는데.. 그것은... 어찌됐든.. 저걸 하면서 짬짬히 미니쉘을 진행했다. 다행인지 불행인지 같이 하기로 한 팀원이 2서클이어서 기한에 대한 압박없이 진행할 수 있었다. 미니쉘 과제는 흔히 사용하는 터미널 쉘을 만드는 것이다. 자세히 말하자면.. bash라는 쉘을 만들게 된다. 쉘은 사용자와 커널 사이에서 명령어들을 해석해 전달하는 명령어 해석기 기능을 수행하며, 많은 종류의 쉘이 존재한다. 그 중에서도 bash shell은 리눅스나 맥 OS에서 쓰이는 만큼 여러 방면에서 광범위하게 사용되고 있다. bash라는 명령어를 통해 bash shell을 실행해보면 저런식으로 ..
Preview 저번 미니쉘을 끝으로 42서울의 과제 중 반정도를 끝냈다고 할 수 있을 것이다. 이제부터는 c++을 사용할 수 있고, norminette를 신경쓰지 않고 코딩을 할 수 있게 되었다 !! 잘가라 norminette, 어서와라 삼항연산자, tab_size: 2, camel case 등등... ㅎㅎ 이무쪼록 현재 42에서 points sale이 시작하기도 했고 평가도 잘 잡힌다고 하니... 여러모로 c++을 하기 제일 좋은 시기가 아닐까 싶었다. c++ 왕초보인 나한테는 더더욱 평가를 받기 수월한 시기이기에 너무 좋았다. 그럼 00부터 시작 ! Chapter 1 Introduction 이 과제는 내가 걸어가야할 C++이라는 여행길에 시작점에 객체지향프로그래밍이 어떤건지를 설명해주는것이 목적이라고..
Chapter 1 Goals 이 프로젝트는 당신의 콜렉션(아마 라이브러리)에 아주 편리한 함수를 추가하게 할 뿐만 아니라, C 프로그래밍에 있어서 아주 흥미롭고 새로운 개념인 '정적 변수'를 배울 수 있도록 도울 것입니다. 정적 변수(Static Variable) 정적변수는 함수 내부에서도 사용 가능하고, 전역에서도 사용 가능하다. 정적변수는 초기화해주지 않아도 0으로 초기화 된다. 내부에서 선언한 정적변수는 함수를 여러번 호출해도 한번만 초기화된다. Chapter 2 Common Instructions makefile은 만들 필요가 없다. 메모리 누수를 신경 써야 한다. 보너스 파트를 linked-list로 할 것이라면 더더욱. Chapter 3 Mandatory part 함수 이름 get_next_l..
Mandatory part 서버 설정 운영체제 Debian 운영체제 시작 시 AppArmor 또한 구동되어야 함. Debian vs CentOS 패키지와 패키지 포멧이 다름 (debian : DEB(패키지 포멧), DPKG, API(패키지) / centOS : RPM(패키지 포멧), YUM, DNF(패키지)) 커널운영체제가 수행하는 모든 것이 저장 되어 있음 하드웨어의 모든 주요 기능을 제어함 운영체제의 주요 구성 요소 LVM을 이용한 최소 2개의 암호화된 파티션 생성 LVM(Logical Volume Manager)은 하나의 디스크를 논리적으로 나누어 사용하거나, 여러개의 디스크를 논리적으로 묶어서 사용하는 등, 리눅스에서 디스크를 효율적으로 관리하기 위한 방법. LVM에는 크게 PV, PE, VG, ..
나만의 라이브러리 만들기 향후 42seoul 본과정에서 계속 쓰일 함수들을 만들고, 모듈화 시켜서 지속적으로 사용하게 된다. 모든것을 자기 손으로 직접 만들어보라는 42의 뜻이지 않을까 싶다. 웬만한 것들은 라피신 기간동안 했던 것들이나, 조금씩 달라지거나 아예 처음 만들어야하는 함수들도 있었다. 그것들 위주로 소개해보려 한다. 0. Makefile Makefile은 프로그램을 관리하는 프로그램이고 특정 프로그램의 일정 부분이 수정되어 다시 컴파일이 필요할 경우, 간편하게 해주는 프로그램이다. libft 과제의 경우, libft.a라는 정적 라이브러리를 만들 때 Makefile이 필요하다고 한다. 라이브러리를 만들기 위해서는 목적파일들이 있어야하고, 이 목적 파일들을 하나로 묶어주는 작업이 필요하다. 우..