-
Escape Hospital 포트폴리오 영상
Escape Hospital 포트폴리오 영상 자세한 내용은 Github를 확인해주세요!! https://github.com/Reitbe/Escape-Hospital 포트폴리오 영상 개요 Unity 3D를 사용한 PC 기반의 1인칭 생존 호러 게임 플레이어 임의의 맵 구조 변경 시스템(벽뜯... Read More
-
Explosion 포트폴리오 영상
자세한 내용은 Github를 확인해주세요!! https://github.com/Reitbe/Explosion 개별 기능에 대한 개발 내용은 블로그에 천천히 업로드할 예정입니다. 포트폴리오 영상 개요 Unreal Engine 5를 사용한 PC(Windows) 기반 3인칭 멀티플레이 슈팅 게임... Read More
-
폭탄 오브젝트 풀링
개요 폭탄을 던질 때마다 새로운 폭탄을 생성하는 기존의 방식에서, 미리 생성해둔 폭탄을 사용하는 오브젝트 풀링 방식으로 변경한다. 이를 통해 생성 및 소멸에서 발생하는 코스트를 낮추고자 한다. 1) 구조 설계 동작 관계 폭탄 매니저 캐릭터 베이스에 장착된 ActorCompone... Read More
-
조준 및 던지기 동작 리플리케이션
개요 기존의 조준, 던지기 동작을 멀티플레이어 환경에서도 사용할 수 있게 구조를 변경했다. 멀티플레이는 리슨 서버를 사용했으며, 프로퍼티 리플리케이션과 RPC를 활용해 기능을 구현했다. 1) 조준 RPC 사용 게임 도중에 유저가 들어왔을 때, 기존 유저의 조준 동작 여부를 확실히 알 수 있어야 한다. 따라서... Read More
-
메시 스페이스 회전 블랜딩 vs 로컬 스페이스 회전 블랜딩
개요 상체에는 몽타주를, 하체에는 기본 애니메이션을 적용하고자 Layered blend per bone 노드를 사용했다. 적용된 모습을 보니 뭔가 엉거주춤하다! 그 원인과 해결법을 알아보자. Layered blend per bone 특정 본을 기준으로 두 개의 포즈를 블랜딩하는 노드이다. 노드의 디테일 패널에서 해... Read More
-
애니메이션 좌우 반전
애니메이션 좌우 반전 대분류: Animation 상태: 성공 작업 기간: 2024/04/29 최종 편집: 2024년 5월 19일 오전 12:35 개요 대부분의 슈팅게임은 캐릭터를 중심에서 조금 왼쪽에 두고 오른쪽을 비워둔다. 나 또한 그럴 예정이었으나, 폭탄을 던지는 애니메이션이 왼손을 사용한다는 ... Read More
-
부드러운 줌-아웃 기능 제작
개요 일반 상태와 조준 상태를 구분하여 TPS뷰-숄더뷰를 전환한다. 1) 소켓 오프셋 vs 타깃 오프셋 스프링암 SocketOffset & TargetOffset 스프링암과 카메라 컴포넌트를 캐릭터에 추가한 이후 캐릭터 BP를 열어보면 원점을 촬영하고 있는걸 볼 수 있다. 이대로는 캐릭터가 폭탄... Read More
-
몽타주와 애님 노티파이를 사용한 조준 및 던지기
개요 캐릭터는 마우스 우클릭을 통해 조준을, 좌클릭을 통해 던지는 동작을 수행한다. 던지는 동작 수행 중에는 조준 설정/해제가 불가능하다. 조준 시간에 따라 차징이 가능하다. 차징 정도에 따라 던지는 거리에 가중치가 곱해진다. AnimNotify를 사용하여 몽타주 재생이 끝날 때 지정 함수... Read More
-
캐릭터에 폭탄 부착/분리하기
개요 캐릭터의 손에 소켓을 장착하고, 그곳에 폭탄을 부착 / 분리하는 과정을 소개한다. 1) 소켓 소켓을 사용하는 이유 플레이어는 게임 시작과 함께 폭탄을 리로드한다. 이 때, 폭탄은 플레이어의 손에 부착되어 움직인다. 플레이어가 폭탄을 던지면 타이밍에 맞추어 손에서 분리, 발사된다. 폭탄은 USta... Read More
-
AimOffset 적용하기
개요 캐릭터에 에임 오프셋을 적용하여 바라보는 방향을 조준하도록 설정한다. 에임 오프셋 적용 시 주의사항 Unreal Engine 에임 오프셋 페이지에 따르면 에임 오프셋 제작 시 좌우 모션 적용에 신경써야 한다. 캐릭터의 Yaw 회전을 어떻게 처리하냐에 따라서 에임 오프셋 구성이 달라지기 때문이다. 캐릭... Read More
-
슈팅 게임에 맞게 애니메이션 재구성하기
개요 기존에 사용하던 애니메이션 구성은 슈팅게임에 적합하지 않았다. 앞으로 이동하는 애니메이션과 이동 방향으로의 캐릭터 회전을 통해 움직임을 나타냈기 때문이다. 이 구성에서는 캐릭터가 플레이어를 마주보고 폭탄을 던지는 일 마저 발생했다. 그렇기에 일반적인 TPS 슈팅게임의 애니메이션 구조로 변경하고자 한... Read More
-
TPS 템플릿 기반의 애니메이션 블루프린트 제작
개요 Unreal Engine 5.3의 TPS 템플릿을 참고하여 애니메이션 블루프린트를 만들어본다. 게임 진행에 필요한 기타 동작들은 나중에 추가하고, 우선 이동과 점프 애니메이션을 적용하는 것이 목표이다. 본문에서 애니메이션 블루프린트는 ABP로 칭한다. 사전 준비 캐릭터 설정 TPS 템플릿의 ... Read More
-
Unreal Engine 5.3, 5.4버전 애니메이션 리타겟팅
0. 목표 Unreal Engine 5.3, 5.4의 리타겟팅을 기능 사용해보기. 애니메이션이 없는 LowPoly 에셋을 타겟으로, 소스인 Mannequins와 Paragon-Drongo의 애니에이션을 리타겟팅하기. 리타겟팅이 없이 애니메이션을 적용하면 어떻게 되는가? T 포즈만 취하고 있던 ... Read More
-
UnrealEngine5 TPS 템플릿 캐릭터 & 카메라 분석
개요 여러 프로젝트를 참고하여 향상된 입력 시스템을 사용한 캐릭터 이동을 제작 중이었다. 그러나 마우스 상하 움직임이 작동하지 않는 문제, 부자연스러운 카메라 이동 등이 발생하였기에 Unreal Engine 5에서 제공하는 TPS 템플릿을 분석하여 이를 해결하고자 한다. 플레이어 컨트롤러와 폰 플... Read More
-
향상된 입력(Enhanced Input)을 사용한 캐릭터 움직임
Enhanced Input 언리얼 엔진은 5.1버전부터 향상된 입력(Enhanced Input)을 기본 입력으로 사용한다. 자세한 내용은 공식문서 참고. 이 향상된 입력을 사용하여 캐릭터 움직임을 만들어보고자 한다. IA, IMC 생성 BluePrint TPS의 기본에 해당하는 3가지 동작을 만들 것... Read More
-
캐릭터에 카메라 & 스프링암 추가하기
목표 캐릭터 클래스에 스프링암과 카메라 컴포넌트를 추가한다. 인게임에서 플레이어 이동을 3인칭으로 관찰하는 것이 목표 DefaultCharacter.h // Camera Section protected: UPROPERTY(VisibleAnywhere, Category = "Camera")... Read More
-
이득우의 언리얼 프로그래밍 Part3 간단 정리
이득우의 언리얼 프로그래밍 Part3 - 네트웍 멀티플레이 프레임웍의 이해 정리 요약 0. 학습 목록 서버와 클라이언트 같은 네트워크 모드에 대한 학습. 클라와 서버 접속 테스트 및 소유권에 따른 동작 학습 리플리케이션과 RPC - 연관성, 오너십, 빈도 조정을 학습. 캐릭터 무브먼... Read More
-
Visual Studio 중괄호 줄바꿈
개요 편집기 서식 지정 옵션 - MS Learn 언리얼 컨벤션은 중괄호를 입력할 때 새 줄로 넘기는 방식인 반면에 VS 기본 설정은 해당 줄을 그대로 사용하는 방식이다. 매 번 수동으로 줄을 바꾸고 싶지 않다면 미리 설정해두자. void A(){ // VS기본 - 해당 줄 그대로 사... Read More
-
언리얼 엔진 환경설정파일(ini) 사용법
환경설정 파일 개요 설정 파일에 대한 표준. 확장자가 .ini이다. 구조 매개변수는 등호로 구분 이름 = 값. 값은 비워둘 수 있다. 섹션은 괄호로 구분 [섹션1] 주석은 세미콜론으로 구분 ; 주석 언리얼에서의 환경설정 파일 개요 ... Read More
-
Github Copilot & Chat 간단한 사용법
💡 설치에 관한 정보가 아니다! 사용법에 대한 정리이다. Copilot Chat 개요 Github Copilot의 확장이다. Copilot을 설치하고 추가로 Chat을 설치. 코드 설명 / 질의 응답 / 구체화 / 단위테스트 / 프로파일링 / 디버깅 가능 인라인 / 채팅 모드 사용 가능. ... Read More
-
연속 행렬 곱셈 알고리즘
포스팅 이유 책의 설명은 이해가 잘 되지 않고, 블로그 설명은 책의 내용을 그대로 옮겨놓은 것들이 많았기 때문에 따로 정리하였다. 책이나 다른 사이트에서 “연속 행렬 곱셈” 글을 중심으로 학습하되, 내용을 이해하는데 도움이 되었으면 좋겠다. 연속 행렬 곱셈 행렬의 곱셈은 곱하는 순서에 따라서 전체 연산 횟수에 차이가 발생한... Read More
-
GPU에서의 그래픽스 파이프라인
GPU 파이프라인 GPU 파이프라인 개요 앞서 설명한 그래픽 렌더링 파이프라인 단계를 보다 세부적으로 나누어본다. 아래 순서대로 정리. 버텍스 셰이더 - 프로그래밍 가능 테셀레이션 - 프로그래밍 가능, 선택적 지오메트리 셰이더 - 프로그래밍 가능, 선택적 클리핑 - 고정 함수 하드웨어 화면 매핑 ... Read More
-
GPU의 데이터 병렬 아키텍처
그래픽 처리 장치가 필요한가? 어차피 같은 연산을 매우 자주 반복하는 것이기 때문에 해당 기능을 담당하는 전용 하드웨어를 사용하면 성능 향상의 효과가 있다. 이전의 GPU가 이러한 단순 기능을 고정한 파이프라인이었다면, 최근의 GPU는 프로그래밍 가능성과 확장성을 지향한다. 데이터 병렬 아키텍처 데이터 검색을 기다림으로... Read More
-
그래픽스 파이프라인 요약 정리
파이프라인? 주된 기능은 가상카메라, 3차원 오브젝트, 광원 등을 생성하거나 렌더링 하는 것. 렌더링의 기본 도구이다. 렌더링 되는 오브젝트는 머티리얼, 광원, 텍스처, 음영 방정식에 영향을 받는다. 아키텍처 파이프라인의 구조. 파이프라인의 각 단계는 병렬로 구성되며, 이전 단계 결과에 영향을 받는다. 병렬이... Read More
-
유튜브 영상을 첨부한 포스팅 테스트
유튜브 영상 테스트 블로그 재활성화를 위한 사전 테스트. Notion에서 유튜브 영상을 사용한 문서를 작성하고, 이를 업로드하면 어떻게 나오는가? 임베드 북마크 사용하면 안되는 부호가 존재하는가? ... Read More
-
C++) delete와 delete[]의 차이점
delete와 delete[]의 차이점 이 선배님께서 정말 잘 정리해 주셨다! 개요 int* p = new int[5]; delete p; delete[] p; 위의 delete와 delete[]는 차이가 존재하는가? → 존재한다 new를 사용하여 메모리 할당 시, 배열의 크기 정보를 저장하기 위하여 내부적으로 4바이트 만큼 메모리를 더 할당... Read More
-
C++) null과 nullptr의 차이점
null 과 nullptr의 차이점 null null은 상수로 널포인터를 표현하며, 0과 의미가 같았다. 함수를 사용함에 있어서, 널포인터의 의미로 사용했지만 정수로 인식이 되는 문제가 발생하는 것이다. nullptr 그래서 nullptr이 생겼다. 널포인터와 정수의미가 구분되었기에 위와 같은 문제가 발생하지 않는다. 테스트 void ... Read More
-
static 링크
11장 - static 링크 1) static 링크 C++은 코드를 소스 파일 단위로 컴파일 해서 그 결과로 나온 오브젝트 파일들을 링크 단계에서 연결한다. 이 때 링크 방식에는 외부링크와 내부링크(정적링크)가 있다. 외부 링크로 연결되면 다른 소스파일에서 이름을 사용할 수 있고, 내부 링크로 연결되면 같은 파일에서만 사용 가능하다. 함수... Read More
-
const
11장 - const 1) const란? 상수를 의미하는 ‘constant’의 줄임말로, 변경해서는 아뇌는 대상을 선언할 때 사용한다. 2) const 변수와 매개변수 const는 전역변수, 클래스 멤버 등 모든 종류의 변수에 붙일 수 있다. 포인터에도 붙일 수 있는데, 포인터 자체에 붙일 것인지 포인터가 가리키는 값에 붙일 것인지 ... Read More
-
레퍼런스
11장 - 레퍼런스 1) 레퍼런스란? 변수에 대한 일종의 별칭(alias)이다. 변수의 주소를 가져오거나 변수에 대한 역참조 연산을 수행하는 특수 포인터라고 할 수도 있다. 기호는 &이다. int x = 3 int& xRef = x; int& unRef1 = 5; /... Read More
-
두 종류의 생성자
9장 - 두 종류의 생성자 1) 이니셜라이저 리스트 생성자 std::initializer_list를 첫 번째 매개변수로 받고, 다른 매개변수는 없거나 디폴드 값을 가진 매개변수를 추가로 받는 생성자를 말한다. initializer_list는 짝수 개의 원소를 가져야한다. class Fruit{ public: Fruit(initi... Read More
-
흔히 발생하는 메모리 문제
7장 - 흔히 발생하는 메모리 문제 1) 스트링 과소 할당 문제 C 스타일 스트링이 들어갈 공간을 할당할 때, 스트링의 끝을 나타내는 \0이 들어갈 공간을 빼먹을 경우에 발생한다. 해결법 C++스타일 string 사용 버퍼를 전역변수나 스택 변수 말고 힙 공간에 할당 2) 메모리 경계 침범 스트... Read More
-
포인터
7장 - 포인터 1) 포인터란 포인터(*)는 다른 변수, 혹은 그 변수의 메모리 공간주소를 가리키는 변수를 말한다. 또한 포인터가 가리키는 값을 가져오는 것을 역참조라고 한다. &연산자를 통해 특정 메모리의 주소를 얻을 수도 있다. 2) 포인터 타입 캐스팅 포인터는 주소를 저장하고 있기에 정수 포인터나 다른 포인터나 그 크... Read More
-
배열
7장 - 배열 1) 배열이란? 서로 타입이 같은 원소들을 변수 하나에 담아서 인덱스로 접근하게 해주는 것. 스택영역이나 힙 영역에 배열을 만들 수 있다. 2) 스택 배열 int i; int myArray[5]; //int myArray[i] <- 불가능 배열의 크기는 컴파일 시간에 결정되기 때문에 상수값으로 설정해야 한다. 3)... Read More
-
동적 메모리 다루기
7장 - 동적 메모리 다루기 1) 동적 메모리 다루기 요즘 프로그래밍 언어들은 자동으로 메모리 관리를 해주는 기능이 있지만, 그래도 동적으로 메모리를 다루는 법을 아는 것과 모르는 것은 차이가 크다. 그러니 알아두도록 하자. 메모리의 4개 구역인 코드, 데이터, 힙, 스택에 관한 내용은 따로 포스팅 하겠다. 우선은 힙과 스택만 구별해... Read More
-
C++의 std::string 클래스
2장 - C++ std::string 클래스 1) string 클래스란 앞서 소개한 cstring의 함수와 기능은 비슷하지만, 메모리 할당 작업을 처리해주는 기능이 추가된 클래스이다. std 네임스페이스에 속한다. C 스타일 스트링은 뭐가 문제였을까? 장점 간단함 - 내부적으로 기본 문자 타입과 배열 구... Read More
-
C에서의 string, string literal
2장 - C에서의 스트링, 스트링 리터럴 1) C에서의 string C에서는 string을 부가적인 기능으로 취급했으며, 문자 배열의 마지막에 널(NULL이 아니다! NUL) 문자 \0을 붙여서 스트링이 끝나는 것을 표현했다. 이런 방식으로 hello를 표현하려면, h, e, l, l, o, \0 이렇게 여섯 개 만큼의 공... Read More
-
1장 - C++ 기본 소개 - 2
1장 - C++기본 소개 - 2 1) 함수 C++ 에서 함수를 사용하려면 반드시 사용하려는 위치보다 앞에서 선언해야 한다. 그리고 다른 모듈이나 파일에서도 함수를 사용하려면, 헤더파일에 함수를 선언하고 소스파일에 이를 구현해야 한다. 함수 헤더 = 함수 원형 = 함수 프로토타입 함수는 void myAction(int a){ /*…... Read More
-
1장 - C++ 기본 소개 - 1
1장 - C++기본 소개 - 1 1) 전처리 지시자 C++ 프로그램 빌드는 3단계를 거친다. 전처리 - 소스코드 메타 정보 처리 컴파일 - 소스코드를 머신이 읽을 수 있는 오브젝트 파일로 변환 링크 - 앞서 변환한 오브젝트 파일들을 애플리케이션으로 엮음 전처리 지시자는 #문자로 시작한다. #include ... Read More
-
git commit message 작성법
커밋 메세지 컨벤션 좋은 커밋 메시지는 미래의 자신이나 동료에게 변경사항을 명확히 전달할 수 있어야 한다. 간결하고 읽기 쉬운 커밋 메세지 작성법을 알아보자. 1. 커밋 메세지 구조 Type: Subject Body Footer 3단계로 구성되며, 각 단계는 빈 줄로 구분된다. 2. 커밋 타입 태그 : 제목... Read More
-
커리어스킬 - 완벽한 개발자 인생 로드맵 도서 요약 - 1
커리어 스킬 : 완벽한 개발자 인생 로드맵 - 1 저자 - 존 손메즈 출판 - 길벗 출간 - 2019.04.10 서평 완벽한 개발자 인생 로드맵이라는 부제목답게, 개발자의 시작하기부터 입사, 경력 쌓기, 소프트스킬까지 모든 것을 다루고있다. 각 부분은 개별적인 내용을 다루고 있으므로, 필요한 부분만 골라 읽기... Read More
-
윈도우 클리핑
8. 윈도우 클리핑 윈도우 클리핑이란? 화면상에 표현할 내용만을 표현하고, 겹치거나 잘려나가는 내용은 표현하지 않는 것을 의미한다. 위의 이미지와 같이 여러 창이 띄워져 있을 때, 겹쳐진 부분은 어떻게 디스플레이 하지 않을 수 있을까? Line Clipping MIN, MAX 범위로 나타낼 수 있는 창... Read More
-
좌표계 변환
7. 좌표계 변환 좌표계의 종류 위의 이미지는 3차원 공간을 2차원 화면으로 변환하는 과정을 나타낸다. 4→5번은 뷰포트 변환의 내용이므로 다음에 다루고, 우선은 나머지 좌표계 사이의 변환을 알아보자. 변환에 사용되는 좌표계는 아래와 같다. 모델좌표계(=지역좌표계, Model Coordinate Syst... Read More
-
기하 변환
6. 기하 변환 2차원 변환 x, y값으로 이루어진 2차원 좌표계에서의 변환을 다룬다. 평행이동(Translation) 크기변환(Scaling) 회전(Rotation) 비틀림(Shear) 평행이동 위쪽의 그림은 일반적으로 표현한 평행이동이다. 기존 좌표(x, y)에 각각 변화량을 더하여... Read More
-
동차좌표계
5. 동차좌표계 3차원 물체의 표현 3차원 물체는 곡면으로 이루어져있으며, 이 곡면은 수많은 평면 다각형으로 구성되어있다. 이 평면 다각형을 메시(Mesh), 표면 메시(Surface Mesh) 등으로 부르는데, 보통은 삼각형을 사용한다. 렌더링은 두 종류로 나뉜다. 솔리드 렌더링 → 메시에 조명을 가하여 표... Read More
-
Bresenham 알고리즘으로 타원 그리기
4. Bresenham 알고리즘으로 타원 그리기 타원은 어떻게 그릴까 타원 또한 원처럼 2차식이다. 앞에서 원을 그려보았다면 비교적 수월하게 가능하다. 타원과 원의 차이점은 1/8원을 그려서 평행이동이 불가능하다는 것이다. 그러나 타원의 한 쪽 사분면을 절반으로 나누고, 각각의 부분을 평행이동 한다면 타원을 그릴 수 있다. 경계를 기준으로 윗부분은 Regi... Read More
-
Bresenham 알고리즘으로 원 그리기
3. Bresenham 알고리즘으로 원 그리기 원은 어떻게 그릴까 직선이야 기울기가 일정하니 시작점부터 끝점까지 쭉쭉 이어나가면 된다지만, 원은 기울기가 끊임없이 변하지 않는가? 직선과는 방식이 조금 다르다. 원을 8등분하여 한 조각에 해당하는 부분만 연산한 다음, 이에 대칭되는 점들만 찍는 일을 반복하면 된다. #의사코드 plot8(... Read More
-
DDA와 Bresenham algorithm으로 직선 그리기
2. DDA와 Bresenham algorithm으로 직선 그리기 Line이란? 두 점 p1(x1,y1), p2(x2,y2)를 잇는 직선이다. 현실에서는 그냥 똑바로 연결하면 되지만, Raster graphic 환경에서는 여러 점(Pixel)들의 집합으로 직선을 그려야 한다. 직선은 아래의 특징을 가진다. accurate e... Read More
-
컴퓨터 그래픽스 - 서론
1. 컴퓨터 그래픽스 - 서론 컴퓨터 그래픽스란? 컴퓨터를 사용하여 그림을 생성하는 기술을 의미한다. 컴퓨터를 사용한 이미지 처리 분야는 크게 3가지이다. Computer Vision → 카메라를 통한 외부 인식 Computer Graphics → 컴퓨터에서 이미지를 생성 Image Proces... Read More
-
솔루션과 프로젝트
솔루션과 프로젝트 솔루션이란? 솔루션은 클래스 라이브러리 프로젝트와 해당 테스트 프로젝트와 같은 하나 이상의 관련 코드 프로젝트를 구성하기 위한 컨테이너이다. 일반적으로 두 개 이상의 프로젝트가 포함되며 서로 참조한다. 두 가지 파일 형식을 사용하여 솔루션 관련 설정을 저장한다. .sln → visua... Read More
-
편집기 사용법
편집기 사용법 일반 편집 기능(구문 색 지정, 오류 및 경고 표식)들은 정말 일상적으로 사용하는 것들이라 따로 정리하지는 않겠다. 조금 더 고급 기능 중 자주 쓸 것 같은 기능들을 알아보자. 대소문자 변경 대문자로 → 선택 영역의 모든 문자를 대문자로 변경하거나, 선택 영역이 없으면 삽입... Read More
-
텍스트 찾기 및 바꾸기
텍스트 찾기 및 바꾸기 기본 단축키 텍스트 찾기 및 바꾸기는 매우 자주 사용하는 기능이다. 텍스트 찾기 → Ctrl+F / Ctrl+Shift+F(파일에서 찾기) 텍스트 바꾸기 → Ctrl+H / Ctrl+Shift+H(파일에서 바꾸기) 검색 범위 설정 또한 가능하여 현재 문서, 현재 솔... Read More
-
클래스 다이어그램
클래스 다이어그램 설치방법 Visual Studio 설치관리자 실행 개별 구성 요소 → 코드 도구 클래스 디자이너 선택 수정버튼 클릭 빈 클래스 다이어그램 추가 방법 솔루션 탐색기에서 프로젝트 노드 우클릭 추가 → 새 항목 유틸리티 → 클래스 다이어그램... Read More
-
9. Design - Architecture
9. Design - Architecture 소프트웨어 아키텍쳐 이전 단계에서 요구사항을 분석하고 이를 모델링하여 체계화했다면, 이제는 실제로 구현할 수 있도록 그 구조를 설계해야한다. 설계(Design)는 크게 3가지 부분으로 나누어서 볼 예정이다. Design Architectures Desi... Read More
-
8. Modeling - 2(UML)
8. Modeling - 2(UML) UML이란? UML이란 Unified Modeling Language의 약자로, 1997년 OMG(Object Management Group)에서 표준으로 채택한 통합 모델링 언어이다. 그래디 부치, 제임스 럼버(James Rumbaugh), 이바 야콥슨(Ivar Jaco... Read More
-
7. Modeling - 1
7. Modeling - 1 모델이란? Model = 현실의 단순화. 실제로 만들고자 하는 것의 샘플로도 이해할 수 있다. 모델하우스나 물리 모델과 같은 것을 생각해보자. 소프트웨어 시스템에 대한 모델은 무엇일까? 단계에 따라서 나눌 수 있다. 분석단계 → 사용자가 원하는 것(functional re... Read More
-
6. Requirment Engineering
6. Requirment Engineering 요구사항 분석이란? 요구사항(Requirments)이란 아래의 두 가지를 합친 것을 의미한다. 소프트웨어 시스템은 무엇(What)을 제공하는가? 소프트웨어 시스템의 제약 사항은 무엇인가? 요구사항 분석은 매우 중요한 작업이다. 시스템은 요구사항... Read More
-
5. 프로젝트 관리 및 계획 - 2
5. 프로젝트 관리 및 계획 -2 프로젝트 스케쥴링 COCOMO를 통해서 비용을 추정했다면, 이제는 프로젝트를 진행할 기간과 기간별 진행 요소들을 스케쥴링 해야한다. WBS-CPM-Gantt Chart로 이어지는 방식으로 프로젝트를 스케쥴링 해보자. WBS(Work Breakdown Structure) ... Read More
-
4. 프로젝트 관리 및 계획 -1
4. 프로젝트 관리 및 계획 -1 소프트웨어 프로젝트 관리란? 어렵게 생각할 것 없이 그냥 잘 관리된 절차를 따라 프로젝트를 진행하는 것을 의미한다. 크게 4가지 측면에서 볼 수 있다. 기간 내에 소프트웨어를 만들어 납품 정해진 예산 범위에서의 개발 기대에 맞춘 품질 잘 돌아가는 팀의 유... Read More
-
3. Agile method - Scrum
3. Agile method - Scrum 1) 스크럼은 무엇인가? 스크럼(Scrum)이란 1995년 제프 서덜랜드와 켄 슈와버에 의해 창안된 애자일 방식의 일종으로, 특정 개발 언어나 방법에 의존적이지 않은 프로세스 프레임워크이다. 짧은 주기(Sprint)로 개발 및 검토를 하며 변화에 유연하게 대응한다는... Read More
-
2. SW Development Process
2. SW Development Process 1) 소프트웨어 개발 프로세스란? Software Developement Process = Software Developement life cycle(SDLC) 소프트웨어의 계획, 개발, 그 너머까지 다루는 과정이다. 계획된 기간 내에 일정한 퀄리티를... Read More
-
12. Testing
12. Testing 테스팅이란? 테스팅이란 프로그램을 실제로 사용하기 전에 결함을 찾아내는 과정을 의미한다. 역사에 기록된 소프트웨어 오류들(LINK)을 살펴보면, 출시 전 테스팅 작업이 얼마나 중요한지 새삼 깨달을 수 있다. 테스팅 방법은 여러가지가 있다. 일반적 테스트, 정적 분석, 인스펙션, Form... Read More
-
11. Coding
11. Coding 코딩시 주의사항 코딩시 주의사항은 굳이 소프트웨어 공학론이 아니더라도 많이 찾아볼 수 있다. 그리고 에러의 종류가 워낙 방대하다보니 그때그대 상황에 맞추어 학습하는 편이 훨씬 도움될 것이다. 일단 코드컨벤션에 맞추어 코딩하는 것을 우선하자. UML 보고 코딩하기 요구사항 분석 → 모델링 →... Read More
-
10. Design - Principles
10. Design - Principles 디자인 원칙이란 말 그대로 소프트웨어를 설계할 때 고려해야할 원칙들이다. 4가지 원칙을 알아보자. step-wise refinement abstraction modulization SOLID Step-Wise Refinement 하나의 큰 ... Read More
-
1. 소프트웨어 공학론 - 서론
1. 소프트웨어 공학론 - 서론 1) 소프트웨어란 무엇인가? 소프트웨어 → 프로그램 + 문서(분석, 디자인등의 모든 것을 의미한다) 프로그램 → 실행 가능한 명령어의 집합 코드 → 프로그램의 일부분 소프트웨어의 4가지 특징 복잡성(Complexity) = 동일모듈의 반복으로 만들 수 없다... Read More
-
태그
[Git] 태그 git tag $ git tag명령으로 현재 존재하는 태그들을 확인할 수 있다. 검색 패턴을 사용하여 태그를 검색할 수 도 있는데, -l, --list옵션 다음에 찾으려는 정보를 입력하면 된다. (ex: $ git tag -l "v1.8.5*") Tag의 종류 태그에는 두 가지 종류가 있다. ... Read More
-
리모트 저장소
[Git] 리모트 저장소 git remote 로컬 저장소 뿐만 아닌, 인터넷 어딘가에 있는 저장소를 의미한다. 나의 경우에는 Github가 이에 해당한다. $ git remote명령어를 통해 저장소를 확인할 수 있지만, 저장소를 Clone 했다면 ‘origin’이라는 이름이 보일 것이다. 자동으로 등록되는 리모트 ... Read More
-
리모트 브랜치
[Git] 리모트 브랜치 앞서 리모트 저장소를 인터넷 어딘가에 위치한 외부 저장소라고 설명한적이 있다. 로컬 저장소의 브랜치를 알아봤으니, 리모트 저장소의 브랜치 또한 알아보자. 리모트 브랜치란? 워킹 디렉토리의 .git 폴더 속에는 refs 폴더가 있다. 리모트 refs는 리모트 저장소에 있는 포인터 및 레퍼런스이... Read More
-
수정 & 저장소에 저장
[Git] 수정 & 저장소에 저장 Tracked or Untracked 워킹 디렉토리의 모든 파일은 크게 두 가지 상태로 구분할 수 있다. Tracked → 이미 스냅샷에 포함되어 있는 파일이다. Modified → 수정되어 기존 스냅샷과 달라진 파일 Unmodified → 수정... Read More
-
Rebase
[Git] Rebase 브랜치를 합치는 방법은 두 가지가 있는데, 바로 Merge와 Rebase 이다. 평소에는 merge를 사용하지만 아무래도 branch가 많아지다 보면 이들의 관계를 한 눈에 파악하기가 어렵다. 그래서 git history를 정리하기 위해 rebase를 사용하면 좋다. Rebase... Read More
-
Merge
[Git] Merge 앞서, master 브랜치에서 새로운 브랜치를 생성해 보았다. 개별적인 문제를 해결하고자 생성한 브랜치는 결국 기존의 브랜치와 합쳐야 하는데, 이 때 사용하는 것이 merge이다. 예제 진행 과정 아래의 과정을 수행하며 자세한 내용을 알아보자. 웹사이트가 있고 뭔가 작업을 진행하... Read More
-
Git 명령어 리스트
[Git] 간단하게 정리한 명령어 리스트 설치와 설정 git config - 사용자 설정 git help - 도움말 확인 프로젝트 생성 및 가져오기 git init - git 저장소 생성 git clone - git 저장소 생성 및 리모트 저장소에서 데이터 가져오기 스냅샷 다루기 git add - 워킹 디렉토리에서 sta... Read More
-
브랜치란?
[Git] 브랜치란? git의 작동 과정 git은 데이터를 일련의 스냅샷의 연속으로 저장한다. 그 과정은 어떻게 될까? 파일이 3개 있는 디렉토리가 하나 있고, 이 파일을 add, commit하는 예제를 살펴보자. add(ex:$ git add README test.rb LICENSE) 파일을... Read More
-
커밋 히스토리 조회하기 & 되돌리기
[Git] 커밋 히스토리 조회하기 & 되돌리기 git log $ git log는 히스토리를 조회하는데 사용하는 명령어이다. 시간순으로 히스토리를 보여주며, 가장 최근의 커밋이 가장 먼저 나온다. 순서대로 체크섬, 저자 이름, 저자 이메일, 커밋 날짜, 커밋 메세지를 보여준다. git log 옵션 ... Read More
-
브랜치의 관리 및 사용
[Git] 브랜치 관리 및 사용 브랜치 관리 지금 git 저장소에 몇 개의 브랜치가 있는지, 내가 사용하고 있는 브랜치는 무엇인지, 병합여부는 어떤지 알 수 있을까? 브랜치 관리 명령어에 대해 알아보자. $ git branch <브랜치이름> 은 새로운 브랜치를 만드는 명령이었다. 여기서 옵션을 제거한 그냥 ... Read More
-
Alias
[Git] Alias Alias란? git을 사용하다보면, 긴 명령어를 입력하다 오타를 냈던 경험이 있을 것이다. 이러한 명령어의 길이를 줄이고, 좀 더 쉽고 편안하게 git을 사용하도록 alias라는 기능이 있다. Alias는 $ git config <적용범위> alias.<단축명령어>... Read More
-
Git Repository 생성방법
[Git] Repository 생성 reopository를 만드는 방법은 2가지가 있다. 로컬 디렉토리 하나를 선택하여 git 저장소를 적용하는 방법 어딘가에서 git 저장소를 Clone하는 방법. 둘 다 알아보자. 기존 디렉토리를 Git 저장소로 만들기 $ cd /c/user/my_proje... Read More
-
Git은 왜 만들어졌는가?
[Git] Git은 왜 만들어졌는가? Git은 왜 만들어졌는가? git은 버전관리를 위해서 탄생했다. 데이터베이스를 개인이 관리하던 것에서 발전하여 중앙 서버 방식, 분산 버전 관리 방식으로 나아갔다. 로컬 버전관리 VCS(Version Control System), 간단한 데이터베이스 형태이다. 각... Read More
-
저장 방식과 3가지 상태
[Git] 저장 방식과 3가지 상태 다른 VCS와의 차이점 델타 기반 버전 관리 스냅샷의 스트림 위가 기존의 VCS 개념이고, 아래쪽이 git이 사용하는 개념이다. Git의 장점 거의 모든 명령어를 로컬에서 실행한다. → 오프라인 작업이 가능하다. Git의 무결성... Read More
-
Git Config, Help
[Git] Git Config & Help 설정 파일 git의 설정은 ‘git config’를 사용해 변경할 수 있으며, 이 때 사용하는 설정 파일은 3가지이다. /etc/gitconfig 시스템의 모든 사용자, 모든 저장소에 적용되는 설정. git config --system 옵... Read More
-
AWS educate 가입하기
AWS educate 가입하기 지금까지는 서버에 별 관심이 없었다. 그러나 이번 방학 때 블로그를 개설하고 토이프로젝트를 계획하면서, 24시간 작동하는 개인 서버의 필요성을 절실하게 느꼈다. 그래서 AWS에 가입했다. AWS educate? 간단하게 설명해서 교육자를 위한 AWS 지원이다. 가입 후 1년간 지원해주... Read More
-
JSON, XML, YAML, CSV
JSON, XML, YAML, CSV 자주 쓰이지만 정확히 어떤 형식인지는 모르던 파일들. 이번 기회에 정리해보자. JSON JavaScript Object Notation (JSON)의 약자로, 자바스크립트 객체 문법으로 구조화 된 데이터를 표현하기 위한 문자 기반의 표준 포멧이다. 확장자는 (.json). 용량이 작고 간단한 ... Read More
-
Gem, Gemfile, Bundler
Github 블로그 - Gem? Gemfile? 이번에 jekyll를 사용하기 전 까지는 Ruby를 사용해본 경험이 없었다. Ruby에서 사용되는 gem관련 내용들을 간단하게 정리한다. Gem 간단하게 생각해서 라이브러리이다. 리눅스의 apt와 같이 필요 프로그램을 관리하는데 사용된다. 명령어는 다... Read More
-
Atom Markdown 문서 정렬 문제
Atom Markdown 문서 정렬문제 Jekyll을 사용한 github 블로그를 만들고 포스팅할 글을 적고있는데, 문제가 발생했다. 바로 .md 파일을 수정 후 저장하면 머릿말 구조가 바뀌는 것이다. 내용이야 끼워 맞추면 된다지만, title, subtitle, categories, tags가 전부 먹통이... Read More
-
Github 블로그 - Jekyll 구조
Github 블로그 - Jekyll 구조 jekyll을 사용해서 Github 블로그를 만들었다면, 이제는 내부를 정리하고 글을 작성해야한다. 이를 위해서 블로그 프로젝트 폴더의 구조와 그 기능을 간단하게 정리하고자 한다. Jekyll 기본 구조 공식 사이트의 폴더구조를 살펴보면 자세한 내용을 알... Read More
-
Github 블로그 제작기 - 04
Github 블로그 제작기 - 04 노란색 경고 제거 Ensure you have plugins: [jekyll-paginate] 상단의 jekyll-paginate 를 해결 방법은 unknown tag의 해결 방법과 동일하다. gemfile에 gem “jekyll-paginate” 추가... Read More
-
Github 블로그 제작기 - 03
Github 블로그 제작기 - 03 cannot load such file –kramdown-parser-gfm(LoadError) 해당 에러는 서버에 theme을 적용하는 과정에서 발생했다. 프로젝트 폴더에 theme 파일들을 넣고 서버를 시작하니 아래와 같은 에러창이 나왔다. kramdown은 ... Read More
-
Github 블로그 제작기 - 02
Github 블로그 제작기 - 02 저번 글에 이어서, 내가 블로그를 만들면서 마주친 문제들을 짚어보고자 한다. 대부분의 문제는 아래 과정에서부터 발생한다. ‘jekyll new 블로그이름’ + ‘jekyll serve’ 입력 해당 명령어를 입력하면 아래와 같은 화면을 볼 수 있다. 이후에 부족한 gem... Read More
-
Github 블로그 제작기 - 01
Github 블로그 제작기 - 01 🌟시작하기에 앞서, 블로그 제작기 문서는 본인이 어떤 문제를 마주치고 해결했는지를 보여주는 문서임을 알린다. 어째서 블로그를 만들었는가? 홈페이지 메인에 적은 내용과 같은 이유이다. 앞으로도 배울 내용이 너무 많다. 이를 어딘가에 기록해서 필요할 때 찾을 ... Read More
-
첫 글
안녕하세요. Reitbe입니다. 드디어 첫 글을 올리게 되었네요. 2학년을 마치고 온 겨울방학에, 배운 내용의 정리와 테스트를 위해 블로그를 만들어야겠다고 생각했습니다. 네이버 블로그, 티스토리 등의 선택지도 있었지만 github page를 선택했습니다. 자유도가 높다고 들었기 때문입니다. jekyll을 사용해서 ... Read More