지난 글에선 Node.js의 용어 정리와 db.ts, User.ts, Archive.ts 세 모듈에 대해서 알아봤다. 이번 글에선 남은 모듈을 최대한 정리하고, 이어지는 구현은 손으로 따라가면서 익힐 예정이다. 참고로 지난 글보다 모듈이 하나 늘어서, 패키지 구조는 아래와 같다. 우선 utils 폴더를 보고, 그다음으로 routes, middleware, controller 순으로 올라갈 예정이다. 시작! /src/utils 지난 글에 적은 대로, utils는 재사용 가능한 유틸리티 모듈이 모여있는 폴더이다. 모듈 이름만 봐도 여러 곳에서 많이 쓰일 것 같은데, 하나씩 알아보자. generateToken.ts import jwt from 'jsonwebtoken'; const generateToken =..
목차 NoSQL NoSQL은 Not only SQL의 약자이며, 기존의 관계형 데이터베이스에서 벗어난 저장방식을 가리킨다. 이에 관한 더 자세한 설명 및 SQL과의 비교는 예전에 정리한 적이 있으므로, 해당 게시글로 대체한다. [데이터베이스]SQL vs. NoSQL [데이터베이스]SQL vs. NoSQL NoSQL는 Not only SQL의 약자로, SQL만을 사용하지 않는 DBMS(DataBase Management System)을 말한다. 관계형 데이터베이스를 주로 사용하는 SQL과 달리 여러 유형의 데이터베이스를 사용하는 넓은 범위라고 보 gnidinger.tistory.com 이 글에서는 Node.js, TypeScript, 그리고 mongoose를 사용하는 환경을 기반으로 mongoDB의 1:N..
프로젝트 진행 시 타입스크립트로 구성된 프론트엔드 코드를 작동시킬 때면 변경 및 저장된 사항이 앱에 바로 반영되는 것이 부럽고 신기했다. 물론 자바에도 비슷한 기능이 있기는 하지만 애초에 인텔리제이 환경에서 자바는 자동저장을 지원하는데다 서버를 키는 시간이 오래 걸리기 때문에 굳이 필요가 없었다. 어쨌거나 타입스크립트와 노드JS를 사용할 때도 저장하면 자동으로 앱을 재실행시켜주는 기능이 필요해서 여기에 정리한다. 추가로, VSCode에서도 코드를 자동 저장 해주는 기능을 지원하지만, 지금 소개할 nodemon과 함께 사용하면 완성도 되지 않은 코드가 배포되는 상황이 발생할 수 있다. 따라서 자동 저장 기능을 사용하려면 nodemon은 사용하지 않는 것이 좋다. nodemon의 설치 방법은 아래와 같다. ..
이전 글에서 MVC 아키텍처를 적용하고, Express 프레임워크를 사용한 Node.js 프로젝트의 기본 패키지 구성과 그 안에 속한 파일을 알아봤다. 오늘부터는 해당 패키지 안에 존재하는 모듈에 대해서 한 줄씩 파보려고 한다. 그러다 보면 내 JS 이해도가 따라오겠지. Terminology 시작하기 전에 먼저 단어를 정리하고 넘어가자. 물론 아래의 설명은 초심자가 어깨너머로 정리한 것이라 틀릴 확률이 높다. Node.js에서 각 .ts 파일들은 '모듈'이라고 불린다. 이 모듈은 자바의 클래스와 비슷하게 느껴지지만 서로 다른 목적과 개념을 가지고 있으며, (예를 들자면 모듈은 코드의 모듈화가, 클래스는 객체 지향 프로그래밍이 주된 목적이다) 공통점으로는 모두 코드의 재사용성과 가독성을 향상시키고, 구조를..
목차 타입스크립트를 이용해 개발할 때 코드 분석 및 스타일 관리 + 포맷팅 용으로 ESLint와 Prettier를 많이 사용한다. 굳이 두 확장 프로그램의 용도를 적고, TS에 적용하는 방법에 대해 알아보자. ESLint ESLint는 말하자면 TS의 맞춤법/문법 검사기이다. TS 코드의 문제를 찾아내고 코드 스타일과 관련된 규칙을 적용해 코드를 검사한다. 여기서 검사란 코드의 구조, 변수 및 함수의 정의와 사용, 네이밍 컨벤션 및 잠재적인 오류, 안티패턴, 일관성 등을 준수할 수 있도록 코드의 품질을 검사하는 것을 가리킨다. 미리 정해진 규칙(ex.airbnb)에 따라 코드를 검사하며, 문제를 강조해 수정에 도움을 준다. 물론 규칙이란 사람이나 팀에 따라 커스텀이 가능하며, 경고 또는 에러메시지를 통해..
목차 _id 몽고디비는 컬렉션에 도큐먼트가 생성될 때마다 자동으로 생성되는 고유한 필드로, ObjectId라는 특수한 데이터 타입을 가진다. 이 타입은 12바이트의 숫자, 정확하게는 24글자의 16진수로 표현된다. 이 숫자는 다시 네 개의 요소로 나뉘는데, 각 요소에 대한 설명은 다음과 같다. Timestamp: ObjectId가 생성된 시간. 이를 이용한 시간순 정렬도 가능 Machine ID: 디비가 돌아가는 머신(컴퓨터)의 식별자이다. 이를 이용해 같은 머신에서 생성된 객체를 구별할 수 있다. Process ID: 몽고디비 프로세스의 ID. 동일한 머신에서 돌아가는 다른 몽고디비 프로세스가 생성한 객체와 구별할 수 있다. Counter: 랜덤값으로 시작하는 카운터 값이다. 동일한 시간, 머신, 프로..
목차 순서대로 배우는 건 능률이 좋게 느껴지지 않아서, 알고리즘 풀이로 정방향으로 배우는 동시에 잘 짜인 코드를 바탕으로 리버스 엔지니어링(?)으로 배우기로 했다. 일종의 어깨너머 배우는 느낌인데, 뭐 하여간 그렇다. 오늘 새로 배운 키워드는 제목에 쓰여있듯이 async, promise, await, then, process이다. 가능하면 예를 하나씩 들어가며 정리하도록 하자. async 'async' 키워드는 이름에서 추측할 수 있듯이, 비동기 함수를 선언할 때 사용한다. 해당 키워드가 붙은 함수는 암묵적으로 'promise'를 반환하게 된다. async function doSomething() { // ... Promise 반환 } Promise Promise는 자바스크립트에서 비동기 작업의 완료 여..
목차 MVC 구조는 스프링을 처음 배울 때부터 지금까지 유용하게 써먹고 있는 구조이다. 사실 기대와는 달리 레거시코드의 웹플럭스가 함수형 인터페이스가 아닌 기존 MVC를 사용하고 있기도 하고. 어쨌거나 TypeScript를 이용한 Node.js를 배우기 위해, 알고리즘을 풀며 언어에 익숙해지는 동시에 아키텍처 및 라이브러리 공부도 미리 해놓는 게 좋을 것 같다는 판단이 들어서, 짬짬이 공부를 하고 있다. 정리 시작! MVC Pattern MVC(Model-View-Controller)는 소프트웨어 설계 패턴 중 하나로, 애플리케이션을 모델, 뷰, 컨트롤러의 세 부분으로 분리하여 설계하는 패턴을 가리킨다. 분리의 목적은 당연히 관심사를 분리해 한 곳에 모아 가독성과 유지보수성을 높이기 위함이다. Node...
- Total
- Today
- Yesterday
- 세모
- 중남미
- spring
- 면접 준비
- 자바
- 백준
- 야경
- 맛집
- Backjoon
- 세계여행
- 리스트
- 스트림
- a6000
- 지지
- 스프링
- 기술면접
- 알고리즘
- 파이썬
- 남미
- 세계일주
- 유럽
- Algorithm
- 유럽여행
- Python
- java
- 동적계획법
- 여행
- RX100M5
- 칼이사
- BOJ
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |