본문 바로가기

Web/Node.JS

[패스트캠퍼스 챌린지 23일차] NodeJS - 백엔드 Part 1 마무리 패스트캠퍼스 작심 30일 챌린지 23일차. 오늘은 백엔드 Part 1 마무리 강의, 리팩토링 프로젝트 강의를 수강하였다. 이번 강의에서는 API를 통해 '왕좌의 게임 가문의 캐릭터에서 긍정적인 가문과 부정적인 가문을 조회'하는 기능을 리팩토링하였다. 먼저 여기서 사용한 API는 두 가지가 있다. 하나는 말그대로 '왕좌의 게임' 데이터를 가져오는 Game of thrones Quotes API. 그리고 다른 하나는 문잘 별로 긍정적인지 부정적인지를 분석해주는 Sentim-API. 이 두가지를 통해 구현된 소스코드를 '백엔드 Part 1' 강의에서 배운 내용을 바탕으로 리팩토링을 진행하였다. 오늘은 일부 기능에 대해서만 Clone Coding을 진행하고 강의를 수강만 했기 때문에 학습 내용에 대한 요약은 간.. 더보기
[패스트캠퍼스 챌린지 22일차] NodeJS - Stream(2) 패스트캠퍼스 작심 30일 챌린지 22일차. 21일차에 이어 오늘도 Stream에 대해 학습하였다. 오늘의 주제는 두가지! 첫번째, Stream을 통한 파일 읽기와 Buffer를 통한 파일 읽기의 퍼포먼스 차이 확인. 두번째, Stream 사용시/구현시 주의점. 먼저 첫번째 주제부터 알아보자. 21일차 강의를 통해 file.txt라는 용량이 큰 파일을 만들었을 것이다. 이 파일을 읽기 위해 아래처럼 소스코드를 작성하였다. (간략한 예시코드를 보여주기 위해 소스코드 일부는 제거하였다.) const rs = fs.createReadStream('./file.txt', { encoding: 'utf-8'}) rs.on('data', (data) => { for (let i = 0; i < data.length;.. 더보기
[패스트캠퍼스 챌린지 21일차] NodeJS - Stream 패스트캠퍼스 작심 30일 챌린지 21일차. 원래 오늘은 Nodejs에서 제공하는 Standard Library에 대해 작성하려 했지만, Stream이 더 중요할 것 같아서 Stream에 대해 학습하였다. 강의를 통해서 Stream이 무엇인지, 종류가 어떻게 되는지, 그리고 실습을 통해 Stream을 어떻게 사용하는지 간략하게 배운 내용을 정리해보자. 먼저 Stream의 개요. Stream은 Nodejs에서 가장 중요한 Datatype 중 하나로, 스트리밍이 가능한 리소스를 Handler에게 전송하는 기능이며 Data는 여러 개의 조각(Chunk)으로 분할하여 전송된다. Stream은 용량이 큰 데이터를 처리하거나 비동기적으로만 얻을 수 있는 데이터를 처리할 때 유용한데, 대용량 파일을 압축하거나 읽고 쓸.. 더보기
[패스트캠퍼스 챌린지 20일차] NodeJS 핵심개념- 내장객체 패스트캠퍼스 작심 30일 챌린지 20일차. 오늘은 Nodejs의 데이터 구조에 대한 내용을 학습하려했지만, 아쉽게도 영상에 문제가 있어 다음에 따로 들어야겠다. 대신 오늘 학습한 내용은 Nodejs에서 지원하는 내장객체! 물론 이 중에는 Javascript에서 지원하는 내장객체도 있다. 강의 시간 상 모든 객체를 다 알려주지는 않지만, 강사님 나름대로 필요한 객체들을 선정해서 알려주었다. (더 많은 객체들에 대해 알고싶으면 nodejs의 공식 문서를 참고하길 바란다.) 먼저 알아볼 객체는 __dirname과 __filename. 객체 이름을 통해 바로 알 수 있듯이 directory name과 file name을 알려주는 객체이다. main.js를 하나 생성한 후 console.log를 통해 __dirn.. 더보기
[패스트캠퍼스 챌린지 19일차] NodeJS 핵심개념- 컨벤션 패스트캠퍼스 작심 30일 챌린지 19일차. 오늘 학습 내용은 Nodejs 컨벤션! 여기서 컨벤션의 범위는 소스코드 뿐만 아니라 파일 이름 등에 대해서도 적용된다. 그럼 컨벤션(Convention)이 뭘까? 간략히 설명하면 프로그래밍 스타일에 관한 가이드라인(?) 이라고 할 수 있다. 소스코드를 예로 들면 상수는 대문자와 스네이크 표기법을 통해 작성하기, 변수는 카멜 표기법을 통해 작성하기, 인덴트는 탭을 이용하기 등 소스코드 작성 시 팀원 또는 사내에서 공통적으로 지켜야 할 규칙 들을 생각하면 된다. 패스트캠퍼스 강의에서는 구글의 javascript 스타일 가이드를 기준으로 컨벤션을 잘 설명해주고 있다. (참고 : google javascript style guide) 패스트캠퍼스의 강의 내용을 바탕으로.. 더보기
[패스트캠퍼스 챌린지 18일차] NodeJS 핵심개념- npm, yarn 패스트캠퍼스 작심 30일 챌린지 18일차. 오늘은 NodeJS 학습에서 사용하는 Package Manager에 대해 학습하였다. 이 강의에서 소개하는 Package Manager는 NPM과 Yarn으로, 지금까지 자바스크립트를 통한 예제 코드를 작성할 때 필요한 라이브러리를 설치하기 위해서 npm을 사용했던 것을 바로 떠올릴 것이다. 자바스크립트 학습 초반에도 NPM이 Package Manager라는 것을 설명하였지만, 이번 학습을 통해 한번 더 NPM이 무엇인지 알아보고, 다른 Package Manager인 Yarn에 대해서도 간략히 알아보았다. NPM Node Package Manager를 말하며, package.json 파일을 미리 생성한 후 npm 명령어를 통해 라이브러리를 설치하게 되면 pack.. 더보기
[패스트캠퍼스 챌린지 17일차] NodeJS 핵심개념- require, module 패스트캠퍼스 작심 30일 챌린지 17일차. 오늘부터 드디어 Nodejs에 대한 강의가 본격적으로 시작되었다. 첫 강의는 그동안 예제 코드를 작성하면서 사용했던 require 함수와 Module에 대한 개념 정리! 먼저 require 함수는 그동안 작성한 예제 코드로 어떤 역할을 하는지 대충 감이 왔을 것이다. 바로 Node에서 지원하는 Library나 내가 작성한 Module을 Import해서 사용할 수 있게 해주는 역할을 한다. 즉, 파일 간에 참조 관계를 설정하기 위해 사용되는 함수이다. require 함수는 CommonJS가 제공하는 module에서 제공하는 함수로 그동안 require(‘fs’)로 작성하였지만, module.require(‘fs’)로 작성을 하여도 같은 동작을 한다. 이 내용에 대.. 더보기
[패스트캠퍼스 챌린지 16일차] RESTful API - JSON 파일(데이터베이스) 패스트캠퍼스 작심 30일 챌린지 16일차. 오늘은 게시판 객체를 JSON 파일에 저장시켜서 데이터베이스처럼 사용하기! 추석 당일이라 강의 하나만 수강했다. 지금까지 작성한 소스코드는 In memory를 활용하여 서버가 동작하는 동안에만 사용할 수 있었다. 만약 사용자가 게시판을 추가했는데 소스코드를 수정하였다면, 사용자가 추가한 데이터가 유지될까? 지금은 소스코드를 수정하면 서버도 재시작되고, 그 과정에서 In Memory에 등록한 데이터도 초기화 된다. 즉, 사용자가 입력한 데이터는 유지되지 않는다. 이러한 문제를 해결하기 위해 Database.json이라는 파일을 만들어 게시판 정보를 저장할 수 있도록 기능을 개선하였다. 먼저 이전 과정에서 작성한 게시판 객체를 JSON 파일로 이동시킨다. { "bo.. 더보기