공부 63

DATETIME

데이터 베이스에는 시간을 따로 제공해준다. 이러한 datatime은 데이터베이스 자체에서 제공하는 규격이 있는데 위와 같은 datatime 규격을 지키게 된다면, 자동으로 읽고 쓰기 기능을 구현해준다. 값을 추가해보자. 아직 INSERT를 배우지 않아 직접적으로 Script를 만들고, VALUES 값에 규격의 DateTime값을 넣는다. 여지껏 배운 문법을 뽐내본다. 규격대로 넣어졌다면 1 raw affected 이라며, 성공적으로 값이 들어갔다고 한다. 확인해보자 정상적으로 들어가 있다. 이 값들을 필터링 해보자. 정상적이다. 현재시간을 저장할때, 본인의 컴퓨터 데이터 기준의 시간에서 저장이 되는 걸 볼 수 있다. 즉 클라이언트 기준의 시간대에서 설정이 되어있고, 컴퓨터 데이터 기준을 변경하여 저장한다..

2022-01-15

다음은 테스트를 위해 벽을 만들어 준다. 벽을 만들고 Material을 생성하여 Wall 오브젝트에 넣어준다. 그런 다음 Layer를 설정해주자. https://docs.unity3d.com/kr/530/Manual/Layers.html 유니티 - 매뉴얼: 레이어 Optimizing Shader Load Time 레이어 기반의 충돌 감지 레이어 Layers는 Cameras에 따라 씬의 일부만 렌더링 하거나, Lights에 따라 씬의 일부만 밝히는 등에 가장 자주 사용됩니다. 한편, 선택적으로 Collider를 docs.unity3d.com 여기서 볼 수 있 듯 Layer을 통해 Collider를 테스트해본다. using UnityEngine; public class Node { public bool Is..

사칙연산 및 문자열

이건 문법 쓰면서 가끔 혼동할 것 같다. 위의 그림에서 koreanAge가 빨간줄일 그이는 이유는 영어 문법 차이와 같다. 그리하여 이러한 문법으로 이용해야한다. 만약 사칙연산에 null 값이 포함된다면 어떻게 될까? 값이 null이 나오는 걸 볼 수 있다. 기본적으로 code를 짤 때, int 형과 null 값은 오류로 취급하는데 반해 database의 문법에서는 null값이 나오기 때문에 작업 시, 주의해야할 것 같다. 이외에도 나누기에 대한 주의점, 반올림, 제곱, cos 함수도 구현이 가능하다. 문자열 출력 하지만 한글 출력은 되지 않음. 이유는 유니코드에서 1byte를 취급하기 때문임. 그리해여 한글, 중국어, 일본어 등을 출력하기 위해서는 유니코드 2byte를 만들어 출력해줘야한다. 문자열 조..

정렬 및 기초

이번 주 데이터베이스를 열면서 가장 당황했던 점은 기존의 저장 sql script를 열었는데, 데이터테이블과 연결이 되지 않아 오류 발생한 점이다. 이 경우 2가지 방법이 있는데 1. use를 사용하여 data를 참고하는것. 2. data를 직접 클릭하여 new query를 만드는 것. 기초를 배우다 보니 어려운게 참 많다. 정렬은 저 위의 그림에서 적힌 부분을 참고하면 된다. order by 경우 database마다 문법이 다르다고 하니 참고하자.

Queue

Queue 는 Stack과 단짝으로 나오는 친구 중 하나이다. 기본적으로 선입선출이라는 특징을 갖고 있다. 주로 구현에서는 대기열 처리를 들 수 있다. 은근히 많이 쓰인다. 서버에서도 Session을 날릴 때, 일 처리 순으로 Queue사용하고, 생각해보니 굉장히 중요한 녀석이다. 솔직히 Stack은 잘 사용 안했던거 같은데 말이다. 이러한 기능을 수행한다. 보통 value를 받을 때, pop에서 return되는 값을 많이 받지만 단순 접근에서는 front를 이용 할 수 있다. front 는 이번에 처음본 듯. queue를 간단히 구현해보면 #include #include #include #include #include using namespace std; template class Queue // Li..

Stack

Stack은 후입선출이 가장 특징이며, 기존의 노드와 비교했을때, 어려운 점은 없다. 흔히 길 되돌아가기, 테잎 돌리기 처럼 기존의 것을 되돌릴때, 저장하고 사용하는데 쓰인다. 스택을 생성하고 스택에 Push 해줬을때, top()을 보면 가장 마지막에 쌓은 요소를 볼 수 있다. 그 상태에서 Pop()을 진행해주면 후입선출로 스택에 데이터가 사라지는걸 볼 수 있다. template class Stack { public: void push(const T& value) { _container.push_back(value); } void pop() { _container.pop_back(); } T& top() { return _container.back(); } bool empty() { return _con..

디펜스 게임 만들기 [Grid & Gizmo]

회사에서 2D 게임만 만들다보니 3D를 다루는 법을 잊을까봐 3D 게임을 만들어 보도록 한다. 기획 게임 종류 : 디펜스게임 1. 대전 게임 형식 2. 서로 유닛을 보내어 싸움. 3. 라이프를 서로 뺏어 올 수 있으며, 라이프가 0되는 플레이어가 패배. 일단 디펜스 게임을 만들기 위해선 몬스터, 맵, 플레이어가 필요하다. 맵은 몬스터가 출발 방향에서 도착 방향까지 가야하며, 도착 지점에 도달할 시 라이프를 마이너스 시켜준다. 도착 지점까지는 무수한 타워들이 있을 것이며, 그 타워가 만든 길을 따라 몬스터는 도착지점까지 최소거리를 연산하고 움직여야한다. 일단, 맵을 만들어 본다. 맵을 만들기 전, 최소 거리를 만들기 위해 존재하는 맵을 조각조각 나누어 조각에 가중치를 두어 계산한다. A* 알고리즘을 이용하..

List

연결 리스트 구현. List는 C#을 이용하며 친숙한 이름 중 하나이다. 하나의 노드를 연결시켜 사용하는 List는 친숙하면서 다른 알고리즘에서 참고가 되는 녀석이다. 삽입과 중간 삭제가 쉬운 반면 직접 접근이 어려워 노드를 찾는데 시간비용이 든다. 보통 중간 삽입하는 과정은 별로 없기 때문에 C++에서는 Vector를 많이 사용한다. #include #include #include using namespace std; int main() { list _list; list::iterator eraselt; for (int i = 0; i < 10; i++) { if(i ==5) eraselt = _list.insert(_list.end(), i); _list.push_back(i); } _list.pop..

Basic DataBase

이제 기초적인 데이터베이스에 대해 알아보자. 귀찮아서 하나로 들고 왔다. 데이터베이스는 예상과는 다르게 영어문법을 따른다. 프로그래밍 언어와 비슷할 거라고 생각했는데, 그렇지 않다. 하지만 그래서 직관적으로 알기 쉽고 새로운 언어를 배운다는게 익숙해져서인지 그냥 편하게 배울 수 있게 되었다. 위에서 SELECT*은 모든 선택이다. 혹 SELECT name을 하게 된다면 name의 부분만 따로 불러올 수 있다. 밑에 FROM은 '~에서' 인데 두 줄을 합쳐서 풀어보면 로 해석할 수 있을거 같다. 그 밑의 WHERE은 프로그래밍의 IF와 비슷한 기능을 한다. 그럼 결국은 라고 해석할 수 있을거 같다. 여기서 WHERE에 맞춰지는 조건형 문법에 대해 알아..