본문 바로가기
Books/Node.js 프로젝트 일주일 ✔️

[Node.js 프로젝트 투입 일주일 전] 5장 - Node.js 내장 모듈과 객체

by Aaron-Kim 2022. 5. 7.

5.1 Console

  - Console 클래스

    - Node.js의 파일 쓰기와 같은 스트림에 사용될 수 있음

    - log 파일을 만들어서 console.log/warn/error와 같은 함수를 사용하여
      디버깅 혹은 각종 정보성 메시지를 파일로 기록 가능

    - 실무 활용
      - 개발 시 디버깅을 위해 전역 객체인 console을 이용하여 터미널에 메시지 출력,

         운영상에서는 로그 파일을 만들어서 관리

  - 전역 객체 console

    - console 모듈은 전역 객체로 등록됨 (require 필요 없음)

    - console 내장 함수

      - console.log(내용, ...args)

        - 일반적인 로그를 콘솔에 출력

      - console.error(내용, ...args)

        - 에러를 콘솔에 출력

      - console.table(테이블형 데이터)

        - 배열/오브젝트를 테이블 형태로 콘솔에 출력

      - console.time(레이블)/console.timeEnd(레이블)

        - 전달한 인수 값이 일치하는 코드 사이의 실행 시간을 측정하여 출력

      - console.dir(오브젝트, 옵션)

        - 객체를 콘솔에 출력할 때 사용, 두 번째 옵션 (depth, colors)

5.2 Timers

  - 타이머 모듈의 모든 함수는 전역 함수

  - 타이머 함수

    - setTimeout(콜백 함수, 밀리초)

      - clearTimeout(변수명)을 통해 취소 가능

      - 이벤트 루프를 블로킹하거나 이벤트 큐에 보유하고 있는 다른 실행 코드가

         타임아웃의 실행을 뒤로 밀수 있어서 반드시 설정한 밀리초 이후에 실행된다는 보장은 없음

    - setInterval(콜백 함수, 밀리초)

      - clearInterval(변수명)을 통해 취소 가능

    - setImmediate(콜백 함수)

      - 현재 이벤트 루프 주기 끝에 있는 코드 실행

      - setImmediate() 함수 호출 뒤에 오는 모든 코드가 먼저 실행된 후 바로 다음에 실행됨

      - clearImmediate(변수명)을 통해 취소 가능

5.3 Process

  - Process events

    - 프로세스 객체는 EventEmitter의 인스턴스로 다음과 같은 이벤트 발생할 때마다 리스너로 등록 가능

      - beforeExit

        - Node.js가 이벤트 루프를 비우고 예약할 추가 작업이 없을 때 발생되는 이벤트

      - exit

        - process.exit()를 호출하거나 이벤트 루프가 더 이상 수행할 추가 작업이 없을 때 발생

        - exit 이벤트에 등록된 리스너가 실행 마치면 프로세스는 종료

      - disconnect

        - Node.js 프로세스가 IPC 채널(클러스터로 자식 프로세스 생성 시)로 생성된 경우,

           IPC 채널이 닫힐 때 disconnect 이벤트 발생

      - message

        - Node.js 프로세스가 IPC 채널(클러스터로 자식 프로세스 생성 시)로 생성된 경우,

           childprocess.send()를 사용해서 상위 프로세스가 보낸 메시지를 하위 프로세스에서 수신할 때마다 발생

  - process.env

    - 사용자 환경을 포함하는 객체 반환

  - process.nextTick

    - Node.js의 이벤트 루프는 다른 콜백 함수보다 nextTick에 인수로 전달한 콜백 함수를 우선적으로 처리

    - next tick queue에 추가됨

  - process.exit()

    - 실행 중인 Node.js 프로세스 종료

    - 실무 활용

      - 웹 애플리케이션 처음 구동 시 관리자가 DB 및 외부 시스템 연결 관련 설정하는 경우,

         설정된 옵션이 반영되려면 반드시 Node.js 서버 재시작 필요

      - forever 기능을 통해 서버가 멈추면 자동으로 재시작 적용

    - 인수를 주지 않거나 상태코드 0을 주면 정상 종료, 인수로 1을 주면 비정상 종료를 의미

5.4 OS

  - 운영체제 관련 유틸리티 함수 및 속성 정보 제공

  - 실무 활용

    - 프로그램 내에서 임시 파일을 저장할 때 임시 파일 저장 경로를 알기 위해 os.tmpdir() 함수 사용

    - Node.js에서 멀티 스레드 효과를 내기 위한 방법인 클러스터를 구성할 때

      현재 서버의 CPU 코어수를 알기 위해 os.cpus().length 사용

