분류 전체보기
-
URI에 네이버를 입력하면 발생하는 일CS 2024. 6. 15. 20:42
0. HTTP, URIHTTP(Hypertext Transfer Protocol )HyperText인 HTML을 전송하기 위한 통신 규약프로토콜 : 컴퓨터 사이에서 데이터를 교환하는 방식을 정한 규칙 체계특징Connectionless 프로토콜(비연결 지향) 클라이언트가 서버에 요청(Request)했을 때 해당 요청에 맞는 응답(Response)를 보낸 후 연결을 끊는 처리방식Stateless(스테이트리스) 프로토콜 커넥션을 끊는 순간 클라이언트와 서버의 통신이 끝나며 상태 정보는 유지하지 않는 특성 존재"서버가 클라이언트의 상태를 보존하지 않는다."는 의미는 HTTP 통신을 하면 사용자가 로그인을 한 후 마이페이지로 넘어가면 로그인이 해제된다는 의미입니다. 이를 해결할 방법은 쿠키, 세션, 토큰이 있습니..
-
RESTful API 설계Backend 2024. 5. 27. 15:49
리소스, URI리소스는 웹 상에 존재하는 이름을 가진 모든 정보를 의미합니다. url를 이용함으로써, 프로그램은 리소스가 표현하는 정보에 접근할 수 있습니다.URI : 유니폼 리소스 식별자, 리소스를 통일적으로 식별하는 ID💡 URI에는 URL, URN이 있습니다. URL은 리소스의 위치, URN은 리소스의 이름을 뜻합니다. 리소스의 이름으로 찾는 것은 거의 불가능한 일이기 때문에 거의 사용되지 않습니다. 따라서 해당 글에서는 URL과 URI를 같은 의미로 사용하겠습니다. REST아키텍처 스타일이란 시스템의 아키텍처를 결정할 때 나침반이 되는 것을 의미합니다.REST란 네트워크 시스템의 아키텍처 스타일, 즉 웹 전체의 아키텍처 스타일을 의미합니다. REST의 구성자원(Resource): URI행위(Ve..
-
암호화 방식(대칭키, 공개키)CS 2024. 5. 27. 11:21
암호화암호화란 정보를 전달할 때 해당 메시지를 수신자가 아닌 사람이 알지 못하게 하고, 수신자는 해석할 수 있도록 하는 것입니다.또한 자신이 혼자 확인하는 정보라도, 타인이 이해할 수 없는 메시지로 만드는 것도 포함됩니다. 예를 들어, a가 b에게 “tistory”라는 메시지를 암호화해서 전달한다고 가정합니다.a는 “tistory”의 각각 글자를 키보드의 왼쪽 글자로 변경하는 규칙을 통해 “ruarit”라고 전송하려합니다.중간에 가로챈 사람은 메시지가 어떤 뜻인지 이해할 수 없습니다. 이렇게 해독 불가능한 메시지를 암호문이라고 합니다.원본 메시지(평문)을 암호문으로 변환하는 과정을 암호화(Encryption)라고 부르며, 암호문을 평문으로 변환하는 과정을 복호화(Decryption)라고 부릅니다.암호화,..
-
[혼자 공부하는 SQL] 6장. 인덱스, 복합 인덱스DB 2024. 5. 7. 20:45
인덱스데이터를 빠르게 찾을 수 있도록 도와주는 도구, 책의 찾아보기와 비슷 인덱스의 문제점필요 없는 인덱스를 만들면 데이터베이스가 차지하는 공간이 더 늘어나고, 인덱스를 사용해 데이터를 찾는 것이 전체 테이블을 찾아보는 것보다 느려짐💡 데이터베이스에 인덱스를 생성해도, 인덱스를 사용해서 검색하는 것이 더 빠를지, 아니면 전체 테이블을 검색하는 것이 더 빠를지는 MySQL이 알아서 판단한다. 만약 인덱스를 사용하지 않는다면, 사용하지도 않는 찾아보기를 만든 것이므로 공간을 낭비한 셈이다. 인덱스의 장점과 단점장점적절한 인덱스를 생성하면, 빠른 응답 속도를 얻을 수 있다.적은 처리량으로 요청한 결과를 빨리 얻을 수 있으므로, 시스템 성능이 향상된다.단점인덱스도 공간을 차지하므로 데이터베이스 안에 추가적인 ..
-
[혼자 공부하는 SQL] 5장. 테이블과 뷰DB 2024. 4. 27. 04:09
제약조건의 기본 개념과 종류제약조건(constraint) : 데이터의 무결성을 지키기 위해 제한하는 조건 MySQL에서 제공하는 대표적인 제약조건PRIMARY KEY 제약조건FOREIGN KEY 제약조건UNIQUE 제약조건CHECK 제약조건DEFAULT 정의NULL 값 허용 기본 키 제약조건기본 키(primary key) : 데이터를 구분할 수 있는 식별자기본 키로 지정하면 클러스터형 인덱스가 자동으로 생성된다.테이블은 기본 키를 1개만 가질 수 있다. 따라서 테이블의 특성을 가장 잘 반영하는 열을 선택하는 것이 좋다.mem_id CHAR(8) NOT NULL PRIMARY KEY 외래 키(foreign key) 제약조건두 테이블의 관계를 연결해주고, 그 결과 데이터의 무결성을 보장해주는 역할외래 키가 ..
-
[혼자 공부하는 SQL] 4장. SQL 고급 문법DB 2024. 4. 17. 22:56
MySQL의 데이터 형식 정수형 데이터 형식 바이트 수 숫자 범위 TINYINT 1 -128 ~ 127 SMALLINT 2 -32,768 ~ 32,767 INT 4 약 -21억 ~ 21억 BIGINT 8 약 -900경 ~ 900경 UNSIGNED 예약어를 사용하면 값의 범위가 0부터 시작되도록 할 수 있다. 문자형 CHAR : 고정길이 문자형(자릿수 고정) VARCHAR : 가변길이 문자형(자릿수 유동적) 💡 CHAR(10)에 ‘가나다’를 저장해도 10자리 모두 확보, VARCHAR(10)에 ‘가나다’를 저장하면 3자리만 사용 VARCHAR가 CHAR보다 공간을 효율적으로 운영할 수 있지만, MySQL 내부적으로 성능면에서는 CHAR로 설정하는 것이 더 좋다. ⇒ CHAR는 글자의 개수가 고정된 경우, ..
-
[Nest.js] GuardsBackend/Nest.js 2024. 4. 4. 23:49
Guards 애플리케이션의 최전선에서 말그대로 애플리케이션을 보호하는 역할을 담당합니다. 가드를 이용하면 컨트롤러가 요청을 처리하기 전에 안전하지 않은 요청을 효과적으로 차단할 수 있습니다. 따라서 애플리케이션 보안을 위해서 필수적인 사용자 인증이나 접근 제어를 구현하는 데에 유용합니다. NestJS로 들어오는 요청은 컨트롤러(controller) 단에 도달하기 전에 반드시 가드를 거쳐가도록 되어 있습니다. 기본적으로, Guard는 @Injectable() 데코레이터로 주석이 달린 클래스로, CanActivate 인터페이스를 구현합니다. 단일 책임이 존재하고, 특정조건에 따라 요청을 라우터 핸들러에 의해 처리할지 여부 결정합니다. ⇒ 승인(Authorization) 특정 조건 : 권한, 역할, ACL(A..
-
[혼자 공부하는 SQL] 3장. SQL 기분 문법DB 2024. 4. 4. 01:33
DROP DATABASE IF EXISTS market_db; -- 만약 market_db가 존재하면 우선 삭제한다. CREATE DATABASE market_db; CREATE TABLE buy -- 구매 테이블 ( num INT AUTO_INCREMENT NOT NULL PRIMARY KEY, -- 순번(PK) mem_id CHAR(8) NOT NULL, -- 아이디(FK) prod_name CHAR(6) NOT NULL, -- 제품이름 group_name CHAR(4) , -- 분류 price INT NOT NULL, -- 가격 amount SMALLINT NOT NULL, -- 수량 FOREIGN KEY (mem_id) REFERENCES member(mem_id) ); AUTO_INCREMENT..