얕은 복사에는 스프레드 연산자가 쓰인다.(https://velog.velcdn.com/images/ldh7157/post/ef5c91f1-820b-49ba-8aeb-40c9e4c9d20a/image.png)스프레드 연산자를 사용해서 객체의 중괄호를 한번 벗겨냈
Equal Operator이라 부르며, a==b라고 할때, a와 b의 값이 같은지를 비교해서 단순히 같으면 true, 다르면 false라고 한다.(값만 같으면 true)Strict Equal Operator이라 부르며, a===b라고 할때, 값과 값의 종류(Data
JS 기본 상식 2. ES6의 특징 Javascript ES6의 대표적인 10가지 특징 Block-Scoped Constructs Let and Const Default Parameters Template Literals Muti-line Strings Destr
var의 범위는 기본적으로 전역범위 혹은 함수 범위로 지정그렇기 때문에 var로 선언된 모든 변수는 전체에서 사용 가능but var가 함수 내에서 선언될 때는 함수 버위로 지정!!호이스팅이란 변수와 함수 선언이 맨위로 이동되는 자바스크립트 매커니즘이다.var변수는 범위
Node.js는 Chrome V8 JavaScript 엔진으로 빌드 된 JavaScript 런타임입니다.즉, 노드를 통해 다양한 자바스크립트 애플리케이션을 실행할 수 있으며, 서버를 실행하는 데 제일 많이 사용된다.Node.js는 JavaScript를 서버에서도 사용할
컴퓨터 안에 또다른 컴퓨터를 설치하는 것(가장 대표적임)내 포트가 이상해데이터베이스! 잠시 이것좀 저장해줄래?docker, docker-compose이 같이 설치 되어야함sudo apt install docker-compose서로 운영체제가 다르기 때문에 가상머신(V
Rest-API 에 요청하는 요청담당자는 axios 입니다.GraphQL-API 에 요청하는 요청담당자는 apollo-client 입니다.용량이 매우 크다 (모든 데이터를 반환해오기 때문)그럼에도 많은 기업체에서 이용하고 있기에 숙지하고 있어야 한다.postman과 s
\*\*중괄호{} 안에 넣어서 객체로 넘겨주게되면, 순서와 상관없이 이름으로 인수와 매개변수가 매칭되기 때문에 소괄호() 안에 넣어서 넘겨주는것 보다 안전한 코드 작성을 할 수 있습니다.따라서, 구조분해할당을 통해 데이터 상의 오염을 막을 수 있는 것입니다.\*\*기존
위와 같이 템플릿 리터럴을 사용하지 않으면 +나 공백을 주기 위해 " "을 사용해야 하는데 이같은 불편함을 줄이기 위해 이용한다.(\`\`) 로 감싼뒤 변수에는 ${} 이용한뒤 편하게 타이핑 치면 완성된다.템플릿 리터럴을 사용하면 여러 줄의 문자열도 나눠서 작성할 필요
http 프로토콜을 암호화시킨 버전입니다. http 통신 시에는 브라우저와 웹서버 간의 주고받는 데이터가 노출되는 위험이 있습니다. 이러한 취약점을 보완하기 위해 데이터를 암호화시켜 주고받는 방법입니다 HTTP란 HyperText Transfer Protocol의 약자
axios로 인해 부른 값을 기다려 주지 않아 Promise로 처리 된다.이를 해결하기 위해await와 async를 둘다 사용하여 axios.get()의 데이터를 받는 동안 기다리게 동기로 바꿔준다.var과 선언식은 함수의 중복선언이 가능함그래서 오류를 발생시키기에va
SQL을 사용하면 RDBMS에서 데이터를 저장, 수정, 삭제 및 검색 할 수 있음관계형 데이터베이스에는 핵심적인 두 가지 특징이 있다.데이터는 정해진 데이터 스키마에 따라 테이블에 저장된다.데이터는 관계를 통해 여러 테이블에 분산된다.데이터는 테이블에 레코드로 저장되는
디자인 패턴 중 하나로 "좀 더 쉽고 편리하게" 사용할 수 있게 만든 특정한 방법들을 디자인 패턴이라고 합니다. 그 디자인 패턴이라는 것은 스트래티지 패턴, 옵저버 패턴 등등 정말 여러가지가 있고 그 중에 하나가 바로 MVC패턴입니다. MVC 는 Model, View
웹 크롤링이란 웹상의 정보들을 탐색하고 수집하는 작업을 의미합니다. 인터넷에 존재하는 방대한 양의 정보를 사람이 일일히 파악하는 것은 불가능한 일입니다. 때문에 규칙에 따라 자동으로 웹문서를 탐색하는 컴퓨터 프로그램, 웹 크롤러(Crawler)를 만들었습니다.크롤러는
NestJs는 TypeScript(타임 스크립트를 지원하는 효율적이고 확장 가능한 NOde.js의 서버 애플리케이션 프레임워크이며, OOP (Object Oriented Programming), FP (Functional Programming) 및 FRP (Functi
package.json이란 현재 프로젝트에 관한 정보와 패키지 매니저(npm, yarn)을 통해 설치한 모듈들의 의존성을 관리하는 파일이다.자세히 설명하자면 package.json 파일에는 프로제그와 관련된 메타데이터가 담깁니다. package.json은 주고 받는 패
다른 함수가 실행을 끝낸 뒤 실행(call back)되는 함수(⇒ 나중에 호출되는 함수)를 말한다.다시 말해 코드를 통해 명시적으로 호출하는 함수가 아니라, 함수를 등록해놓은 후 어떤 이벤트가 발생했거나 특정 시점에 도달했을 때 시스템에서 호출하는 함수를 말한다.파라미
지뢰밭 만드는 것을 최소화 하기 위해 사용한다.타입스크립트란? 자바스크립트의 타입을 강제시키는 언어ex) 문자만 집어 넣는 상자 , 숫자만 집어 넣는 상자let aaa: string = "안녕하세요"let bbb: number = 123let ccc: boolean =
TypeORM이란 객체 지향 언어로 된 Class를 관계형 데이터 베이스의 Table와 연결시켜주는 것으로 직접 SQL문을 작성하지 않고, 객체 지향적으로 코드를 작성할 수 있게 도와주는 ORM중 하나이다.여기서 다른 ORM과 다른 점이 있다면, 다른 ORM과 달리
generic 타입 >
x는 전역변수로 지역 스코프에서 참조될 수 있습니다.y는 지역변수로 전역 스코프에서 참조될 수 없습니다.함수 레벨 스코프란, 함수를 실행할 때 생겨나는 지역 스코프입니다.블록 레벨 스코프는 코드 블록에 의해서 생성되는 스코프입니다.
함수, 변수의 호이스팅 JavaScript를 해석하는 과정에서 마치 그 선언 단계가 위로 끌어 올려진 듯 동작하는 것 1) 변수의 선언 단계 그런데 왜 let과 const는 선언 코드를 만나기 이전에 참조를 시도하면 에러를 발생시키는 걸까요? 그 이유는 TDZ(Te
StringNumberBooleanBigintundefinedSymbolnull참조타입의 종류는 원시 타입을 제외한 모든 것입니다.불변성을 가진다.그럼 ‘def’ 는 아까 101주소의 메모리에 저장되어 있는 ‘abc’를 대체하여 들어가는 것이 아닌,102주소를 가진 메
JWT에 대해 먼저 알아보기 전에 제일 오래된 인증체계로는 Cookie가 존재 했다.Cookie란 클라이언트가 웹사이트에 접속할 때 그 사이트가 사용하게 되는 일련의 작은 기록 파일이라고 생각하면 된다.서버가 클라이언트에 정보를 전달할 때 저장하고자 하는 정보를 응답
암호화의 종류는 여러 가지가 있다.둘 다 암호화 기법이지만 Hash는 단방향 암호화 기법이고 Encryption은 양방향 암호화 기법입니다.양방향 암호화 : 암호화와 복호화과정을 통해 송 ・ 수신 간 주고받는 메시지를 안전하게 암호화하고 평문으로 복호화하는 과정.단방향
사용자의 인증이 필요한 경우 Client는 발급받은 JWT를 Requet Header(HTTP Header)에 실어 같이 보내줍니다. Backend는 JWT를 받고 Guard를 통해 JWT Strategy를 실행하고, Secret Key를 통해 JWT를 Decoding
코드 린터(코드 스타일 통일, 포멧팅 기능도 가지고는 있다.) / 코드 포멧터(예쁘게 해주는것)eslint / prettier import 순서 /띄어쓰기 2칸== 금지, === 허용 / OO길이 넘으면 줄바꿈typescipt랑
쿠키는 클라이언트(브라우저) 로컬에 저장되는 키와 값이 들어있는 작은 데이터 파일이다.사용자 인증이 유효한 시간을 명시할 수 있으며, 유효 시간이 정해지면 브라우저가 종료되어도 인증이 유지된다는 특징이 있다.쿠키에는 추가 옵션 사항들을 적용할 수 있습니다.이름: 각각의
Payment Gateway의 줄임말로, 구매자와 판매자 사이에서의 이뤄지는 결제를 안전하게 할 수 있도록 대행해 주는 역할로 💡 대표적인 PG사로는 KG 이니시스, NHN, KCP, LGU+ 등이 있으며, 모바일 환경으로는 KG 모빌리언스, 다날, 카카오P
데이터베이스 쿼리를 묶어주는 작업의 단위서비스에서 가장 큰 문제는 => 데이터의 오염이다.// 데이터의 신뢰가 깨지기 때문에차라리 전체 다 실패하고, 다시 시도하는 게 안전하다.그러기 위해서는 하나로 묶는 transaction가정이 필요함!!ACID 는 Transact
기존 아폴로 서버 방식typeDefs를 직접 하나하나 작성하는 방식최근 Nestjs방식 typeDefs를 자동으로 만들어주는 방식이런 식으로 적어주면 지정된 구역에 자동으로 스키마를 넣어주는 파일이 생성된다!!
ACID 는 Transaction을 정의하는 4가지 속성을 가리키는 약어 입니다.A(Atomicity) : 원자성 → 안전성 보장을 위해 가져야 할 성질 중의 하나로 트랜잭션과 관련된 작업들이 부분적으로 실행되다가 중단되지 않는 것을 보장하는 능력.모두 성공할 것 아
import { JwtPayload } from 'jsonwebtoken';를 쓰지 않으면 payload형식을 불러올수 없으니 주의!!!passReqToCallback: true 윗부분 constructor에 적어주지 않으면 req를 받을 수 없다!passReqToCa
더 빠른 검색을 위해서 redis라는 곳에 저장을 한다.Redis는 Memcached와 비슷한 캐시 시스템으로서 동일한 기능을 제공하면서 영속성, 다양한 데이터 구조와 같은 부가적인 기능을 지원하고 있습니다. redis는 인메모리기반에 데이터베이스이다.컴퓨터를 껐다켰을
너! Nestjs 폴더를 왜 여러개 만들고 있니?!그래프뷰엘 MSA는 더 쉽군!아하! 한 회사에서 다양한 언어를 쓸 수 있구나!Nestjs 폴더 나누기(DB도 같이 나눠야 함)어떤 컴퓨터(서비스)로 가는지 알수 없기에 중재해주는 API게이트웨이가 필요하다!(ip주소가
테스트를 위한 코드도 만들어야 한다고?뭐야 이 사기꾼! 가짜 DB를 주다니!아니! 기능도 없이 테스트를 한다고?기능을 검사해주는 코드를 만들어주는 것(API요청에 대한)사람이 모든 api를 계속 누르는 것은 귀찮고 시간이 많이 들기에 빠른 시간안에 그 처리를 할 수 있
Jest는 페이스북에서 만들어서 React와 더불어 많은 자바스크립트 개발자들로부터 좋은 반응을 받고 있는 테스팅 라이브러리이며, 단위(Unit)테스트를 위해서 이용한다.Nest.js를 사용하면 기본적으로 설치되어있다.일단 test파일을 만들먀, test파일은 테스트할
1.브라우저에서 사용자가 업로드할 이미지 파일을 선택브라우저에서 선택된 파일을 변수에 저장하고 변수에 담긴 내용을 파일 객체라고 하며 파일 사이즈 등 파일에 대한 정보를 담고 있다.브라우저에서 파일 객체를 백엔드 서버에 업로드 요청을 하며, 이를 위해 백엔드 서버에서
CORS라는 단어가 눈에 띄게 등장합니다!!이는 서로 다른 출처(origin)를 가진 주소로 요청이 들어왔을 때 발생할 수 있는 에러입니다.여기서 말하는 출처(origin)이란, port번호까지 포함한 url을 의미합니다.예를 들어 이러한 url(http:/
구글 로그인 프로세스 구글 로그인을 사용하는 소셜 로그인 프로세스는 아래와 같이 진행된다. 브라우저에서 서버로 구글 로그인 페이지를 요청한다. 서버는 브라우저에 구글 로그인 페이지를 응답한다. 사용자는 브라우저의 구글 로그인 페이지를 통해 구글 계정으로 로그인한다.
인터넷과 같은 외부 네트워크에 연결되어 있는 내부 네트워크의 중요한 정보 및 자원을 외부 네트워크를 통한 불법적인 침입으로부터 안전하게 보호하기 위한 시스템이다.외부로부터 내부 네트워크를 보호하기 위해 강력한 접근 제어를 제공하는데, 이를 위해 외부망과 내부망의 구성을
1. DNS 1) DNS란? DNS란? 도메인 이름 시스템으로 예를 들어 사람이 읽는 도메인 이름 (www.naver.com)을 머신이 읽을 수 있는 IP주소 (192.0.2.44)로 변환합니다. 이를 통해 우리는 모든 서버의 IP를 주소를 잘 모르더라도 도메인 이
1. SSL 2. HTTPS
쿠버네티스는 컨테이너 관리자로 컨테이너 운영을 자동화하기 위한 도구이다.쿠버네티스와 동일한 기능을 하는 도구에는 메소스(Mesos), 도커 스웜(Docker Swarm) 등 이 있다.셋다 큰 역할은 비슷하다. 쿠버네티스가 가장 쉽고 편하게 할 수 있으므로 우리는 쿠버네
1. Auto Scaling이란? 인스턴스 부하를 모니터링해 특정 이벤트에 대해 인스턴스를 추가/삭제하는 기능을 제공하는 서비스이다. 급작스러운 서비스 트래픽의 증가 상황에서 운영자의 개입없이 인스턴스추가, 부하 상황이 해제되면 추가된 인스턴스를 삭제하는 것이 가능
컴퓨터 파일의 변경사항을 추적하고 여러명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 스냅샷 스티림 기반의 분산 버전 관리 시스템이다.깃은 2005년에 리누스 토르발스에 의해 개발되었고 주로 여러명의 개발자가 하나의 소프트웨어 개발 프로젝트에 참여할 때, 소스
개발 단계부터 배포까지 자동화화하는 것을 말합니다.명령어 한 방으로 배포하기!continuous intergration + continuous deployment⇒ 지속적으로 통합해서, 지속적으로 배포한다는 뜻입니다.원래는 우리가 쿠버네티스를 사용하면서, 수정 사항이
Gitflow workflow => 오래된, 유명한 방식Trunk Based Deveplopment => CI/CD 가 추세가 되면서 구글,페이스북 등 최신방식이다!!git brancemastergit checkout -b qqqqqq란 폴더를 만들어서 들어가줘git
명령형 프로그래밍과 선언형 프로그래밍, 객체 지향 프로그래밍은 명령형 프로그래밍, 함수형 프로그래밍은 선언형 프로그래밍에 속한다.객체 지향 프로그래밍은 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모일으로 파악하고자 하는
인스턴스 자기 자신을 가리키는 키워드이며, this를 통해 클래스 메소드 및 생성자에서 자기 자신의 데이터를 업데이트하거나 조작할 수 있게 된다.하지만 자바스크립트에 this가 참조하는 것은 함수가 호출되는 방식에 따라 결정되는데, 이것이 this binding이다.그