5.5 Path

  - path.basename(path[,ext])

    - 경로의 마지막 부분 반환

  - path.delimiter

    - 운영체제별로 환경 변수 구분자를 가져옴

      - 윈도우는 세미콜론(;), 맥/리눅스 같은 POSIX는 콜론(:) 사용

  - path.dirname(path)

    - 파일이 위치한 폴더 경로 반환

  - path.extname(path)

    - 파일의 확장자 반환

  - path.format(pathObject)

    - pathObject로 주어진 프로퍼티를 사용해서 경로 문자열 반환

      - dir 값이 주어지면 root 값이 주어지더라도 무시됨

      - base 값이 주어지면 ext, name 값이 주어지더라도 무시됨

  - path.isAbsolute(path)

    - 주어진 파일의 경로가 절대경로인지 상대경로인지 알 수 있음

  - path.join([...paths])

    - 문자열로 주어진 경로들을 모두 합쳐서 하나의 경로로 만들어 반환

  - path.parse(path)

    - path.format() 함수와 반대로 문자열로 된 경로를 pathObject로 반환

  - path.sep

    - 경로 구분자를 반환

     - 윈도우는 역슬래시, 맥/리눅스 같은 POSIX 계열은 슬래시 반환

5.6 URL

  - WHATWG API

    - URL 클래스를 new 생성자를 사용해서 URL 객체를 생성하는 방식

    - 활용

      - 주어진 url 정보에서 전달된 쿼리 데이터를 추출할 때 사용 가능

      - searchParams 속성은 URLSearchParams 클래스로 쿼리 데이터를 조작하기 위한 다양한 내장 함수 제공

  - 레거시 API

    - require() 함수로 url을 호출한 후 parse() 함수 사용

    - WHATWG API 방식과 반환되는 Object의 구조가 다름

5.7 Crypto

  - 다양한 암호화 기능 제공

    - 단방향 암호화 (실제 Node.js 에서 자주 사용)

    - 양방향 암호화

      - 대칭형 암호화

      - 비대칭형 암호화

  - 보안이 필요한 데이터는 반드시 암호화해서 관리해야 함

    - 해킹 예방

    - 개인정보 보호

  - createHash() 함수 파라미터: 암호화에 사용할 알고리즘

  - update() 함수 파라미터: 암호화할 문자열

  - digest() 함수 파라미터: 어떤 인코딩 방식으로 암호화된 문자열을 표시할지 전달

  - salting 암호화

    - 해커들이 레인보우 테이블을 이용하면 암호화 이전 원본 값과 결과 값을 테이블로 가지고 있음

    - 해커들이 원본 값을 알아내기 어렵게 처리하기 위해 salting 암호화 기법 이용

    - randomBytes() 함수를 사용하여 64바이트 길이의 salt 생성

    - pbkdf2() 함수를 사용하여 salt를 이용한 비밀번호 암호화 (암호화된 값과 salt 값 반환)

    - 암호화된 비밀번호와 salt 값을 DB에 함께 저장

      - 사용자가 로그인 시도 시 입력한 비밀번호와 DB에 저장된 salt 값을 사용해서 암호화된 값을 얻고,

         이 값이 DB에 저장된 암호화된 비밀번호 값과 일치하는지 비교해서 로그인 처리

5.8 File system

  - fs.readFile(path, [options], callback)

    - 파일(path)을 옵션으로 지정한 문자 인코딩(utf8)을 사용해서 읽은 후 결과를 콜백으로 전달하는 비동기 함수

  - fs.readFileSync(path, [options])

    - 파일(path)을 옵션으로 지정한 문자 인코딩을 이용해서 utf-8 형식으로 읽은 후 결과를 반환하는 동기 함수

  - fs.writeFile(path, data, [options], callback)

    - 파일(path)을 [options] 방식을 사용해서 data를 쓰고 콜백으로 결과를 전달하는 비동기 함수

  - writeFileSync(path, data, [options])

    - 파일(path)을 [options] 방식을 사용해서 data를 쓰는 동기 함수

  - fs.watchFile(filename[, options], listener)

    - 대상이 되는 파일의 변경 사항 여부를 감시 가능

    - 변경 사항 발생 시 지정한 콜백 리스너 함수 실행 가능

    - 실무 활용

      - DB 조작을 위한 쿼리문을 작성한 파일을 watchFile() 함수로 감시하고,

         Node.js 서버를 재시작하지 않아도 변경된 내용을 바로 반영 시 많이 사용 가능


[Source Code] - Ch 05. Node.js 내장 모듈과 객체

반응형

댓글