렌더링 파이프라인 (Rendering Pipeline) 파이프라인의 모든 단계는 Direct3D API를 사용하여 구성할 수 있으며, HLSL 언어를 사용하여 프로그래밍 가능하다. 일반적으로 VS(Vertex Shader)단계와 PS(Pixel Shader)단계에서 사용된다. 1. 입력 어셈블러 (Input Assembler) 메모리에 사용자가 채워놓은 기본데이터(삼각형, 선, 점)를 다른 파이프라인 단계에서 사용하기 위한 기본 형식으로 조립하는 단계 2. 꼭지점 셰이더 (Vertex Shader) 변환(Transformation), 스키닝(Skinning), 조명(Vertex Lighting) 등의 작업을 수행한다. 이중 변환 작업 과정에 대해 좀더 설명하자면, [오브젝트 공간] -> 월드 변환 -> ..
절차지향과 객체지향 절차 지향 프로그래밍 (Procedure Programming) Top-Down 방식으로 접근하며 순차적인 처리가 중요시 되어 프로그램이 전체적으로 연결되도록 만드는 프로그래밍 기법이다. 대표적인 절차지향 언어는 C언어가 있다. 함수로 부터 데이터를 받아서 기능을 구현하는 방식으로 진행된다. 절차적 프로그래밍 이라는 말이 더 정확하다. 코드의 가독성이 좋고, 실행속도가 빠르다는 장점이 있지만, 유지보수 및 디버깅이 어렵다. 객체지향 프로그래밍 (Object Oriented Programming) Bottom-Up 방식으로 접근하며, 데이터와 절차를 하나의 덩어리(Object)로 묶어서 처리한다. 모듈화 및 캡슐화로 유지보수에 용이하며, 코드의 재사용성이 높다. 처리속도가 상대적으로 느..
알고리즘 정렬 알고리즘 (Sorting Algorithm) [ Bubble Sort, Heap Sort, Merge Sort, Quick Sort, Insert Sort ] Bubble Sort 서로 인접해 있는 두 원소를 비교하며 정렬하는 알고리즘이다. 0번 인덱스 부터 n-1번 인덱스까지 모든 인덱스를 비교하면 정렬 시간복잡도는 O(n^2) Heap Sort 데이터를 바이너리 힙 자료구조에 담아서 최대값이나 최소값부터 하나씩 꺼내서 정렬하는 알고리즘이다. 시간 복잡도는 O(nlogn) Merge Sort Divide and conquer 의 원리로 원소 한개씩 나누어 결합(Combine) 과정에서 원소끼리 비교후 정렬되어 임시 배열에 저장하고, 정렬이 다되면 임시배열을 복사하여 결과 목록을 만든다. ..
Rest Api 문서화를 위한 Spring Boot Swagger 2 설정하기 1. swagger dependency 추가 Maven 설정 io.springfox springfox-swagger2 3.0.0 io.springfox springfox-swagger-ui 2.9.2 Gradle 설정 implementation group: 'io.springfox', name: 'springfox-swagger2', version: '3.0.0' implementation group: 'io.springfox', name: 'springfox-swagger-ui', version: '2.9.2' 2. config 설정 @Configuration @EnableSwagger2 public class Swagger..
Spring Boot+JPA+MariaDB 시작하기 Spring Boot + JPA + mariaDB 조합 프로젝트 설정을 정리하고자 한다. https://start.spring.io/ 에서 dependency를 추가하여 프로젝트를 생성한 뒤 적절하게 DB 및 logging 설정을 입력하자. 1. mariaDB 설치 docker로 mariadb 설치하기 를 참고해서 mariaDB를 설치하거나 설치 파일을 이용하여 직접 mariaDB 를 설치한다. 2. Dependencies 를 빌드 명세에 추가하기 Maven, Gradle 둘 중 무엇을 사용해도 상관없으며 jpa, mariaDB 의존성을 추가하면 된다. MariaDB Java Client 는 최신 버전을 조회하여 추가하였다. https://mvnrepo..
Git 커밋 메시지 컨벤션 1. Git Commit Message Convention이란 팀 협업을 위해 Git commit message 의 규칙을 정해두는 것이다. git의 커밋 히스토리를 읽는것 만으로도 변경사항을 이해할 수 있도록 commit message를 남기는 것이 중요하다. 여러 글을 읽어보았는데 개인적으로는 Angular 의 Git 커밋 컨벤션이 가장 깔끔하다고 생각되어 이에 따라 commit message 를 기록하고자 한다. 커밋 메시지 예제는 angular commit 이력을 통해 확인해보자. 2. Commit message 구조 커밋 메시지는 빈 줄로 구분된 세 부분으로 구성된다. 이 때 커밋 메시지의 제목만 필수값이며 본문과 꼬리말은 optional 입력이다. (): Type 커..
컴퓨터 포맷 후 개발 환경 설치가 막막한 나의 여린 영혼을 위해 정리해두고자 한다. 아래 프로그램들은 필자의 취향대로 생각 없이 설치함. - 개발 환경 : Windows 10, Backend 는 Spring, Front 는 Angular, 버전 관리는 git 1. IDE Intellij https://www.jetbrains.com/ko-kr/idea/ 회사에서는 Ultimate 버전을 쓰지만 집에서는 Community 써도 충분하다. Visual Studio Code https://code.visualstudio.com/download Frontend 개발 및 마크다운 문서 작성용으로 사용한다. 회사에서 Webstorm을 쓸 수 있지만 집에서는 어차피 VS code 밖에 쓰지 못함으로 나는 어디서나 V..
Docker 컨테이너 bin/bash에 vim 설치 Install Vim on Docker Container docker 컨테이너에서 vi 로 파일를 수정하려고 했으나 vi가 동작 하지 않고 아래와 같은 애러가 발생하였다. /bin/sh: 38: vi: not found 아래 명령어를 순서대로 실행하여 vim, nano 를 설치하자. apt-get update apt-get install vim nano 이제 vi 로 파일 수정이 가능하다. 참고 https://stackoverflow.com/questions/30853247/how-do-i-edit-a-file-after-i-shell-to-a-docker-container https://www.configserverfirewall.com/docker/..
Docker 로 MariaDB 설치하기 1. Docker image 로 MariaDB 설치하기 Docker image 내려받기 docker pull mariadb 이미지를 내려 받은 후 아래 명령어로 확인 가능하다. docker images MariaDB container 생성 docker run -p 3306:3306 --name my-mariadb -e MARIADB_ROOT_PASSWORD=admin -d mariadb -- name : my-mariadb 라는 컨테이너 이름을 부여한다. -p 3306:3306 : host port number:container port number -e : -e는 환경 변수 옵션이다. -e MARIADB_ROOT_PASSWORD=admin : 비밀번호를 지정 -d..