JWT 와 Session 세션은 서버 측에서 인증을 마친 사용자 정보를 가지고 있는 것 JWT 는 인증을 마치고 권한에 대한 정보를 클라이언트 측에서 암호화된 텍스트 형태로 가지고 있는 것 왜 JWT 인가? 헤더와 페이로드를 가지고 서명 필드를 생성하기 때문에 데이터 변조 후 재전송을 막을 수 있음 세션 기반 시스템은 분산 / 클러스터형 애플리케이션 사용하기 어려운 반면, 클라이언트 측에서 인가에 필요한 정보를 가지고 있기 때문에 확장성이 용이 JWT 란? Json Web Token (RFC 7519)의 약자로서, 2010 년 12월 28일 처음 게시되었음 JWT의 이점은 다음과 같다. 메타 데이터를 포함할 수 있음 OAuth 2와 호환 됨 만료를 제어할 수 있음 json 형식으로 데이터가 전송 됨 JW..
mac 에 RabbitMQ Server 를 설치하려다가.. M1 칩셋에 문제가 있는건지 메모리 참조 문제가 발생 알아보니 Mac 과 호환 안되는 문제가 있는 것 같다. Rosetta3.10 on macOS segmentation fault 11 따라서 윈도우 컴퓨터로 설치를 진행합니다... ㅋㅋㅋ ErLang 설치 RabbitMQ 는 ErLang 을 필요로 한다. Erlang Programming Language Index - Erlang/OTP The official home of the Erlang Programming Language www.erlang.org RabbitMQ 설치하기 Downloading and Installing RabbitMQ Downloading and Installing R..
출처 https://hyperconnect.github.io/2019/11/15/redis-distributed-lock-1.html 레디스와 분산 락(1/2) - 레디스를 활용한 분산 락과 안전하고 빠른 락의 구현 레디스를 활용한 분산 락에 대해 알아봅니다. 그리고 성능을 높이고 일관성을 보장하는 방법에 대해 알아봅니다. hyperconnect.github.io 출처 참고 부탁드립니다. 락이란? Database 에서 사용하는 개념으로 트랜잭션 처리의 순차성을 보장하기 위한 방법 중 하나이다. 트랜잭션이란 DB의 나누어지지 않는 최소한의 처리 단위이다. 이런 DB의 특징을 Atomic (원자적)하다고 부르는데 쉽게 말해서 한 번에 하나의 행동이 되는 것을 보장한다는 의미이다. 락을 획득한다는 것은 자원을..
Redis 란? Redis 는 NoSQL 의 한 종류이다. REmote DIctionary Server 를 의미 NoSQL 이란? NoSQL은 데이터베이스는 전통적인 관계형 데이터베이스 보다 덜 제한적인 일관성 모델을 이용하는 데이터의 저장 및 검색을 위한 매커니즘을 제공한다. NoSQL 데이터베이스는 단순 검색 및 추가 작업을 위한 매무 최적화된 키 값 저장 공간으로 레이턴시와 스루풋과 관련하여 상당한 성능 이익을 내는 것이 목적이다. 출처 : https://ko.wikipedia.org/wiki/NoSQL 기존 관계형 데이터베이스와는 조금 다는 목적성을 가진 데이터베이스 입니다. 데이터베이스 분선처리, 빠른 쓰기, 데이터의 안정성등 빠른 퍼포먼스를 내기 위해 사용되는 것입니다. NoSQL 의 종류 K..
참고 https://medium.com/harrythegreat/aws-%EA%B0%80%EC%9E%A5%EC%89%BD%EA%B2%8C-vpc-%EA%B0%9C%EB%85%90%EC%9E%A1%EA%B8%B0-71eef95a7098 [AWS] 가장쉽게 VPC 개념잡기 가장쉽게 VPC 알아보기 medium.com VPC 에 대해서 알기전에 VPN(Virtual Private Network) 에 대해 알아본다. VPN을 번역하면 "가상사설망" 이라고 부름. "가상"이라는 말에서 알 수 있든 실제 사설망이 아니라 가상의 사설망이다. 예를 들어서 위 그림과 같이 회사의 네트워크가 구성되어 있고 보안상의 이유로 사무실 A(공간 A)와 사무실 B(공간 B)의 인원이 다른 네트워크망을 사용하고 있다고 가정해보자. ..
트랜잭션은 ACID를 보장해야 한다. ACID 란? Atomicity : 원자성 트랜잭션 내에서 실행한 작업들은 마치 하나의 작업인 것 처럼 모두 성공하든가 모두 실패해야 한다. Consistency : 일관성 모든 트랜잭션은 일관성 있는 데이터베이스 상태를 유지해야 한다. 예를 들어 DB 에서 정해놓은 무결성 제약 조건을 항상 만족해야 한다. 또는 타입을 만족해야한다. (숫자컬럼에 문자열 값이 저장되어서는 안된다.) Isolation : 격리성 동시에 실행되는 트랜잭션들이 서로에게 영향을 미치지 않도록 격리한다. 예를 들어 동시에 같은 데이터를 수정하지 못하도록 해야 한다. 격리성은 동시성과 관련된 성능 이슈와 연관이 깊고, 우리는 격리 수준을 선택할 수 있다. Durability : 지속성 트랜잭션을..
참고 링크 https://gmlwjd9405.github.io/2018/05/11/types-of-git-branch.html [GitHub] Git 브랜치의 종류 및 사용법 (5가지) - Heee's Development Blog Step by step goes a long way. gmlwjd9405.github.io 이 글은 위 블로그의 정보를 많은 부분 참고했고, 다만 제가 이해하기 편한 언어로 변경 했기 때문에 사용 자료로 부적합할 수 있습니다. 5 가지 git branch 종류 Gitflow Workflow 에서는 제품을 개발 하는 시점부터 운영하는 마지막까지 항상 존재하는 메인 브랜치 (master, develop) 와 일정 기간 동안만 유지되는 보조 브랜치들 (feature, release..
출처 https://gmlwjd9405.github.io/2018/05/12/how-to-collaborate-on-GitHub-3.html [GitHub] GitHub로 협업하는 방법[3] - Gitflow Workflow - Heee's Development Blog Step by step goes a long way. gmlwjd9405.github.io Gitflow 란? nive.com 의 "빈센트 드리센"이 제한한 것으로 Gitflow Workflow 라고 부른다. Feature Branch Workflow 보다 복잡하지만, 대형 프로젝트에도 적용할 수 있는 좀 더 엄격한 작업 절차를 가진다. Gitflow Workflow 도 Feature Branch Worflow 와 같이 팀 구성원 간의 ..
환경 테스트는 PostgreSQL 11 으로 진행했는데 MySQL 이나, MariaDB 는 같은 sql 을 사용해도 테스트 할 수 있을 것이라고 생각합니다. 테이블 ddl CREATE TABLE IF NOT EXISTS public.board ( id integer NOT NULL DEFAULT nextval('board_id_seq'::regclass), title text COLLATE pg_catalog."default", name text COLLATE pg_catalog."default", content text COLLATE pg_catalog."default", readnum numeric, phone text COLLATE pg_catalog."default", pwd text COLLAT..
비교 컬럼 price_numeric : numeric type price_money : money type price_double : double type 비교 각각, 70.0007 에 해당하는 값과 3.33333333333333333333333 에 해당하는 값을 넣은 뒤에 select 쿼리를 날렸습니다. select name, price_numeric, price_numeric * 30000000 as "numeric", price_money, price_money * 30000000 as "money", price_double, price_double * 30000000 as "double" from float_test 결과 numeric 의 경우 수가 커져도, 정확한 값을 유지하고 있음 price_..
Javascript Key event 처리 (KeyCode deprecated 대체 코드)
2021.07.25
더 이상 사용하면 안되는 이벤트 처리 방식 인터넷 익스플로러가 한창이던 시절.. 우리는 자바스크립트로 어떤 키가 눌렸는지 확인하기 위해서 event 라는 키워드를 사용했습니다. event 라는 키워드를 사용하면 발생한 이벤트를 자동으로 event 라는 키워드로 할당 해줍니다. 이것은 Internet Explorer용으로 Microsoft에 의해 구현되었으며 이런 방식을 사용하는 사이트가 아직도 많습니다. 아직 동작하는 코드이긴 하나 이는 브라우저 표준이 아닌 코드입니다. 이 코드를 사용하면 아래와 같이 권장하지 않는다는 문구가 뜹니다. 더 나은 이벤트 처리의 방법 더 나은 이벤트 처리는 다음과 같이 이벤트 리스너를 사용하는 방법입니다. 이벤트 리스너가 감지한 이벤트를 넘겨 받아서 처리하는 방법입니다. k..
Content-Type 이란? https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Content-Type Content-Type - HTTP | MDN Content-Type 개체 헤더는 리소스의 media type을 나타내기 위해 사용됩니다. developer.mozilla.org MDN 에서는 Content-Type을 다음과 같이 정의하고 있습니다. 응답 내에 있는 Content-Type 헤더는 클라이언트에게 반환된 컨텐츠의 컨텐츠 유형이 실제로 무엇인지를 알려줍니다. 말이 조금 어려우니 정리를 해봅니다. 응답 헤더에 Content-Type을 포함할 수 있으며 이는 응답의 유형 (보통 Body의 데이터 유형)이 어떻게 되는지 클라이언트 (응답을 받을 시스..