반응형

Dev/etc. 23

JWT 인증과 인가 흐름

JWT 인증과 인가 흐름1. Axios 인터셉터를 활용한 자동 토큰 갱신 예시Axios 인터셉터 설정Axios를 사용하여 Access Token의 만료를 감지하고, Refresh Token을 사용하여 새로운 Access Token을 발급받는 방식으로 자동화할 수 있음.import axios from 'axios';// Axios 인스턴스 생성const api = axios.create({ baseURL: 'https://example.com/api', timeout: 10000, headers: { 'Content-Type': 'application/json' },});// 요청 인터셉터 (요청이 보내지기 전에 처리)api.interceptors.request.use( config => { ..

Dev/etc. 2025.03.12

8. NginX 세팅

NginX 설치sudo apt updatesudo apt install nginxNginX 커맨드sudo systemctl start nginx # 시작sudo systemctl restart nginx # 재시작sudo systemctl status nginx # 중지sudo systemctl enable nginx # 부팅 시 자동시작 설정NginX 설정 파일의 목적nginx.confNginx의 주요 설정 파일로, Nginx의 동작 방식을 정의/etc/nginx/nginx.conf 경로에 위치sites-available, sites-enabled이 두 디렉토리는 Nginx의 가상 호스트 설정을 관리하는데 사용sites-available활성화되지 않은 사이트의 설정 파일을 보관하는 디렉토리호스트별 ..

Dev/etc. 2024.12.21

이펙티브 타입스크립트 아이템 51 ~ 62

아이템 51 - 의존성 분리를 위해 미러 타입 사용하기 각자 필요한 모듈만 사용할 수 있도록 구조적 타이핑을 적용 즉, 의존성을 분리해 사용자가 사용에 용이하도록 함 작성중인 라이브러리가 의존하는 라이브러리의 구현과 무관하게 타입에만 의존한다면, 필요한 선언부만 추출하여 작성 중인 라이브러리에 넣는 것(미러링)을 고려해볼 수 있음 다른 라이브러리의 타입 선언 대부분을 추출해야 한다면, 차라리 명시적으로 @types 의존성을 추가하는 것이 나음 유닛 테스트와 상용 시스템 간의 의존성을 분리하는데도 유용 아이템 52 - 테스팅 타입의 함정에 주의하기 헬퍼 함수를 통한 테스팅 // lodash의 map import { map } from "lodash"; // 매개변수, 반환 타입 모두 체크 가능 functi..

Dev/etc. 2023.06.29

이펙티브 타입스크립트 아이템 41 ~ 50

아이템 41 - any의 진화를 이해하기 일반적인 타입들은 정제되기만 하는 반면, 암시적 any와 any[]타입은 진화할 수 있음 function range(start: number, limit: number) { const out = []; // Type is any[] for (let i = start; i < limit; i++) { out.push(i); // Type of out is any[] } return out; // Type is number[] } any를 진화시키는 방식보다 명시적 타입 구문을 사용하는 것이 안전한 타입을 유지하는 방법 아이템 42 - 모르는 타입의 값에는 any 대신 unknown을 사용하기 함수의 반환값에 타입 선언을 강제할 수 없기 때문에, 호출한 곳에서 타입 ..

Dev/etc. 2023.06.28

이펙티브 타입스크립트 아이템 31 ~ 40

아이템 31 - 타입 주변에 null 값 배치하기 한 값의 null 여부가 다른 값의 null 여부에 암시적으로 관련되도록 설계하면 안 됨 API 작성 시에는 반환 타입을 큰 객체로 만들고, 반환 타입 전체가 null이거나 null이 아니게 만들어야 함 클래스를 만들 때는 필요한 모든 값이 준비되었을 때 생성하여 null이 존재하지 않도록 하는 것이 좋음 strictNullChecks는 반드시 필요함 function extent(nums: number[]) { let min, max; for (const num of nums) { if (!min) { min = num; max = num; } else { min = Math.min(min, num); max = Math.max(max, num); } }..

Dev/etc. 2023.06.21

이펙티브 타입스크립트 아이템 21 ~ 30

아이템 21 - 타입 넓히기 넓히기 (widening) 런타임에 모든 변수는 유일한 값을 가진다 타입스크립트가 작성된 코드를 체크하는 정적 분석 시점에, 변수는 '가능한' 값들의 집합인 타입을 가진다 상수를 사용해 변수를 초기화할 때 타입을 명시하지 않으면 타입 체커는 타입을 결정해야 한다 즉, 단일 값을 가지고 할당 가능한 값들의 집합을 유추해야 한다 interface Vector3 { x: number; y: number; z: number; } function getComponent(vector: Vector3, axis: 'x' | 'y' | 'z') { return vector[axis]; } let x = 'x' let vec = {x: 10, y: 20, z: 30} getComponent(..

Dev/etc. 2023.06.15

이펙티브 타입스크립트 아이템 11 ~ 20

아이템 11 - 잉여 속성 체크의 한계 인지하기 구조적 타입 시스템에서 발생할 수있는 오류를 잡을 수 있도록 &#39;잉여 속성 체크&#39; 수행 객체 리터럴을 변수에 할당할 때 함수에 매개변수로 전달할 때 잉여 속성 체크는 할당 가능 검사와는 별도의 과정 타입 단언문을 사용하면 적용되지 않음 인덱스 시그니처를 사용해 속성을 예상할 수 있도록 함 interface Room { numDoors: number; ceilingHeightFt: number; } const r : Room = { numDoors: 1, ceilingHeightFt: 10, elephant: &#39;present&#39;, } // elephant가 없다고 에러가 발생 구조적 타이핑에 의한 오류 const obj = { num..

Dev/etc. 2023.06.12

이펙티브 타입스크립트 아이템 1 ~ 10

아이템 1 - 타입스크립트와 자바스크립트의 관계 이해하기 타입스크립트는 자바스크립트의 상위집합(superset) '정적' 타입 시스템 - 컴파일 시 변수의 타입을 지정하는 것 타입스크립트의 특징 자바스크립트의 런타임 동작을 모델링 함 타입 시스템은 런타임에 오류를 발생시킬 코드를 미리 찾아 냄 모든 오류를 찾아주지는 않고, 의도와 다르게 동작할 수도 있음 타입 체커를 통과하면서도 런타임 오류를 발생시킬 수 있음 아이템 2 - 타입스크립트 설정 이해하기 tsconfig.json에서 설정 tsc --init으로 설정파일 생성 대표적인 설정값 noImplicitAny 변수들이 미리 정의된 타입을 가져야 하는지 여부 제어, Any도 불가능. 타입을 정하지 않았어도 암시적으로 any로 간주하여 오류 발생시킴. 되..

Dev/etc. 2023.06.01
반응형