CS26 [CS] HTTP, HTTPS 1. HTTP란? HTTP(Hyper Text Transfer Protocol)란? HTTP(Hyper Text Transfer Protocol)란 서버/클라이언트 모델을 따라 데이터를 주고 받기 위한 프로토콜이다. 즉, HTTP는 인터넷에서 하이퍼텍스트를 교환하기 위한 통신 규약으로, 80번 포트를 사용하고 있다. 따라서 HTTP 서버가 80번 포트에서 요청을 기다리고 있으며, 클라이언트는 80번 포트로 요청을 보내게 된다. HTTP는 1989년 팀 버너스 리(Tim Berners Lee)에 의해 처음 설계되었으며, WWW(World-Wide-Web) 기반에서 세계적인 정보를 공유하는데 큰 역할을 하였다. HTTP의 구조 HTTP는 애플리케이션 레벨의 프로토콜로 TCP/IP 위에서 작동한다. HTTP는.. CS 2023. 2. 20. [CS] Cors와 허용 방법 Cors CORS는 웹 브라우저에서 자바스크립트로 작성된 코드가 동작할 때, 다른 도메인으로부터 리소스를 요청하면 해당 요청을 차단하는 보안 정책입니다. 허용 방법 CORS를 허용하기 위해서는 서버 측에서 CORS를 설정해주어야 합니다. 이를 위해서는 서버 측에서 응답 헤더에 Access-Control-Allow-Origin 헤더를 추가해주면 됩니다. 이 헤더에는 요청을 허용하는 도메인을 지정할 수 있으며, '*'를 사용하면 모든 도메인에서 요청을 허용할 수 있습니다. CS 2023. 2. 7. [CS] ERD와 정규화 ERD 데이터베이스를 구축할 때 가장 기초적인 뼈대 역할을 하며, 릴레이션 간의 관계들을 정의한 것 정규화 과정 정규형 원칙 릴레이션을 더 좋은 구조로 만들어야 하고, 자료의 중복성은 감소, 독립적인 관계는 별개의 릴레이션으로 표현, 각각의 릴레이션은 독립적인 표현이 가능해야 하는 것을 의미합니다. 제1 정규형 릴레이션의 모든 도메인이 더 이상 분리 될 수 없는 원자 값으로 구성되어야 합니다. 릴레이션의 속성 값 중에서 한 개의 기본키에 두 개 이상의 값을 가지는 집합이 있어서는 안됩니다. 학생 번호 이름 수강명 진도율 1 짱구 {수학, 과학} {50%, 10%} 2 맹구 {수학} {100%} 위의 테이블을 아래와 같이 반복 집합을 제거해야 합니다. 학생 번호 이름 수강명 진도율 1 짱구 수학 50% 1.. CS 2023. 2. 6. [CS] 트랜잭션과 무결성 트랜잭션 데이터베이스에서 하나의 논리적 기능을 수행하기 위한 작업의 단위이며, ACID(원자성, 일관성, 독립성, 지속성) 특징을 가지고 있습니다. 원자성 트랜잭션과 관련된 일이 모두 수행되었거나 되지 않았거나를 보장하는 특징 커밋과 롤백 커밋은 여러 개의 쿼리가 하나의 트랜잭션 단위로 수행되고 아후에 데이테베이스에 영구히 저장됩니다. 롤백은 트랜잭션으로 처리한 하나의 묶음 과정을 취소하는 것을 말합니다. 일관성 허용된 방식으로만 데이터를 변경해야 하는 것을 의미합니다. 데이터 베이스에 기록된 모든 데이터는 여러 조건, 규칙에 따라 유효함을 거쳐야 합니다. 짱구는 1000원 맹구는 500원이 있다면 맹구가 짱구에게 1000원을 입금하지 못합니다. 격리성 트랜잭션 수행 시 서로 끼어들지 못하는 것을 말합니.. CS 2023. 2. 4. 배열과 링크드리스트 배열과 링크드리스트 배열과 링크드리스트는 데어터를 저장하는 자료구조 형태입니다. 배열 배열은 인덱스를 사용하여 데이터를 빠르게 검색할 수 있으며, 연속된 메모리 공간에 데이터를 저장합니다. 이러한 특징 때문에 데이터 접근 속도가 빠르고, 메모리 접근이 가능한 컴퓨터 구조에서는 배열이 일반적으로 많이 사용됩니다. 또한, 크기가 고정된 배열은 데이터를 추가하거나 삭제하기 어렵지만, 크기가 변경될 필요가 없는 경우에는 메모리 효율이 좋고 간단하게 구현할 수 있습니다. 링크드리스트 링크드 리스트는 연결된 노드들로 데이터를 저장합니다. 각 노드는 데이터와 다음 노드를 가리키는 포인터로 이루어져 있습니다. 링크드 리스트는 크기가 동적으로 변경될 수 있기 때문에 메모리 효율이 좋으며, 데이터 추가나 삭제가 쉽습니다... CS 2023. 2. 1. 스택(Stack)과 큐(Queue) 스택(Stack)과 큐(Queue) 스택(Stack)과 큐(Queue)는 데이터를 저장하는 자료구조 입니다 스택 스택은 데이터를 선형적으로 저장하고, 가장 마지막에 추가된 데이터를 가장 먼저 꺼내게 되는 Last-In-First-Out (LIFO) 구조를 가지고 있습니다. 이는 데이터를 스택에 쌓고, 가장 위에 있는 데이터부터 차례로 꺼내는 것과 같은 동작을 수행하는 자료구조입니다. 스택은 주로 함수 호출의 스택 프레임, 수식 계산 등에 사용됩니다. 큐 큐는 데이터를 선형적으로 저장하고, 가장 먼저 추가된 데이터를 가장 먼저 꺼내게 되는 First-In-First-Out (FIFO) 구조를 가지고 있습니다. 이는 데이터를 큐에 삽입하고, 가장 먼저 삽입된 데이터부터 차례로 꺼내는 것과 같은 동작을 수행하.. CS 2023. 1. 25. 시간복잡도와 공간복잡도 시간복잡도와 공간복잡도 시간복잡도와 공간복잡도는 알고리즘의 성능을 측정하는데 사용되는 개념 시간복잡도 시간복잡도는 알고리즘이 문제를 해결하는 데 걸리는 시간을 나타내는 것으로, 입력 크기에 따라 알고리즘의 수행 시간이 어떻게 증가하는지 분석합니다. 일반적으로 알고리즘의 최악의 경우 시간복잡도를 사용합니다. 시간복잡도는 주로 빅오 표기법(Big O notation)으로 표시되며, 입력 크기 n에 대한 알고리즘의 실행 시간이 O(f(n))으로 표기됩니다. 여기서 f(n)은 n의 함수이며, 상수값은 생략됩니다. 예를 들어, O(n)은 입력 크기 n에 대해 선형적으로 증가하는 시간복잡도를 의미합니다. O(n^2)은 입력 크기 n의 제곱에 비례하는 시간복잡도를 의미합니다. 공간복잡도 공간복잡도는 알고리즘이 문제를.. CS 2023. 1. 13. 실시간 통신 기술 종류 실시간 통신 종류 1. Polling HTTP 연결에서는 Stateless와 Connectionless 특징을 가지기 때문에 서버가 클라이언트에게 발송한 데이터가 생기더라고 서버가 일방적으로 클라이언트에게 응답을 보낼 수 없다. 요청을 받아야 응답을 보내는 구조로 클라이언트가 요청을 보낼 때까지 기다려야 한다. 이것을 해결한 방식이 Polling 방식이다. 요청을 주기적으로 계속 보내면서 서버가 전달 하고자 하는 내용이 있는지, 이벤트가 발생했는지 확인해서 가져오는 것이다. HTTP 오버헤드가 상당히 증가한다는 단점을 지니고 있다. 적합한 서비스 실시간 메시지 전달이 중요하지 않은 서비스 잦은 요청에 대응할 수 있는 서버를 지닌곳 2. Long Polling Polling과 유사하게 동작하지만 조건과 설.. CS 2023. 1. 9. 아키텍처 패턴(Architecture Pattern) 아키텍처 패턴 (Architecture Pattern) 아키텍처 패턴은 소프트웨어의 구조를 구성하기위한 가장 기본적인 토대를 제시합니다. 아키텍처 패턴은 각각의 시스템들과 그 역할이 정의되어 있고, 여러 시스템 사이의 관계와 규칙 등이 포함되어 있습니다. 검증된 구조로 개발을 진행하기 때문에 안정적인 개발이 가능합니다. 아키텍처 패턴을 도입할 경우 도메인이 복잡할수록 모델이나 코드를 더 쉽게 변경할 수 있다는 측면에서 큰 이익을 얻을 수 있습니다. 대표적인 아키텍처 패턴 저장소 패턴 (Repository pattern) 영속적인 저장소에 대한 추상화 서비스 계층 패턴 (Service layer pattern) 유스 케이스(Usecase)의 시작과 끝을 명확하게 정의하기 위한 패턴 작업 단위 패턴 (Uni.. CS 2022. 12. 29. [CS] 객체 지향 프로그래밍(Object-Oriented Programming, OOP) 객체 지향 프로그래밍 (Object-Oriented Programming, OOP) 💡 데이터와 프로세스가 동일한 모듈 내부에 위치하도록 프로그래밍하는 방식을 **객체지향 프로그래밍(Object-Oriented Programming)**이라고 부릅니다. 객체 지향 프로그래밍은 코드를 추상화해 직관적으로 사고할 수 있기 때문에, 대표적인 프로그래밍 방법론으로 적용되고 있습니다. 객체 지향 프로그래밍에서는 자동차, 동물, 사람 등과 같은 현실 세계의 객체를 유연하게 표현할 수 있습니다. 객체는 어떠한 특성을 가지고 있으며 특정 기능을 수행할 수 있습니다. 자동차는 객체이고 출발, 정지, 운행 및 제동과 같은 기능을 수행할 수 있습니다. 객체 지향 설계 5원칙 (SOLID) 💡 객체 지향 프로그래밍 및 설계의.. CS 2022. 12. 27. [CS] 객체 지향 (Object-Oriented) 객체 지향 💡 객체 지향은 소프트웨어의 핵심을 기능이 아닌 객체로 삼으며 “누가 어떠한 일을 할 것인가?”에 초점을 맞춥니다. 즉, 객체를 도출하고 각각의 역할을 정의하는 것에 초점을 맞춥니다. 그렇다면 객체 지향적인 소프트웨어는 어떻게 구분할 수 있을까요? 절차지향적인 소프트웨어와 객체지향적인 소프트웨어를 구분하는 방법은 아래의 기준을 만족할 경우 객체지향, 만족하지 않으면 절차지향적인 성격을 가집니다. 캡슐화, 다형성, 클래스 상속을 지원하는가? 데이터 접근 제한을 걸 수 있는가? 캡슐화 (Encapsulation) 💡 개념적이나 물리적으로 객체 내부의 세부적인 사항을 감추는 것을 캡슐화라고 부릅니다. 즉, 캡슐화를 사용하는 가장 큰 이유는 정보은닉을 목적으로 합니다. 정보은닉은 객체에 대한 중요한 .. CS 2022. 12. 26. JWT JWT가 무엇인가요? JSON 형태의 데이터를 안전하게 교환하여 사용할 수 있게 해줍니다. 인터넷 표준으로서 자리잡은 규격입니다. 여러가지 암호화 알고리즘을 사용할 수 있습니다. header.payload.signature 의 형식으로 3가지의 데이터를 포함합니다. (개미처럼 머리, 가슴, 배) 때문에 JWT 형식으로 변환 된 데이터는 항상 2개의 . 이 포함된 데이터여야 합니다. https://jwt.io/ 에서 간단히 확인할 수 있는데요, 위에서 말했듯이 개미처럼 머리, 가슴, 배와 같은 3가지를 가졌습니다. header(머리)는 signature(배)에서 어떤 암호화를 사용하여 생성된 데이터인지 표현합니다. payload(가슴)는 개발자가 원하는 데이터를 저장합니다. signature(배)는 이 토.. CS 2022. 12. 19. 이전 1 2 3 다음 반응형