(21)

[NestJS] NestJS 개발 환경 셋팅

서론 9개월 정도를 스프링만 사용하던 신입 개발자인 나에게 갑작스레 실무에서 Node.js를 사용해야하는 상황이 닥쳤다. 기존 backend 코드를 보니 모듈을 import하는 것들이 대부분 @nestJS/어쩌고로 되어있는 typescript였다. 실무를 위해 빠른 적응이 필요했다. 나중에 node와 typescript, nest등에 대한 적당히 자세한(?) 공부 및 포스팅을 진행할 것이다. 간단하게 알아본 바로는 다음과 같았다. NestJS는 서버 측 노드 애플리케이션을 구축하기 위한 프레임워크로 Express와 같은 HTTP Server Framework를 내장하고 있고, 대부분 TypeScript로 구성되어 있다고한다. 이미 셋팅되어있는 개발환경을 다시 뜯어보기전에, 어떻게 개발환경을 셋팅하는지 부..

자주쓰는 npm 명령어 정리 (npx)

명령어 정리 npx npm 5.2.0버전부터 제공되는 명령어로 npx를 사용하면 install 없이 일회성으로 패키지를 실행하거나 명령을 실행할 수 있다. 1. npm init - package.json 생성 2. npm install / npm i - npm 모듈을 로컬(현재 프로젝트 내부)에 설치 - 옵션으로 --save / -S, --save-dev / -D를 사용 가능 - --save / -S는 dependency에 추가하는 명령어인데 npm 5버전 이후로는 자동으로 dependency에 추가됨 - --save-dev / -D는 devDependencies에 추가. 개발 환경에서만 사용하는 모듈 3. npm uninstall moduleName - 설치한 모듈 삭제 4. npm dedupe - 중..

[백준 10845 / Java] 큐

문제 링크 https://www.acmicpc.net/problem/10845 10845번: 큐 첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지 www.acmicpc.net 풀이 큐 포스팅 링크 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.StringTokenizer; public class Main ..

[NestJS] NestJS 개발 환경 셋팅

Tech/NodeJS 2023. 9. 9. 00:20
728x90
728x90

 

 

서론

9개월 정도를 스프링만 사용하던 신입 개발자인 나에게 갑작스레 실무에서 Node.js를 사용해야하는 상황이 닥쳤다.

기존 backend 코드를 보니 모듈을 import하는 것들이 대부분 @nestJS/어쩌고로 되어있는 typescript였다.

 

실무를 위해 빠른 적응이 필요했다.

나중에 node와 typescript, nest등에 대한 적당히 자세한(?) 공부 및 포스팅을 진행할 것이다.

 

간단하게 알아본 바로는 다음과 같았다.

NestJS는 서버 측 노드 애플리케이션을 구축하기 위한 프레임워크로

Express와 같은 HTTP Server Framework를 내장하고 있고, 대부분 TypeScript로 구성되어 있다고한다.

 

이미 셋팅되어있는 개발환경을 다시 뜯어보기전에, 어떻게 개발환경을 셋팅하는지 부터 알아야했다.

 

Nest는  Angular에서 영감을 받아 개발자와 팀이 고도로 테스트 가능하고 확장 가능하며 느슨하게 결합되고유지 관리가 쉬운 애플리케이션을 만들 수 있는, 즉시 사용 가능한 애플리케이션 아키텍처를 제공한다.

 

 

Documentation | NestJS - A progressive Node.js framework

