분류 전체보기
-
캐싱TIL 2024. 1. 14. 16:08
** 캐싱 Caching - 정의 ㄴ캐시를 사용하는 데이터 저장 기법 ㄴ 램이 될 수도있고, 각 하드웨어 부품에 달려있는 캐시 메모리가 대상이 될 수도 있음. ㄴ 데이터 처리 속도를 향상시킨다 -개발자에게 있어 캐싱 1. 사실 캐싱은 대부분 운영체제가 알아서 해줌 2. 개발자가 할 수 있는 캐싱으론, db에서 가져오는 내용을 램에 저장해두고, 활용하는 방법 (=세션에 유저정보 저장하는 행위) -쓰는이유) 1.속도향상 ㄴ백엔드 개발에서 가장 오래걸리는 작업은 DB통신 ㄴ 근데 이 데이터를 램에 저장해두고 쓰는 것 (db에서 자주 불러오게되는 데이터를 램에 저장해두고 활용) 2. DB 과부하방지 ㄴ DB의 입출력이 많아지면 DBMS가 과부하가 걸릴 수 있음 ㄴ 보잘 것 없은 데이터나, 수정이 매우 자주 일어..
-
db) RedisDB/데이터베이스 2024. 1. 14. 01:29
-정의 ㄴ 일종의 데이터베이스 (Document Database) ㄴ 개발자에 따라서 DB라고 부르지않는 사람도 있음 ㄴ Redis는 램을 사용하는 데이터베이스 (말그대로 캐싱을 위한 데이터베이스) ㄴ그래서 램과같이 휘발성을 가지고, 속도가 매우빠르다 특징 1. 램을 사용해서 무진장 빠름 2. 램을 쓰기 때문에 갑자기 서버 전원이 꺼지면 모두 날아감(휘발성) ㄴ 데이터의 영속성을 보장하지 않음 3. 다른 db처럼 CRUD기능을 제공함 4. 이외에 Redis만의 독특한 자료구조 5. Document Database이므로 JSON 사용 -Collection ㄴ Redis에 존재하는 자료구조 (비유하자면 RDB의 테이블과 같은 위치) ㄴ 5개 종류가 존재하는데, 이 5개에 각각의 기능이 있음 1. String..
-
[MongoDB] express - mongoDB 연결하기TIL 2024. 1. 10. 22:46
mongodb.js) const mongoose = require("mongoose"); const uri = "mongodb://localhost:27017/project"; mongoose.connect(uri, { useUnifiedTopology: true } ) const mongoDB = mongoose.connection mongoDB.on("error", () => { console.log('mongoDB connect Failed'); }) mongoDB.on("open", () => { console.log('mongoDB connected!'); }) //스키마 작성 const logSchema = new mongoose.Schema({ method: { type: String, re..
-
express) morgan 으로 로그 관리하기TIL 2024. 1. 10. 21:38
morgan : request, response 로깅 미들웨어 morgan미들웨어만들기) morgan(format, options) 첫번째인자 format : Log를 어떻게 생성하여 출력할 것인지 설정 ㄴ'dev', 'combined'와 같은 방식으로 미리 정해진 형식으로 Log를 생성할 수 있다 ㄴ그외에도 'common', 'short', 'tiny'등의 형식이있음 ㄴ사용자 지정형식: 사용자가 원하는 대로 custom하여 Log를 생성할 수도 있다 ㄴㄴ'dev' : 나의 개발환경에서 사용, 간단한 log ㄴㄴ'dev' 형식) :method :url :status :response-time ms - :res[content-length] ㄴㄴ'combined' : 배포 환경에서 사용, 자세한 log ㄴㄴ..
-
WEB) JWT 토큰인증 - 세션 vs 쿠키 vs 토큰TIL 2024. 1. 9. 15:53
JWT 정의) ㄴJSON WEB TOKEN ㄴToken 기법의 한 종류(웹표준) ㄴJSON형태로 되어있어서. 값의 관리가 쉬움 ㄴ조작여부 판단이 간단해서 웹 표준으로 삼고있음 -구조 ㄴToken이라는 것 자체가 그냥 특정한 폼을 가진 String "header":{ token의 설정 정보(발행자, 만료시간, 종류 등) }, "payload":{ 개발자가 Token에 넣고 싶은 값 }, "signature" : 비밀키로 암호화된 header + payload ㄴ이렇게 3가지의 Key를 String으로 변환해서 저장한게 Token -jwt가 어떻게 FE 조작을 막는가?) 1. header와 payload를 각각 String으로 만듬 2. A.B 의 형태로 저장 3. A.B를 비밀키로 암호화해서 C라고 저장 ..
-
express) Winston로 Log 관리하기express 2024. 1. 5. 21:44
winston: 로그 파일 및 로그레벨 관리모듈 winston-daily-rotate-file : 매일 날짜별로 로그 파일 생성 및 관리 모듈 winston 모듈을 쓰는이유) ㄴwinston은 개발환경보다 배포환경에서 로그를 남기기위해 사용한다. ㄴ배포환경은 개발환경과 달리 콘솔창을 확인하기 어렵고, 서버가 재부팅되면 기록이 초기화돼서 보기어렵다 ㄴ그래서 로그나 에러가 발생했을때, 외부파일에 로그기록을 보관하기 위해 사용한다. mongoDB 연결) const mongoose = require("mongoose"); const uri = "mongodb://localhost:포트번호/db명"; mongoose.connect(uri, { useUnifiedTopology: true } ) const mong..
-
CSS) 네비게이션 한번에 열기css 2023. 12. 23. 14:47
element.style 속성과 getComputedStyle() 메소드의 차이** html, css로 네비게이션을 만들던 도중, 네비게이션이 한번에 동작하지않고 처음 동작할때는 2번을 클릭해야만 동작했다 이 문제를 해결하기위해서는 element.style와 getComputedStyle의 차이를 알아야했다 getComputedStyle() 메소드는 읽기전용* 인 반면, element.style 속성은 새로운 스타일 설정* 하는데에 사용한다 그래서 데이터의 속성을 읽어 확인할때 element.style로 확인을 할경우 문제가 발생했다 잘못된 방법) function menuBarEvent(){ if(nav.style.right == "-300px"){ // element.style 속성은 읽기용이아닌, 새..
-
express) 세션 secret옵션, dotenv 환경변수 이용하기express 2023. 12. 18. 23:44
dotenv) 환경변수를 .env 파일에 저장하고 process.env로 로드하는 모듈이다 process.env는 환경변수를 불러오는 객체 .env 파일은 루트경로에 배치한다 dotenv를 쓰는이유) 포트번호와 session의 secret 비밀키는 외부에 노출되면 보안적으로 위험하다 클라이언트가 볼 수 없다고해도 github와 같은 오픈소스에 공개될 수 있다 그래서 별도의 .env 외부파일에 정보를 환경변수로 다룰 수 있게 하기 위해서 사용하였다. 그리고 .gitignore에 .env파일을 추가해서 git에 올라가지 않게 해야한다 .env파일) ㄴ 키=밸류 형식으로 나열 ㄴ.env에서는 문장끝에 ";"를 쓰지않는다 secretCode = "secret" port = 8000 .gitignore) # en..