본문 바로가기

분류 전체보기

(278)
JSON Web Token (JWT) jwt는 Header 와 Payload , Signature 이 세 부분으로 구성되어 있고 각 부분은 . 으로 구분한다. JWT를 검증하는데 필요한 정보를 가진 JSON 객체는 Base64 URL-Safe 인코딩된 문자열이다. 1.Header 헤더는 JWT를 검증방법에 대한 내용을 담고 있다. { "alg": "ES256", // 서명시 사용하는 알고리즘 "kid": "Key ID" //서명시 사용하는 public/private key 식별값 } 위와 같은 JSON이 직렬화 되었을때 이것을 UTF-8 과 Base64 URL-Safe 인코딩하면 헤더가 생성된다. 2. Payload JWT의 내용에 해당 Payload 에 있는 속성들을 Claim Set 이라고 부른다. Claim Set 의 내용은 클라이언트..
쿠키, 세션, 캐시 요약 쿠키와 세션은 HTTP 의 약점을 보완하기 위해서 사용된다. HTTP의 특성 HTTP는 connectionless 와 stateless 라는 특성을 가진다. 요약하자면 한번 연결을 하면 연결과 상태를 보전하지 않는다. 1. connectionless 란? 클라이언트가 요청을 한 후 응답을 받으면 그 연결을 끊는 특징이다. 클라이언트가 request 를 서버로 보내면 , 서버는 클라이언트에게 response를 하고 접속을 끊는다. 2. stateless 란? stateless 는 통신이 끝나면 상태를 유지하지 않는 특징이다. 쿠키 1. 쿠키란? 쿠키는 클라이언트에 파일로서 저장이된다. 하나의 쿠키값은 4KB까지 저장이 가능하고 Response Heade 에 Set-Cookie 속성을 사용해서 클라이언..
프로세스와 스레드란? 운영체제와 연관이 있다. 1.프로세스란? 프로그램은 어떤 작업을 실행할 수 있는 파일이다. 프로세스는 컴퓨터 메모리에서 실행되고 있는 프로그램이다. 운영체제로부터 시스템 자원을 할당 받으며 자원의 종류의 예로 CPU 시간이나, 주소 공간, 메모리 영역이 있다. 할당되는 메모리영역은 Code, Data ,Stack, Heap 구역으로 나뉘어져 있다. 프로세스에는 최소 하나의 스레드를 가지고 있다. 각 프로세스는 별도의 주소 공간에서 실행되며, 한 프로세스는 다른 프로세스의 변수나 자료에 접근할 수 없다. 만약 각 프로세스의 자원끼리 통신을 하려면 파이프, 소켓, 파일 등의 통신 방법이 필요하다. 2.스레드란? 프로세스 내에서 실행되는 흐름의 단위이다. 프로세스가 할당받은 자원의 실행 단위이기도 하다. 프로..
JAVA - 추상메소드와 추상클래스 그리고 인터페이스는 왜 쓰는걸까? 추상메소드 클래스 내에서 추상메소드가 있고 이 클래스를 상속할 때 추상메소드를 반드시 재정의 해서 쓴다. 추상클래스 abstract 키워드로 선언한 클래스이다. 추상 메소드가 있는 경우와 없는 경우가 있다. 추상 클래스는 인스턴스를 생성할 수 없다. 추상클래스는 인스턴스 생성의 목적이 아니다. 상속이 목적이다. 상속할 때 추상클래스가 되지 않으려면 모든 추상 메소드를 전부 다 구현해야한다. 인터페이스 상수와 추상메소드의 집합이다. 객체화가 불가능하며 인터페이스 내의 메소드는 public abstract 상태이다. 컴파일시 자동으로 생성해준다. default 키워드를 사용해 공통적인 코드를 정의할 수도 있다. 사용하는 이유 다형성과 다형성을 통한 낮은 결합도와 높은 응집도를 추구하는 것으로 귀결된다. 추상..
객체와 클래스 요약 클래스는 객체의 설계도이다. 객체는 클래스 토대로 구현한 것이다. 객체 객체란 구현할 대상이다. oop 관점에서 클래스 타입으로 선언되었을 때 객체 라고 부른다. '클래스의 인스턴스' 라고도 부른다. 인스턴스란? 구현된 객체의 실체이다. 클래스 정보를 바탕으로 한 어떤 것이 메모리에 할당이되면 그제서야 그것을 인스턴스라고 부를 수 있다. 그럼 객체와 클래스의 다른점은? 클래스는 설계도이다. 객체는 설계도로 만들어진 대상이다. 객체와 인스턴스라는 용어를 굳이 구별해서 쓴다면 그 이유는 객체는 '실체' 에 초점을 인스턴스는 '관계' 에 초점을 맞춘다는 특징 때문이다. 엄밀히 말한다면 인스턴스는 객체에 포함된다. (인스턴스 < 객체 ) 클래스 타입으로 선언되었을 때 객체라고 부르고 그 객체가 메모리에 할..
자바의 특징은 무엇일까 요약하자면 4가지를 말할 수 있다. 1. 객체 지향 언어이다. (OOP) 2. 자동 메모리 관리를 해준다. (GC) 3. 운영체제에 독립적이다. 4. 동적 로딩을 지원한다. 1. 객체 지향언어 -상속, 다형성, 캡슐화, 추상화의 특징이다. 2. 자동 메모리 관리 - 더 이상 사용하지 않는 메모리는 해제 시켜 준다. - JVM 에 있는 Garbage Collection이 자동으로 메모리 관리를 해준다.. - 개발자가 GC 를 해제하고 직접 메모리 관리를 할 수도 있다. 3. 운영체제에 독립적이다. 자바는 JVM 위에서 돌아간다. 때문에 CPU나 운영체제의 영향을 받지 않는다. 자바의 멀티스레드 프로그래밍은 운영체제의 지원이 필요없다. (c 나 C++ 은 필요하다.) 4. 동적 로딩 지원 - 자바는 어플리케..
aws에 배포하기 -3 배포 자동화 도커를 이용해보자 1.우분투에서 docker 설치 https://hiseon.me/linux/ubuntu/install-docker/ 우분투에서 docker 설치 방법 - HiSEON 우분투에서 docker 설치 방법 우분투 16.04 또는 우분투 18.04 버전에서 도커 docker-ce 버전을 설치하는 방법을 설명드립니다. 그리고 여러버전의 CUDA Toolkit을 사용할 수 있도록 nvidia-docker를 추가적으 hiseon.me $sudo apt update 이전에 있던 docker 를 삭제하고 $ sudo apt-get remove docker docker-engine docker.io 도커 설치에 필요한 패키지들을 설치 $ sudo apt-get update && sudo apt-get i..
aws 에 배포하기 2 -rds , s3 1. rds 연동 rds 인스턴스를 생성하고 settings.py에 db 설정을 해준다. 1 2 3 4 5 6 7 8 9 10 DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'HOST': 'che1-db.czxnimwgemge.ap-northeast-2.rds.amazonaws.com', 'PORT': '3306', 'NAME': 'django_rds', 'USER': 'admin', 'PASSWORD': '*******', } } Colored by Color Scripter cs 그리고 migration을 하자 python3 manage.py migrate 만약 오류가 뜨면 pip3 install MysqlClient 를 하자 만약..