전체 글
[C#] JSON 직렬화 (Serialization) 정리
JSONJavascript Object Notation은 데이터를 저장하고 전송하기 위한 경량 데이터 형식, 주로 클라이언트 간 데이터 교환에 사용된다. 예){ "name": "홍길동", "age": 28, "skills": ["Java", "Spring", "MyBatis"], "isEmployed": true}직렬화메모리를 디스크에 저장하거나 네트워크 통신에 사용하기 위한 형식으로 변환하는 것이다.역직렬화(deserialization)는 그 반대로 디스크에 저장한 데이터를 읽거나, 네트워크 통신으로 받은 데이터를 메모리에 쓸 수 있도록 다시 변환하는 것이다.왜 필요한가?개발 언어로 무엇을 사용하던(C++, C, C#, Java 등,,) 사용하는 데이터들의 메모리 구조는 크게 2가지로 나뉜다. ..
[Unity] ServiceLocatorManager > 구조 변경 / indexer, Type
일단은 서비스 딕셔너리를 생성해준 후 indexer로 Type 값을 반환한다여기서 instance는 싱글톤 객체를 의미한다private Dictionary _services = new Dictionary();public object this[Type type]{ get { if (_services.TryGetValue(type, out object service)) return service; Debug.LogWarning($"Service of type {type.Name} not found!"); return null; } set { if (_services.ContainsKey(type))..
[Unity] 애니메이션 마지막 프레임에서 이벤트 호출안되는 이유
일단 코드는 아래와 같다using System;using UnityEngine;public class PlayerAnimEvent : MonoBehaviour{ public PlayerController playerController; public bool isDashEnded; void AttackEnd() => playerController.input.AttackEnd(); void DashStart() => isDashEnded = false; void DashEnd() => isDashEnded = true;}여기서 DashStart랑 DashEnd 함수를 사용할텐데 발생하는 문제점이 DashEnd 이벤트가 호출 안된다는건데 이유는 애니메이션이 종료..
[네트워크] TCP vs UDP / 가상회선, 데이터그램 패킷 교환 방식
TCP & UDPTCP/IP 4계층 중 전송계층에 해당하며 애플리케이션과 인터넷 계층 사이의 데이터 전달 시 중계 역할을 한다1. TCP (Transmission Control Protocol)신뢰성 있는 연결형 서비스 제공흐름 제어, 오류 제어, 순서 제어정해진 시간 안의 대량 데이터를 연속으로 보낼 때 적합함가상회선 패킷 교환 방식 사용3-way-handshake (연결 성립), 4-way-handshake(연결 해제)핸드 쉐이크) 상대와 연결 상태를 만들거나 해제하기 위해 거치는 과정3-way-handshake (3-웨이-핸드쉐이크)TCP/IP 프로토콜을 이용하여 통신하는 응용 프로그램이 데이터 전송 전 정확한 전송 보장을 위해 상대 컴퓨터와 사전에 세션을 수립하는 과정신뢰성 확보무의미한 데이터 전..
[Unity] 로그 (Log) 출력시 스택 트레이스 (Stack Trace) 관리하기
로그 (Log)는 개발자들에게 없어서는 안될 중요한 개발자는 로그를 통해서 코드가 제대로 동작하는지, 데이터 값들이 정상인지 등을 확인할 수 있다. 만약 로그가 없다면, 개발자는 버그를 찾아내는데 더 많은 고생을 하게 될 것이다.유니티에서는 이러한 로그를 출력할 때, 위의 이미지처럼 개발자가 출력하고자하는 로그의 내용과 함께 로그가 출력된 코드의 위치를 알려주는 스택 트레이스 역시 함께 보여준다. 로그를 출력하도록 설정해놓았다면 빌드한 어플이케이션에서도 로그가 찍힐 때 스택 트레이스 역시 함께 출력되도록 되어있다. 위의 이미지는 간단한 테스트 코드이기 때문에 스택 트레이스가 3줄 밖에 안되지만 본격적으로 개발에 들어간 이후에는 스택 트레이스가 기본적으로 4-5줄에서 많은 10여줄을 넘는 경우가 자주 ..
디스크 스케줄링의 개념과 종류 (FCFS, SSTF, SCAN, C-SCAN, C-LOOK)
디스크 관리 (Disk Management)디스크는 가장 많이 사용하는 보조기억장치 중 하나로 마치 레코드판을 여러 개 중첩해서 놓은 것과 비슷하다. 디스크는 헤드 (Head)가 임의의 섹터 (Sector)를 랜덤하게 참조할 수 있고 빠르게 데이터를 읽을 수 있으며, 주기억장치보다 많은 양의 데이터를 저장할 수 있다.디스크 접근 시간탐색시간 (Seek time): 현 위치에서 특정 실린더(트랙)로 디스크 헤드가 이동하는 데 소요되는 시간회전 지연시간 (Rotation delay time): 가고자 하는 섹터가 디스크 헤드까지 도달하는데 걸리는 시간전송시간 (Transfer time): 데이터를 전송하는데 걸리는 시간종류1. FCFS (First Come First Served)가장 먼저 도착한 요청을 우..
[SQL] TO_CHAR 함수 사용법 (날짜 포맷, 소수점, 천단위 콤마)
날짜 포맷 변경 (YYYY-MM-DD) YYYY: 년, MM: 월, DD: 일, HH24: 24시간, HH: 12시간, MI: 분, SS:초SELECT TO_CHAR(SYSDATE, 'YYYYMMDD') --20200723 , TO_CHAR(SYSDATE, 'YYYY/MM/DD') --2020/07/23 , TO_CHAR(SYSDATE, 'YYYY-MM-DD') --2020-07-23 , TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') --2020-07-23 11:10:52 FROM dual 소수점 변경 FM: 문자열의 공백제거숫자의 최대 길이만큰 9999... 형식을 지정한다. (9 : 값..
[SQL] MINUS 사용법 (차집합, EXCEPT)
개념MINUS 연산자를 사용하면 서로 다른 쿼리문에서 차집합의 데이터를 구할 수 있다. MINUS 연산자는 다른 데이터베이스의 EXCEPT 연산자와 비슷한 기능을 하며, 중복 값이 제거된 차집합 데이터가 반환된다는 것을 숙지해야 한다. MINUS 연산자를 사용하여 쿼리문을 작성하면 직관성은 좋지만 성능에 이슈가 발생하는 경우가 많다. 성능 이슈가 발생하면 NOT EXISTS 연산자로 쿼리문을 변경하는 것도 성능 향상에 좋은 방법이다.기본 사용법SELECT empno, ename, job, deptno FROM emp WHERE sal > 2500 MINUS SELECT empno, ename, job, deptno FROM emp WHERE deptno = 10MINUS 연산자를 사용할 때는 MINU..
[SQL] join에 대하여
inner join 형식은 아래와 같다SELECT pka, c1, pkb, c2FROM AINNER JOIN B ON pka = fka; 예시) 방문객들과 지불금액의 연관관계를 확인하는 sql 쿼리문이다 1. 먼저 아래와 같이 ERD에서 customer와 payment에 어떤 key를 이용하여 연결되어 있는지 확인한다 2. 찾은 key를 이용하여 inner join 쿼리를 작성한다SELECT customer.customer_id, first_name, last_name, amount, payment_dateFROM customerINNER JOIN payment ON payment.customer_id = customer.customer_idORDER BY payment_date; 위에서 보는것과..