Nest is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript, is built with TypeScript and combines elements of OOP (Object Oriented Programming), FP (Functional Programming), and FRP (Functional Rea

docs.nestjs.com

 

 

개발 환경 셋팅

노드 설치

노드를 우선 설치해야하는데, 노드 설치는 홈페이지 가서 OS에 맞는 것을 설치하면 된다.

 

NestJS CLI 설치

CLI란 명령 줄 인터페이스로 NestJS는 개발자가 좀 더 편리하게 개발하고 설정할 수 있도록 이러한 CLI를 제공한다.

npm i -g @nestjs/cli

혹여 권한 때문에 에러가 발생한다면 sudo 등의 권한을 부여하는 명령어를 같이 사용하자.

나는 그냥 VSCode를 관리자 권한으로 실행했더니 잘 됐다.

 

위 명령어를 통해 설치를 진행하며, 왜 꼭 전역으로 설치해야하는지 의문이 들어서 검색해보다가 결국 chatGPT에게 물어봤더니 아래처럼 대답해줬다.

 

 

프로젝트 생성

nest new projectName

원하는 경로로 이동하여 위 명령어를 실행하면 NestJS CLI가 자동으로 프로젝트 폴더를 생성해준다.

 

 

 

자동으로 프로젝트가 생성되었다.

728x90
300x250
mag1c

mag1c

2년차 주니어 개발자.

자주쓰는 npm 명령어 정리 (npx)

Tech/NodeJS 2023. 9. 7. 23:41
728x90
728x90

 

 

명령어 정리

npx <command>
npm 5.2.0버전부터 제공되는 명령어로
npx를 사용하면 install 없이 일회성으로 패키지를 실행하거나 명령을 실행할 수 있다.

1. npm init

 - package.json 생성

 

2. npm install / npm i

 - npm 모듈을 로컬(현재 프로젝트 내부)에 설치

 - 옵션으로 --save / -S, --save-dev / -D를 사용 가능

 - --save / -S는 dependency에 추가하는 명령어인데 npm 5버전 이후로는 자동으로 dependency에 추가됨

- --save-dev / -D는 devDependencies에 추가. 개발 환경에서만 사용하는 모듈

 

3. npm uninstall moduleName

 - 설치한 모듈 삭제

 

4. npm dedupe

 - 중복된 모듈 정리

 

5. npm root

 - node_modules의 위치를 알려줌

 

6. npm oudated

 - 오래된 패키지의 존재 유무를 알려줌

 

7. npm ls ( + 패키지명)

 - 패키지 조회 (패키지의 유무와 어떤 dependecies인지 알려줌)

 

8. npm cache (clean --force)

 - npm 내의 cache 확인 (캐시 삭제)

 

9. npm rebuild

 - npm 재설치

 

10. npm -v / npm - version

 - 버전 확인

 

11. npm start

 - package.json의 scripts에 있는 start명령어 실행

 

11. npm stop

 - 실행중인 npm 중지

 

12. npm restart

 - 재시작

 

13. npm run (명령어)

 - 그 이외의 scripts 실행

 

14. npm config (list)

 - npm 설정 조작 (현재 설정 조회)

728x90
300x250
mag1c

mag1c

2년차 주니어 개발자.

[백준 10845 / Java] 큐

Tech/NodeJS 2023. 7. 1. 09:07
728x90
728x90

문제 링크

https://www.acmicpc.net/problem/10845

 

10845번: 큐

첫째 줄에 주어지는 명령의 수 N (1 ≤ N ≤ 10,000)이 주어진다. 둘째 줄부터 N개의 줄에는 명령이 하나씩 주어진다. 주어지는 정수는 1보다 크거나 같고, 100,000보다 작거나 같다. 문제에 나와있지

www.acmicpc.net


 

 

 

풀이

큐 포스팅 링크

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

public class Main {

    static List<Integer> queue = new ArrayList<>();
    static StringBuffer sb = new StringBuffer();

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;

        int N = Integer.parseInt(br.readLine());

        for(int i = 0; i < N; i++){
            st = new StringTokenizer(br.readLine(), " ");

            switch(st.nextToken()){
                case "push": push(Integer.parseInt(st.nextToken()));
                    break;
                case "pop" : pop();
                    break;
                case "size" : size();
                    break;
                case "empty" : empty();
                    break;
                case "front" : front();
                    break;
                case "back" : back();
                    break;
            }
        }
        System.out.println(sb.toString());
    }

    private static void push(int i) {
        queue.add(i);
    }

    private static void pop() {
        if(queue.isEmpty()) sb.append(-1 + "\n");
        else{
            sb.append(queue.remove(0) + "\n");
        }
    }

    private static void size() {
        sb.append(queue.size() + "\n");
    }

    private static void empty() {
        if(queue.isEmpty()) sb.append(1 + "\n");
        else sb.append(0 + "\n");
    }

    private static void front() {
        if(queue.isEmpty()) sb.append(-1 + "\n");
        else{
            sb.append(queue.get(0) + "\n");
        }
    }

    private static void back() {
        if(queue.isEmpty()) sb.append(-1 + "\n");
        else{
            sb.append(queue.get(queue.size() - 1) + "\n");
        }
    }

}
728x90
300x250
mag1c

mag1c

2년차 주니어 개발자.

방명록