JWT란? JWT는 유저를 인증하고 식별하기 위한 **토큰(Token)**기반 인증으로 session과 비슷하다. JWT는 JSON 데이터를 Base64 URL-safe Encode를 통해 인코딩하여 직렬화한 것이 포함된다. ✔️ session - 서버에 기록하고 식별하기 때문에 데이터 양이 많은 경우 과부하 위험 jwt - token에 기본 정보들(유효기간,회원정보 등)이 담겨 있기 때문에 서버 부담 적음 구조 Header: typ와 alg라는 정보가 존재하는데 typ의 값은 JWT이고 alg는 signature를 해싱하기위한 알고리즘이다 Payload: 서버에서 첨부한 사용자 권한 정보와 데이터가 담겨있다 Signature: Header, Payload 를 Base64 URL-safe Encode를 ..
1. WebSocket 1.1 등장 배경 짧은주기로 서버에 데이터 요청시 매번 TCP연결(Connection)을 수행하야함 모든 클라이언트-서버 통신 메시지에 HTTP헤더를 가지게 됨으로 네트워크부하 이러한 문제들을 해결하기 위해 webSocket이 등장 1.2 HTTP polling 클라이언트에서 서버로 데이터 요청 서버로부터 응답 일정 주기로 반복 수행 요청과 응답이 있을 때마다 매번 새로운 연결 수행 1.3 WebSocket HTTP요청을 통해 WebSocket연결 연결후 클라이언트와 서버는 별도의 연결 작업없이 데이터를 주고 받음 서버와 클라이언트 모두 연결 종료 가능 2. WebSocket Frame Text - UTF-8 Encoidng OpCode(XOR적용) frame type 0 Cont..
도커(docker)는 리눅스의 응용프로그램들을 소프트웨어 컨테이너(Container) 안에 배치시키는 일을 자동화하는 오픈소스 프로젝트이다 Container : '패키징'과 '운반'을 편리하게 해준다 1. 가상머신 vs 컨테이너 공통점 : 애플리케이션을 관련 라이브러리 및 모든 종속항목과 패키지로 묶어 소프트웨어 서비스 구동을 위한 격리환경을 마련 차이점 : 가상화방식의 차이점 기존 가상머신은 OS전체를 image로 가상화하는 방식이지만 컨테이너는 별도의 하드웨어 에뮬레이션 없이 리눅스 커널을 공유하여 컨테이너를 실행하며 OS가 따로 존재하지 않는다. → 프로세스격리 2. 프로세스격리 사용자 공간을 여러 개로 나누어 프로세스에서 사용하는 리소스를 제한하는 방식 리눅스 컨트롤 그룹은 프로세스가 소비할 수 ..
docker version : 버전확인 docker system info : 실행 환경 확인 docker system df : 디스크 이용 상황 docker full 이미지이름 : 이미지 다운로드 docker full -a 이미지태그 : 태그내 모든 이미지 다운로드 docker image ls : 이미지 확인 repository : 이미지 이름 tag : 이미지 태그명 image ID : 이미지 ID created :작성일 size :이미지 크기 docker container run —name 이름 -d -p 포트:포트 이미지 : 컨테이너 작동 docker container run —name webserver -d -p 80:80 nginx -p옵션 : 포트에 대한 액세스 허용 -t옵션 : termina..
goormIDE는 무료로 사용 가능한 컨테이너를 항상 켜둘 수 있는 기능이 있는데, 이때 웹 사이트가 아닌 실행파일도 백그라운드 실행을 통해 실행을 유지할 수 있다. 1. 실행파일 생성 백그라운드 실행을 위해서 코드의 실행파일을 생성해야하는데, C or C++의 경우 gcc를 이용해 실행파일 제작이 가능하지만 Python의 경우 별도의 모듈을 사용하여야 한다. pip3 install pyinstaller pyinstaller 파이썬소스.py ##옵션## --onefile : 하나의 exe 실행파일 생성 -n : exe 파일명 지정 --noconsole : cmd console 미출력 위와같이 pyinstaller모듈을 다운받아 사용할 수 있으며, 실행파일은 이후 생성되는 dist디렉토리 아래 위치한다 (..
파일을 일일히 하나씩 컴파일 하다보면 계속 쌓여 관리하기 힘들어진다. 이때 Makefile을 이용해 gcc, 파일삭제, 컴파일 등 다양하고 쉽게 파일을 관리할 수 있다. 우선 프로그램 실행과정을 살펴보면, 소스파일 -> 목적파일 -> 실행파일을 거쳐가는 과정을 볼 수 있다. 이때 소스파일에서 목적파일을 만드는 과정을 컴파일 목적파일에서 실행파일을 만드는 과정을 링크라고 한다. 이때 리눅스 환경에서 gcc 명령어를 사용하는데 -c, -o옵션을 통해 각각 목적파일, 실행파일을 만들 수 있다. 예) gcc -c main.c (main.o 생성) gcc -o program.exe main.o plus.o (progra.exe생성) 현재 파일이 main.c, kor.c, ..