이론공부25 쿠키/세션이란 무엇인가? 시작전에 쿠키와 세션을 사용하는 이유에 대해서 알아봤다. 쿠키와 세션을 사용하는 이유는 HTTP특징때문이다. * connectionless, stateless한 특징때문에 HTTP 프로토콜 환경에서 서버는 클라이언트가 누구인지 확인해야 한다. - connectionless : 서버는 클라이언트에게 요청을 받으면 response를 보내고 접속을 끊는 특성 - stateless : 연결을 끊는 순간 클라이언트와 서버의 통신이 끝나며 상태정보는 유지하지 않는 특성 * 쿠키와 세션은 이런 특징을 보완(해결)하기 위해 사용합니다. 쿠키 사용자의 컴퓨터에 저장하는 정보로써 key와 value가 들어있는 작은 데이터 파일이다. 유효시간을 명시할 수 있으며, 브라우저가 종료되어도 인증시간이 유지된다는 특징이 있다. 클.. 이론공부/네트워크통신 2020. 8. 3. CORS란 무엇인가? Django를 이용해서 REST API를 만드는데 프론트단에서 정보를 요청할때 CORS에러가 났던 적이있다. CORS관련된 라이브러리를 사용하여 해결하였는데 CORS가 무엇인지 궁금하여 해당 포스팅을 작성하게 되었다. CORS란 교차 출처 리소스 공유(Cross-origin resource sharing)의 약자로 서비스된 도메인 밖의 다른 다른 도메인으로부터 요청할 수 있게 허용하는 구조이다. 특정 도메인간(cross-domain) 요청, 특히 Ajax요청은 동일-출처 보안정책(same-origin policy)에 의해 기본적으로 금지된다고 한다. 보안 상의 이유로, 브라우저는 스크립트에서 시작한 교차 출처 HTTP 요청을 제한한다. CORS는 추가 HTTP 헤더를 사용하여, 한 출처에서 실행중인 웹 .. 이론공부/네트워크통신 2020. 8. 2. CSRF란 무엇인가? 방어기법? Django를 이용하여 웹사이트를 만들때 POST로 요청을 보내면 CSRF 토큰이 존재하지 않는다며 에러가 났던적이 있다. CSRF 토큰을 form 사이에 {% csrf_token %} 와 같이 추가만 해도 해결되는 문제였는데 이것이 무엇인지 궁금하여 포스팅하게 되었다. CSRF(Cross Site Request Frogery)란 사용자가 자신의 의지와 상관없이 공격자(해커)가 의도한 대로 수정,등록,삭제 등의 행위를 웹사이트에 요청하게 하는 공격이다. 이러한 공격을 막기위한 방법이 있다. 1. Referrer 검증 Referrer 검증은 Backend에서 request의 referrer를 확인하여 도메인이 일치하는지 검증하는 방법이다. 일반적으로 referrer 검증만으로 대부분의 CSRF공격을 방어할.. 이론공부/네트워크통신 2020. 7. 31. 프로세스와 스레드, 프로그램의 차이점(운영체제,OS) 프로그램이란? 1. 파일시스템에 등록되어있는 메모리상에 올라가 있지않은 프로그램입니다. 프로세스란? 1. 메모리에 올라가있는 프로그램으로 볼 수 있습니다.(실행중인 프로그램) 프로세스의 특징 1. 스택, 힙, 데이터, 텍스트로 구성된 독립적인 메모리 영역을 가지고 있다. 2. 한개 이상의 스레드를 포함하고 있습니다. ※ 프로그램 그 자체는 프로세스가 아닙니다. 프로세스 구조 각 역할을 이렇습니다. Stack : 함수의 매개변수, 복귀주소, 로컬변수등 같은 임시자료 Data : 전역 변수들을 저장 Heap : 동적으로 할당되는 것들 Text : 코드 멀티 프로세스란? 1. 하나의 응용프로그램을 여러개의 프로세스로 구성하여 작업을 처리하도록 하는것. 장점 : 여러 프로세스중 하나가 문제.. 이론공부/운영체제 2020. 4. 26. GET, POST방식의 이해 1.GET 방식과 POST 방식의 이해 두개의 방식은 클라이언트에서 정보를 얻고 싶으면 서버에 요청 메시지를 보내서 응답을 받는 구조입니다. 데이터를 요청할 때 2가지 방법이 있습니다. 첫 번째는 GET 방식입니다. GET 방식은 헤더에 정보를 담아 요청을 합니다. 응답은 페이로드에 들어옵니다. 장점은 구현이 빠르고 편합니다. 단점은 보안에 취약합니다. (모든 요청 정보가 헤더에 있어서, ID, PW 요청하시면 안 됩니다.) 헤더의 크기가 한정적이라 보내는 데이터양에 제한이 있습니다. 두 번째는 POST 방식입니다. 포스트 방식은 페이로드에 정보를 넣어서 서버에서 페이로드의 정보에 따라 응답을 보내주는 방식입니다. 장점은 클라이언트에서 크기에 상관없이 서버에 정보 전달이 가능합니다. 정보가 헤더에 보.. 이론공부/네트워크통신 2020. 4. 25. HTTP 상태코드 참조 : https://ko.wikipedia.org/wiki/HTTP_%EC%83%81%ED%83%9C_%EC%BD%94%EB%93%9C HTTP 상태 코드 - 위키백과, 우리 모두의 백과사전 위키백과, 우리 모두의 백과사전. 둘러보기로 가기 검색하러 가기 아래는 HTTP(하이퍼텍스트 전송 프로토콜) 응답 상태 코드의 목록이다. IANA가 현재 공식 HTTP 상태 코드 레지스트리를 관리하고 있다. 모든 HTTP 응답 코드는 5개의 클래스(분류)로 구분된다. 상태 코드의 첫 번째 숫자는 응답의 클래스를 정의한다. 마지막 두 자리는 클래스나 분류 역할을 하지 않는다. 첫자리에 대한 5가지 값들은 다음과 같다: 1xx (정보): 요청을 받았으며 프로 ko.wikipedia.org HTTP 응답 코드는 크게 .. 이론공부/네트워크통신 2020. 4. 20. 트리(Tree) 출처 : https://swexpertacademy.com/main/learn/course/subjectDetail.do?courseId=AVuPDN86AAXw5UW6&subjectId=AWOVJ-_6qfsDFAWg SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 트리의 개념 비선형 구조 원소들 간에 1:n관계를 가지는 자료구조 원소들 간에 계층관계를 가지는 계층형 자료구조 상위 원소에서 하위 원소르 내려가면서 확장되는 나무(Tree)모양의 구조 정의 한개 이상의 노드로 이루어진 유한 집합이며 다음 조건을 만족한다. 노드 중 최상위 노드를 루트(root)라 한다 나머지 노드들은 n(>=0)개의 분리 집합 T1,.. 이론공부/자료구조 2020. 4. 19. 연결리스트 (Linked List) 출처 : https://swexpertacademy.com/main/learn/course/subjectDetail.do?courseId=AVuPDN86AAXw5UW6&subjectId=AWOVJ1r6qfkDFAWg SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com 시작하기 전에 배열의 구조에 대해 이해를 해야 연결리스트를 왜 써야 하는지 알 수 가있다. 메모리 상에 연속된 위치에 고정된 크기를 할당을 받아 인덱스를 이용한 접근시 O(1)의 속도로 접근을 할 수 있다. 따라서 탐색이 많은 경우는 배열을 선택하는 것은 좋은 선택이라 할 수 있다. 그렇지만 삽입과 삭제가 자주일어나서 데이터 이동이 빈번하게 일어난다면.. 이론공부/자료구조 2020. 4. 18. BFS(Breadth First Search, 너비우선탐색) 자료출처 : https://swexpertacademy.com/main/learn/course/subjectDetail.do?courseId=AVuPDN86AAXw5UW6&subjectId=AWOVIoJqqfYDFAWg SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com BFS는 그래프 탐색 알고리즘 입니다. BFS는 탐색 시작점의 인접한 정점들을 모두 차례로 방문한 후 방문했던 정점을 시작으로 하여 다시 인접한 장점들을 차례로 방문하는 방식이다. 인접한 정점들을 탐색한 후, 차례로 너비 우선 탐색을 진행해야 하므로, 선입선출 형태의 자료구조인 Queue를 활용한다. 위의 내용은 어려움으로 개인적으로 추가 큐가 빌.. 이론공부/알고리즘 2020. 4. 13. 큐(Queue)란 무엇인가? 출처 : https://swexpertacademy.com/main/learn/course/subjectDetail.do?courseId=AVuPDN86AAXw5UW6&subjectId=AWOVIoJqqfYDFAWg SW Expert Academy SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요! swexpertacademy.com Queue는 선입선출(FIFO) 구조이다. 서비스 대기열(버퍼)같은 경우에 사용하게 된다. 선입선출 구조이기 때문에 앞쪽을 나타내는 Front와 뒤쪽을 나타내는 Rear가 있다. 버퍼 : 일시적으로 그 데이터를 보관하는 메모리 영역 Queue에서 필요한 주요 동작은 아래와 같다. enQueue() : 큐에 데이터를 넣는 과정, Rear가 커진다. Pu.. 이론공부/자료구조 2020. 4. 3. Stack 이란?(개념, 동작, 구현) 스택이란? 선형적 자료구조이며 데이터를 삽입시 뒤에 누적며 데이터를 꺼낼때는 뒤에서부터 꺼내는 자료구조입니다. 나중에 들어온 데이터가 먼저 나간다고 하여 Last Input First Out 이라하여 LIFO 구조라고 합니다. 뒤에서만 접근이 가능하므로 제한적으로 접근한다고 볼수있으며, 선형적 자료구조입니다. 위와 같이 데이터를 넣으면 위로 쌓이고 꺼낼때는 위부터 나가게 됩니다. C나 C++로 스택을 구현하기 위해서는 신경써야 할것이 많습니다. 그러나 파이썬은 list에 스택의 기능이 이미있어 파이썬에서는 구현하기가 쉽습니다. C++로 구현하는 것은 나중에 올리도록 하겠습니다. 아래는 파이썬으로 간단하게 구현한 스택입니다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 .. 이론공부/자료구조 2020. 2. 20. 보이어-무어 알고리즘(문자열 검색, Python) 보통 문자열이 일치하는 방식을 생각하면 아래와 같이 나옵니다. 1 2 3 4 5 6 7 8 def pattonmatch(a, b): for i in range(len(b) - len(a) + 1): for j in range(len(a)): if b[i+j] != a[j]: break else: return i return -1 하나씩 비교하며 틀릴시 옆으로 쉬프트하여 비교합니다. 시간복잡도는 O(N^2)이 됩니다. 문자열 탐색범위가 작다면 괜찮지만 탐색범위가 커진다면 위와 같은방식은 부담스럽습니다. 그래서 문자열 탐색 알고리즘을 사용하게 되는데 보통 KMP와 보이어-무어 알고리즘을 사용한다고 합니다. 이번에는 보이어-무어 알고리즘에 대해 포스팅하겠습니다. 보이어-무어 알고리즘의 특징: 1. 오른쪽 끝부.. 이론공부/알고리즘 2020. 2. 19. 이전 1 2 3 다음 💲 광고입니다.