목차 며칠 전에 동기들과 이야기를 하다, NestJS라는 것이 굉장히 편하다는 소식을 전해 들었다. 기존의 Express.js에 비해 많은 기능을 제공한다는 것 외에는 정보가 없어서 계속 궁금해만 하다 주말이 된 김에 정리하고 넘어가기로 했다. 이 글에선 먼저 NestJS의 역사를 먼저 알아보고, 특징과 장단점을 알아본 뒤 글을 마치도록 하겠다. NestJS NestJS는 2017년 폴란드의 개발자 Kamil Myśliwiec에 의해 소개된 오픈소스 프레임워크이다. 좀 더 구체적으로는 Node.js 런타임 위에서 동작하는 타입스크립트용 오픈소스 백엔드 프레임워크이며, 지속적인 성장세를 보이며 현재는 Express.js 다음으로 널리 사용되고 있다고 한다. NestJS는 모듈을 기반으로 한 아키텍처를 사용..
목차 문제 B진법 수 N이 주어진다. 이 수를 10진법으로 바꿔 출력하는 프로그램을 작성하시오. 10진법을 넘어가는 진법은 숫자로 표시할 수 없는 자리가 있다. 이런 경우에는 다음과 같이 알파벳 대문자를 사용한다. A: 10, B: 11,..., F: 15,..., Y: 34, Z: 35 입력 첫째 줄에 N과 B가 주어진다. (2 ≤ B ≤ 36) B진법 수 N을 10진법으로 바꾸면, 항상 10억보다 작거나 같다. 출력 첫째 줄에 B진법 수 N을 10진법으로 출력한다. 풀이 여느 언어와 마찬가지로, 자바스크립트에도 진법 변환 메서드가 있다. 또한 역시 여느 언어와 마찬가지로, 기존에 사용하던 함수를 그대로 사용하면 되는데, 일종의 숨은 기능을 찾아내는 것 같아서 재미있다. JS에서 사용하는 함수는 par..
목차 문제 과 같이 9×9 격자판에 쓰인 81개의 자연수 또는 0이 주어질 때, 이들 중 최댓값을 찾고 그 최댓값이 몇 행 몇 열에 위치한 수인지 구하는 프로그램을 작성하시오. 예를 들어, 다음과 같이 81개의 수가 주어지면 이들 중 최댓값은 90이고, 이 값은 5행 7열에 위치한다. 입력 첫째 줄부터 아홉 번째 줄까지 한 줄에 아홉 개씩 수가 주어진다. 주어지는 수는 100보다 작은 자연수 또는 0이다. 출력 첫째 줄에 최댓값을 출력하고, 둘째 줄에 최댓값이 위치한 행 번호와 열 번호를 빈칸을 사이에 두고 차례로 출력한다. 최댓값이 두 개 이상인 경우 그 중 한 곳의 위치를 출력한다. 풀이 문제 풀이에 앞서, 이번 문제에서는 여태까지 본 적 없었던 입력 방식이 등장한다. 기존 방식으로 문제를 풀다가 다..
목차 문제 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다. dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다. 입력 첫째 줄에 최대 100글자의 단어가 주어진다. 알파벳 소문자와 '-', '='로만 이루어져 있다. 단어는 크로아티아 알파벳으로 이루어져 있다. 문제 설명의 표에 나와있는 알파벳은 변경된 형태로 입력된다. 출력 입력으로 주어진 단어가 ..
지난 글에선 Node.js의 용어 정리와 db.ts, User.ts, Archive.ts 세 모듈에 대해서 알아봤다. 이번 글에선 남은 모듈을 최대한 정리하고, 이어지는 구현은 손으로 따라가면서 익힐 예정이다. 참고로 지난 글보다 모듈이 하나 늘어서, 패키지 구조는 아래와 같다. 우선 utils 폴더를 보고, 그다음으로 routes, middleware, controller 순으로 올라갈 예정이다. 시작! /src/utils 지난 글에 적은 대로, utils는 재사용 가능한 유틸리티 모듈이 모여있는 폴더이다. 모듈 이름만 봐도 여러 곳에서 많이 쓰일 것 같은데, 하나씩 알아보자. generateToken.ts import jwt from 'jsonwebtoken'; const generateToken =..
목차 문제 문자열 S를 입력받은 후에, 각 문자를 R번 반복해 새 문자열 P를 만든 후 출력하는 프로그램을 작성하시오. 즉, 첫 번째 문자를 R번 반복하고, 두 번째 문자를 R번 반복하는 식으로 P를 만들면 된다. S에는 QR Code "alphanumeric" 문자만 들어있다. QR Code "alphanumeric" 문자는 0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ\$%*+-./: 이다. 입력 첫째 줄에 테스트 케이스의 개수 T(1 ≤ T ≤ 1,000)가 주어진다. 각 테스트 케이스는 반복 횟수 R(1 ≤ R ≤ 8), 문자열 S가 공백으로 구분되어 주어진다. S의 길이는 적어도 1이며, 20글자를 넘지 않는다. 출력 각 테스트 케이스에 대해 P를 출력한다. 풀이 처음에는 아..
이전 글에서 MVC 아키텍처를 적용하고, Express 프레임워크를 사용한 Node.js 프로젝트의 기본 패키지 구성과 그 안에 속한 파일을 알아봤다. 오늘부터는 해당 패키지 안에 존재하는 모듈에 대해서 한 줄씩 파보려고 한다. 그러다 보면 내 JS 이해도가 따라오겠지. Terminology 시작하기 전에 먼저 단어를 정리하고 넘어가자. 물론 아래의 설명은 초심자가 어깨너머로 정리한 것이라 틀릴 확률이 높다. Node.js에서 각 .ts 파일들은 '모듈'이라고 불린다. 이 모듈은 자바의 클래스와 비슷하게 느껴지지만 서로 다른 목적과 개념을 가지고 있으며, (예를 들자면 모듈은 코드의 모듈화가, 클래스는 객체 지향 프로그래밍이 주된 목적이다) 공통점으로는 모두 코드의 재사용성과 가독성을 향상시키고, 구조를..
목차 타입스크립트를 이용해 개발할 때 코드 분석 및 스타일 관리 + 포맷팅 용으로 ESLint와 Prettier를 많이 사용한다. 굳이 두 확장 프로그램의 용도를 적고, TS에 적용하는 방법에 대해 알아보자. ESLint ESLint는 말하자면 TS의 맞춤법/문법 검사기이다. TS 코드의 문제를 찾아내고 코드 스타일과 관련된 규칙을 적용해 코드를 검사한다. 여기서 검사란 코드의 구조, 변수 및 함수의 정의와 사용, 네이밍 컨벤션 및 잠재적인 오류, 안티패턴, 일관성 등을 준수할 수 있도록 코드의 품질을 검사하는 것을 가리킨다. 미리 정해진 규칙(ex.airbnb)에 따라 코드를 검사하며, 문제를 강조해 수정에 도움을 준다. 물론 규칙이란 사람이나 팀에 따라 커스텀이 가능하며, 경고 또는 에러메시지를 통해..
목차 문제 X대학 M교수님은 프로그래밍 수업을 맡고 있다. 교실엔 학생이 30명이 있는데, 학생 명부엔 각 학생별로 1번부터 30번까지 출석번호가 붙어 있다. 교수님이 내준 특별과제를 28명이 제출했는데, 그중에서 제출 안 한 학생 2명의 출석번호를 구하는 프로그램을 작성하시오. 입력 입력은 총 28줄로 각 제출자(학생)의 출석번호 n(1 ≤ n ≤ 30)가 한 줄에 하나씩 주어진다. 출석번호에 중복은 없다. 출력 출력은 2줄이다. 1번째 줄엔 제출하지 않은 학생의 출석번호 중 가장 작은 것을 출력하고, 2번째 줄에선 그다음 출석번호를 출력한다. 풀이 자바로 풀 땐 스트림으로, 파이썬으로 풀 땐 제출한 사람을 하나씩 지워가며 풀었던 문제이다. 자바스크립트로 풀 때는 큰 의미는 없지만 두 가지 방식으로 풀..
목차 순서대로 배우는 건 능률이 좋게 느껴지지 않아서, 알고리즘 풀이로 정방향으로 배우는 동시에 잘 짜인 코드를 바탕으로 리버스 엔지니어링(?)으로 배우기로 했다. 일종의 어깨너머 배우는 느낌인데, 뭐 하여간 그렇다. 오늘 새로 배운 키워드는 제목에 쓰여있듯이 async, promise, await, then, process이다. 가능하면 예를 하나씩 들어가며 정리하도록 하자. async 'async' 키워드는 이름에서 추측할 수 있듯이, 비동기 함수를 선언할 때 사용한다. 해당 키워드가 붙은 함수는 암묵적으로 'promise'를 반환하게 된다. async function doSomething() { // ... Promise 반환 } Promise Promise는 자바스크립트에서 비동기 작업의 완료 여..
- Total
- Today
- Yesterday
- BOJ
- 알고리즘
- spring
- 세계일주
- 백준
- 유럽
- 지지
- 세계여행
- 유럽여행
- 야경
- 동적계획법
- a6000
- Python
- 여행
- 자바
- 중남미
- RX100M5
- 남미
- 면접 준비
- Backjoon
- java
- 맛집
- Algorithm
- 리스트
- 세모
- 스트림
- 기술면접
- 파이썬
- 스프링
- 칼이사
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |