전체 글 (36) 썸네일형 리스트형 Node.js에서 redis 모듈 사용 (캐싱, 세션) redislabs 에서 등록한 cloud db에 접속하기 위해, 이전단계에서 얻어놓은 4가지 정보를 가져와 .env 파일에 환경변수로 저장해주자 이후엔 redis 패키지를 설치해주자 > yarn add redis Redis 에 접속하는 JS 코드 생성 const express = require('express'); const dotenv = require('dotenv'); const redis = require('redis'); dotenv.config(); // env환경변수 파일 가져오기 //* Redis 연결 const redisClient = redis.createClient({ legacyMode: true }); // legacy 모드 반드시 설정 !! redisClient.on('conne.. Redis. library 설치, 접속 <cloud> Ticketing을 위한 연습 프로젝트 웹페이지를 제작중에 transaction으로 해결되지 않는 '동시성' 문제에 직면했다. 코드를 수정하고 수정해봤지만 101개의 티켓이 모두 판매처리 되지않고 70여개에서 멈추어버렸다. 로그를 보면 구매할 수 있는 충분한 금액등의 조건이 되는 사용자들이 구매하지 못하는, timeout 현상이 일어나고 있었다. (db에서 시간내에 요청사항을 처리해주지 못해서 구매처리가 되지않고 롤백되고 있었다) 이를 해결하기위해 Redis를 사용해 보기로 했다 (Bullmq 또한 같이 사용해보려 하지만 우선 Redis 부터) >> Redis를 이용하면 in-ram-memory를 사용하여 caching을 통해 보다 빠르게 db에 접속할 수 있다는 내용을 얼추 읽었다. 지금 내겐 이론적인.. docker로 Node.js 컨테이너 만들기 <1> 참고문서 : https://docs.docker.com/language/nodejs/containerize/ Containerize a Node.js application Learn how to containerize a Node.js application. docs.docker.com >>우선은, docker 공식 문서에 나와있는 sample data로 컨테이너 만들기 STEP 1. Get the sample application. 샘플 어플리케이션 가져오기 git clone https://github.com/docker/docker-nodejs-sample 우선 docker에서 만들어둔 샘플 파일을 크론해온다 STEP2 Test the application without Docker(Optional).. let, const와 블록 레벨 스코프 ES6 이전에 변수를 선언할때는 오로지 var 키워드만 존재했다. var 키워드로 선언된 변수는 아래와 같은 특징을 갖는다 1. 함수 레벨 스코프(function-level scope) - 함수의 코드 블록만을 스코프로 인정한다. 따라서 전역 함수 외부에서 생성한 변수는 모두 전역 변수이다. (때문에 전역변수가 남발될 가능성을 높인다) - for문의 변수 선언문에서 선언한 변수를 for 문의 코드 블록 외부에서도 참조할 수 있다 2. var 키워드 생략 허용 - 암묵적 전역 변수를 양산할 가능성이 크다 3. 변수 중복 선언 허용 - 중복 선언이 가능한 var의 특성상, 변수값의 변경, 즉 덮어쓰기가 될 가능성이 크다 4. 변수 호이스팅 - 변수를 선언하기 이전에 참조가 가능하다 (선언부 부터 사용하는것이.. WIL <다음주에 알아볼것들 LIST UP> 회원가입 USER userId default(autoincrement()) nickname min(3).max(15).알파벳(a-zA-Z0-9).unique.required password min(8),max(20) yarn add bycrypt 1 : N 관계에서 1을 soft delete 했을 때, N 또한 soft delete 하는 방법 passport 로드밸런싱 / 로드밸런서 JWT 단골질문 base64 샤 쿠키는 쓰고싶은데 서버에 부담을 주고 싶지 않아서 stateless EC2 instance scaleup 사양을 올리는것 / scaleout 여러개 만드는 것 백오피스 페스티파이 캐시를 사용하면 db에 자주 접속하는 상황에서 성능향상에 도움이 된다(매우크게) -> 캐시는 무엇인가?? 악의적인 .. THIS What is THIS? - THIS는 '예약어' - 객체지향 언어에서 THIS 는 함수가 속해있는 객체 그 '자기자신'과 관련이 깊다 자기자신이란? JS의 함수는 일급객체 이다. => { - 변수나 데이터에 저장 const myFunc = func - 함수의 인수로 전달 function func1(func2) {} -함수의 반환 값으로 사용 function func1() { return func1 } } 이렇듯 일급객체인 JS 의 함수는 func () // 단독 호출 Obj1.func() // 메소드로써 호출 obj2.func() // 같은 함수, 다른 객체의 메소드로써 호출 와 같이 호출할 수 있는 방법 자체가 다양하다 그럼으로 함수가 속한 객체 '자기자신'을 명시하는것은 까다롭다. (THIS 가 단.. WIL #3 이번주에 익히고 배운것들 - 기본적인 CRUD - SQL과 NOSQL의 대략적인 차이 - SQL 쿼리의 중요성. ORM으로는 모든걸 처리하기 너무 어렵고, 정상처리 되었는지를 로그로 확인하기도 어려움이 있음 - soft delete / hard delete - order 값 정렬하기, 수정된 order값에 따라 새로 정렬하기 (모든 order값을 증가시키는 방식으로 처리했다. 좀더 깔끔한 정리 필요) -- ** 쿼리문에 익숙해져야한다. 3주차가 끝나기전까지 쿼리문 연습하기. (2일정도 잡고 확실히 익힌다) 프로미스 Synchronous / Asynchronous console.log(1); console.log(2); console.log(3); console.log(4); 위 코드를 실행하면 어떻게 될까요 1 2 3 4 를 뱉어내겠죠 이는 위의 작업이 끝날때까지 아래의 작업이 기다리고있다가 윗줄의 작업이 끝나면 그 다음 작업을 실행하게되는데 이와같이 실행되는것을 Synchronouse 하다 라고 합니다 (동기적으로 실행된다) console.log(1); console.log(2); setTimeout(function(){console.log(3);}, 5000) console.log(4); Synchronous 는 순차적으로 실행되기에 어떻게 실행되는지 파악이 쉽다 Asynchronouse 는 비 순차적으로 각자.. 이전 1 2 3 4 5 다음