전체보기
-
nest.js 학습에 사용한 공부 자료Node.js/nest.js 2023. 3. 23. 20:43
1. Nest JS란? node.js 서버 사이드 애플리케이션 프레임워크이다. Opinionnated를 지향해 Best Pactice를 제공한다. node.js의 가장 유명한 프레임워크는 Express이다. 만드는 개발자 마다 설계가 달라서 코드 알아보기, 유지보수가 힘들었다. 반면 Nest.JS는 Beat Practice 있어서 가독성 상대적으로 쉽고, 개발자 퇴사하면 새로운 사람이 적응 쉬운 장점이 있다. Nest.JS는 Typescript 기반이다. 규모가 큰 프로젝트 관리를 목적으로 한다. 기본 express 서버 기반으로 동작하고 Fastify로 갈아끼울 수 있다.(마치 스프링의 톰캣, 네티) express 사용하던 라이브러리 그대로 사용 가능. Spring 따라 만든 프레임워크라는 느낌을 받았..
-
백앤드에게 Event Loop란 무엇인가.(브라우저, Nest js, SpringBoot)Node.js/nest.js 2023. 3. 8. 23:51
Javascript를 이해하려면 Event Loop가 무엇인지 알아야 한다. 구글에는 프론트 개발자 글이 많아서 브라우저 기반 Event Loop 설명이 많은데 백앤드 입장 Event Loop를 정리해 본다. 브라우저 기반 Event Loop 설명은 아마 80%가 아래의 8년 전 영상이 출처인 것으로 보인다. (설명을 굉장히 잘한다.) - JS Conf 브라우저의 이벤트 루프 : https://www.youtube.com/watch?v=8aGhZQkoFbQ 사전 지식 : 병렬성과 동시성 Event Loop를 이해하기 위해서는 동시성(concurrency)과 병렬성(parallelism) 이해가 선행되야 한다. 자바로 예를 들면 스프링부트로 서버를 띄우면 톰캣에 기본 max 200개 thread가 생성되도..
-
DB의 시간, Java의 시간, Javascript의 시간 (Data, LocalDate, LocalDateTime, Y2K38 Problem)JAVA/자바공부 2023. 3. 7. 23:22
시간에 대해 문제의식을 가진 것은 MySQL의 datetime과 timestamp의 차이를 인지하면서 부터이다. timestamp를 사용하면 2038년이 지나고 1970년으로 시간이 바뀐다고 한다.(Y2K38 버그라고 이름도 있음) MySQL에서는 8.0.28버전 부터는이 문제를 해결했다고 하는데 왜 1970년으로 회귀하는지와 자바, 자바스크립트에서는 무엇을 해야하는지 알아보자. 컴퓨터가 시간을 정의하는 방법1970년 1월 1일 0시 0초를 기준으로 흐르는 시간을 밀리세컨 단위 정수로 측정하고 표현한다. 측정한 시간을 Unix time, Unix Epoch Time, Unix Timestamp로 부른다.2023년 3월 7일, 11시 현재 Unix Time은 1678197732 이다.Bell 연구소에서..
-
[Password hashing] Argon2, Bcrypt, Scrypt, PBKDF2 소개Node.js/nest.js 2023. 3. 6. 23:34
Springboot를 사용하면서 비밀번호 해싱은 늘 BcryptPasswordEncoder만 복사 붙여넣기 형태로 사용했다. Nest.js는 반면에 bcrypt, bcrypt.js, Scrypt, Argon2 등 passwordHash로 검색하면 나오는 라이브러리가 많아서 직접 알아봐야하는 상황이 있었다. Spring Security의 공식 문서를 살펴보니 bcrypt, Scrypt, Argon2, Pbkdf2 등.. 다양하게 제공하고 있었다. 이참에 자세히 알아보자. https://docs.spring.io/spring-security/reference/features/authentication/password-storage.html Bcrypt가 무엇이고, 어떤 것을 사용하는 것이 좋은지 정리해본다...
-
Typescript 입문 (typescript란?, 설치, 사용법, 학습자료)Node.js/typescript 2023. 2. 22. 18:13
1. 타입스크립트란? typescript 깃허브 : https://github.com/microsoft/TypeScript typescript란? 마이크로소프트에서 mono repo 생산성 개선 목적으로 만든 javascript의 상위 호환 언어 Javascript 할 수 있는거 다 할 수 있는데 부가적인 기능 제공 typescript로 작성하면 javascript로 변환(컴파일 === transfile)해서 실행한다. 모든 TS 파일은 JS 파일이기도 하다. 타입 검사 제공 작성하면서 Error 미리 잡아줌 (모든 자바스크립트 버그의 15%가 사전에 타입스크립트로 감지할 수 있다고 한다) typescript에서만 제공하는 추가 문법 제공 JS를 OOP적으로 짤 수 있게 도움 인터페이스, 상속, 모듈 등..
-
자바JAVA/자바공부 2023. 2. 20. 21:49
자바 공부 자료 기록 1. 자바의 신 (책) - 초반에 cli 환경에서 class 작성부터 컴파일을 진행하는 방식으로 진행되는 것이 인상적이다. https://product.kyobobook.co.kr/detail/S000060306246 2. 컴퓨터 언어 기초 (터커의 go 프로그래밍 1~6강) - 개인적으로 기초 CS개념을 너무 쉽게 설명해줘서 Java 하기전에 보면 좋았을 것 같다. https://www.youtube.com/watch?v=Tq3W8UyltFs&list=PLy-g2fnSzUTAaDcLW7hpq0e8Jlt7Zfgd6 3. Effective Java - 실용적인 자바 사용법에 대한 서적이라고 한다. 2023년 볼 예정이다. 4. 오라클 공식 문서 - 엄밀히 말하면 자바는 Oracle 소..
-
[M1 Mac] NVM으로 Node.js 설치하기Node.js/설치 2023. 2. 17. 22:42
NVM이란? NVM (Node Version Manager)은 커멘트 라인에서 빠르게 Node.js를 설치하고 버전을 관리할 수 있게 해주는 도구이다. 아래 공식 페이지에서 설치 명령어, 설정, 기본 사용법이 나와있다. https://github.com/nvm-sh/nvm 본 글은 공식 페이지에서 M1 Macbook 환경 기준 설치 명령어만을 기록한다. 1) NVM 설치 1. Homebrew 통한 nvm 설치 brew install nvm 2. nvm을 위한 폴더 생성 mkdir ~/.nvm 3. ./zshrc에 shell configuration 명령어 추가 vi ~/.zshrc export NVM_DIR="$HOME/.nvm" source $(brew --prefix nvm)/nvm.sh 4. 설치 ..
-
[DynamoDB (2)] DynamoDB 사용하기전 핵심 개념AWS 2023. 2. 16. 21:19
DynamoDB 사용에 앞서 주요 용어와 개념을 기록한다. 1. 주요 개념과 용어 설명 1) Table 데이터를 저장하는 공간이다. 모든 테이블은 0 또는 다수의 Items를 collection으로 가진다. People 테이블 예제 Table은 Item를 가지고, Item은 Attribute를 가진다. Table은 schemaless가 특징이며 Attributes나 Data type이 미리 정의될 필요 없다. 예시) People // table // an item { "PersonID": 101, // primary key "LastName": "Smith", // attributes "FirstName": "Fred", // attributes "Phone": "555-4321" // attribute..