프론트에서 예외 처리할 때, 어디까지 해야할까?
·
궁금궁금
서버 도메인 로직을 어디까지 믿어야 하는가? 무결하다고 믿는가?아니면 로직에 허점이 있을 때나 알 수 없는 이유로(?) 데이터 상으로 존재는 가능한 경우의 수들까지 예외처리 해야하는가? 예를 들어, 도메인 로직 상으로 메인 노드는 항상 부모 노드이며, 누군가의 자식 노드가 될 수 없다그런데 두 노드 사이 연결을 끊을 때, 자식 노드의 색상을 기본값(회색)으로 초기화하는 코드가있다메인 노드는 항상 흰색 배경을 유지해야한다 -> 이때, 두 노드 사이 연결을 끊는 로직에서 자식 노드의 색상을 초기화해야하는 로직에서, 메인 노드의 경우 초기화하지 말라는 예외 처리 로직을 넣을까 넣지말까 고민된다정해진 답이 있나?
CORS 에러에 대하여
·
공부
CORS (Cross-Origin Resource Sharing) = 서로 다른 Origin 간에 데이터(Resource)를 주고받는 것.BUT !응답 HTTP 헤더에 적힌, 데이터 열람 허용된 Origin 만 가능! - Cross = 교차 = 서로 다른- Origin = protocol + hostname + port = 요청 보내는(사용자 측)·받는(서버 측) 쪽의 url 일부- Resource = Web Server 에서 제공하는 모든 데이터 (사용자의 데이터 등) * 앞단에 Web Server를 두고 뒷 단에 WAS 를 두는 경우도 모두 포함하는 것- Sharing = 공유 = 전송 CORS 에러 = 브라우저가 a.com 이라는 origin이 서버로부터 받은 응답에 접근할 권한이 없다..
문제 해결 기법에서 추상화란
·
공부
컴퓨팅 사고 (Computational thinking)- thought process to formulate a problem and solution in a way that an information-processing agent can effectively carry out- Cuny, Snyder, Wing --> 문제를 풀 때 사용하는 패턴(문제 해결의 방법·과정)을 배우는 것-> 이 information processing agent 가 기존의 단순 컴퓨터에서 AI로 바꾸는 것 컴퓨팅 사고를 통한 문제 해결 과정1. 문제 분해 (정보를 분석하고 작은 부분들로 분해한다)2. 추상화 (요약하는 능력)불필요한 디테일은 가지치기(제거)하고 단순화해서 표현한다문제 해결을 위해 이해하기 쉽도록 정의한다..
unity08 3d 게임 만들어보기
·
공부
[3d 모델 사용하기]- 형식: FBX 파일 / 3d CG 애플리케이션 파일(Maya, Blender 등) [FBX란]- 가장 범용적인 3d 모델 형식 [3d 게임 프로젝트 기본 오브젝트]- Directional Light: 3d 씬 공간을 비추는 조명 [좌표계]- x, y, z 축을 모두 활용- Main Camera는 0,0,0을 바라보며 z축 방향(화면으로 들어가는 방향)에 위치해 있음 - 씬 화면 우측 상단에 현재 바라보는 방향을 나타내는 씬 기즈모 존재 [설계 순서]1. Terrain 배치 ** Terrain: unity 에서 제공하는 지형 오브젝트 / 지형, 재질, 기본 나무 등 생성 가능 - 3D Object > Terrain > Inspector 에서 브러쉬 버튼 > 지형에 대고..
unity07 다양한 환경의 기기에서 동작 일관화 시키기
·
공부
문제: PC의 성능 별로 프레임을 그리는 속도가 다르기에 update 메서드가 호출되는 횟수도 다름(e.g. 고성능 PC: 1초에 60번 / 모바일 폰: 1초에 40번)-> 기기 별로 캐릭터 이동 속도 등에 차이가 발생함 해결책: 이동 속도에 Time.deltaTime 을 곱한다-> 프레임 그리는 속도가 높으면, 이동 속도를 낮춤 / 프레임 그리는 속도가 낮으면, 이동 속도를 높임-> 모든 기기에서 1초 후에 위치하는 지점을 통일시킬 수 있음
unity06 반복되는 오브젝트 / 애니메이션 만들기
·
공부
[프리팹과 제너레이터 스크립트]- 프리팹: 생성할 오브젝트에 대한 설계도- 제너레이터 스크립트: 프리팹대로 인스턴스(오브젝트)를 생성 -> 주로 같은 오브젝트 여러 개 생성할 때 사용됨 ** 프리팹의 장점: 프리팹을 통해 생성된 모든 오브젝트는, 프리팹의 수정으로 한 번에 수정 사항 반영 가능 [메서드]- Time.deltaTime: 프레임 사이의 시간 (보통 60fps)- Instantiate(프리팹 객체): 프리팹에 맞춘 인스턴스 생성 (input: 프리팹 / return: 프리팹 인스턴스)- Random.Rage(시작 범위, 종료 범위): 범위 사이 값을 랜덤으로 return 함. 종료 범위는 포함 x- 프리팹 인스턴스(오브젝트).transform.position 과 같이 인스턴스에 접근하여 조작 ..
unity05 중력/충돌
·
공부
* 유니티는 중력을 사용하면, 오브젝트를 직접 transform.Translate으로 매 프레임마다 움직이지 않아도 된다그러나, 세부적인 제어가 필요한 경우, Translate 메서드를 사용한다 [충돌 제어]- 오브젝트끼리 충돌하는지 판정하고 충돌 후 움직임을 정한다- 충돌 판정 알고리즘은 복잡 -> 오브젝트를 원형이라 가정하여 단순화 - 충돌 판정 알고리즘: 피타고라스 정리 활용해 두 원(오브젝트)의 중심끼리 거리가 두 원의 반지름의 합보다 작아지면 충돌했다고 판단 - 오브젝트의 magnitude 메서드를 사용한다 [Physics 를 활용해 오브젝트에 중력 적용하기]** Physics: unity 표준 물리 엔진 (충돌, 마찰, 낙하 등을 계산하는 시뮬레이션 용 라이브러리) [Physics의 ..
unity04 게임 UI 만들기
·
공부
[UI 란]게임 자체가 아니라 게임의 진행 상황 등 메타적인 정보를 보여주는 것e.g. 캐릭터 HP, 목표 지점까지 남은 거리 등 [UI 만들기]1. UI 부품을 씬에 배치 - UI 를 그리는 기본템들을 모아둔 toolkit 인 Unity UI(uGUI) 를 사용한다2. UI를 갱신하는 감독 스크립트 작성3. 빈 오브젝트에 감독 스크립트 적용 [Unity UI]1. GameObject 를 사용해 UI를 그리는 시스템이다- GameObject 기본 구조: GameObject (e.g. "Player"라는 GameObject 정의)├─ Transform (기본 탑재 / 위치·회전·스케일, 부모-자식 계층 정보 저장)│ ├─ Position (x, y, z)│ ├─ Rotation (x, ..
unity03 게임 설계하기
·
공부
[설계 순서]1. 화면에 놓일 오브젝트 나열2. 움직임이 필요한 필요한 오브젝트 파악 (= 컨트롤러 스크립트가 필요한 오브젝트 파악)3. 게임 중간에 생성되어야 하는 오브젝트 파악 (= 제너레이터 스크립트로 오브젝트를 자동으로 생성해야 하는지 확인)4. 게임에 UI가 필요한지 파악 (= 감독 스크립트로 게임 전체를 관장해야하는지 / 진행 상황 업데이트가 필요한지 확인)5. 스크립트 만드는 흐름을 생각- 컨트롤러 -> 제너레이터 -> 감독 스크립트 순서로 제작 [구현 순서]1. 프로젝트 생성2. 오브젝트 배치3. 스크립트 작성4. 스크립트 적용 [설계 팁]- 쉬운 것 부터 순서대로 작성하자 [좌표계 이동]- 오브젝트는 각자 로컬 좌표계(x,y,z 축)를 가진다- 오브젝트가 회전하면 로컬 좌표계도 함께 회전..
unity02 2d 게임 제작해보기
·
공부
[용어]1. 2d 프로젝트에서 사용하는 용어- 스프라이트: Scene 위에 있는 이미지 에셋 등 2d에서의 오브젝트 [유니티로 씬 구성하기]2. 좌표 설정하기- x, y 좌표만 사용한다 (x: 가로, y: 세로)- z 좌표는 0으로 맞춰둔다. 유니티 2d 프로젝트에서 카메라의 z 축 위치가 -10이라 -10 보다 아래로 내려가면 스프라이트가 화면에 보이지 않는다 3. 배경색 설정하기- Main Camera 오브젝트의 inspector 창에서 background 색상을 바꿔주면 Scene의 배경 색이 바뀐다 *유니티가 없었다면 긴 스크립트를 통해 스프라이트를 배치해야했다 [마인드셋]4. 디자인이란- 디자인은 설계다. 오브젝트 배치 / 색상 설정 등 모든 것에 이유를 담자. [스크립트로 동작 만들기]5. 설..