기초

기초

JWT

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를 ..

기초

WebSocket

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..

기초

[Python] Flask

from flask import Flask app=Flask(__name__) @app.route("/",methods=["GET"]) def index(): return "Hello Python Flask" app.run(host="0.0.0.0", port=7777) 1. 필수 from flask import Flask app=Flask(__name__) @app.route("/", methods=["GET"]) app.run() 2. app.route 설정 host host=”0.0.0.0” 미지정시 루프백으로 지정되며, 0.0.0.0을 지정시에는 모든 아이피 허용으로 외부접속 가능하다 port port=7777 port설정이 가능하다 debug debug=True html,css설정시 true를 ..

기초/Docker

Docker 구현해보기

환경 : Linux Ubuntu22, WSL2 WSL2 업데이트 참고 : https://gaesae.com/161 --Docker환경 다운로드-- sudo apt update sudo apt-get install -y ca-certificates sudo apt-get install -y curl sudo apt-get install -y software-properties-common sudo apt-get install -y apt-transport-https --Docker Image 다운로드-- sudo docker pull ubuntu:22.04 sudo docker images : docker image목록 출력 --Docker Container 생성-- sudo docker create -i..

기초/Docker

Docker란?

도커(docker)는 리눅스의 응용프로그램들을 소프트웨어 컨테이너(Container) 안에 배치시키는 일을 자동화하는 오픈소스 프로젝트이다 Container : '패키징'과 '운반'을 편리하게 해준다 1. 가상머신 vs 컨테이너 공통점 : 애플리케이션을 관련 라이브러리 및 모든 종속항목과 패키지로 묶어 소프트웨어 서비스 구동을 위한 격리환경을 마련 차이점 : 가상화방식의 차이점 기존 가상머신은 OS전체를 image로 가상화하는 방식이지만 컨테이너는 별도의 하드웨어 에뮬레이션 없이 리눅스 커널을 공유하여 컨테이너를 실행하며 OS가 따로 존재하지 않는다. → 프로세스격리 2. 프로세스격리 사용자 공간을 여러 개로 나누어 프로세스에서 사용하는 리소스를 제한하는 방식 리눅스 컨트롤 그룹은 프로세스가 소비할 수 ..

기초/Docker

Docker 명령어

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..

기초/알쓸잡

[Python] goormIDE 백그라운드 실행

goormIDE는 무료로 사용 가능한 컨테이너를 항상 켜둘 수 있는 기능이 있는데, 이때 웹 사이트가 아닌 실행파일도 백그라운드 실행을 통해 실행을 유지할 수 있다. 1. 실행파일 생성 백그라운드 실행을 위해서 코드의 실행파일을 생성해야하는데, C or C++의 경우 gcc를 이용해 실행파일 제작이 가능하지만 Python의 경우 별도의 모듈을 사용하여야 한다. pip3 install pyinstaller pyinstaller 파이썬소스.py ##옵션## --onefile : 하나의 exe 실행파일 생성 -n : exe 파일명 지정 --noconsole : cmd console 미출력 위와같이 pyinstaller모듈을 다운받아 사용할 수 있으며, 실행파일은 이후 생성되는 dist디렉토리 아래 위치한다 (..

기초/Git

Makefile

파일을 일일히 하나씩 컴파일 하다보면 계속 쌓여 관리하기 힘들어진다. 이때 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, ..

기초/자료구조

[015]원형큐

#include #include // ===== 원형큐 코드 시작 ===== #define MAX_QUEUE_SIZE 5 typedef int element; typedef struct{// 큐 타입 element data[MAX_QUEUE_SIZE]; int front, rear; } QueueType; // 오류함수 void error(char *message) { fpritntf(stderr, "%s\n", message); } void init_queue(QueueType *q) { q->front = q->rear = 0; } // 공백상태 검출 int is_empty(QueueType *q) {*q-> return (q->front == q->rear); } // 포화상태 검출 int is_f..

기초/자료구조

[014]선형큐

#include #include #define MAX_QUEUE_SIZE 5 typedef int element; typedef struct {// 큐 타입 int front; int rear; element data[MAX_QUEUE_sIZE]; } QueueType; void error(char *message) { fprintf(stderr, "%s\n", message); exit(1); } void init_queue(QueueType *q) { q->rear = -1; q->front = -1; } void queue_print(QueueType *q) { for(int i=0 ; irear) printf(" | "); else printf("%d | ",q->data[i]); } printf..

Yoiiin
'기초' 카테고리의 글 목록