본문 바로가기

분류 전체보기

[패스트캠퍼스 챌린지 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.. 더보기
[패스트캠퍼스 챌린지 15일차] RESTful API - 리팩토링 패스트캠퍼스 작심 30일 챌린지 15일차. 오늘은 그동안 작성했던 소스코드를 리팩토링하는 시간! 리팩토링을 하기 전에 리팩토링이 뭔지 알아야겠지? 리팩토링은 기능 동작에 영향을 주지 않으면서 내부 소스코드의 구조를 변경하는 것으로, 기능(역할) 단위로 소스코드를 분리하거나, 중복되는 코드를 제거하여 최대한 간결하게 작성하는 것을 말한다. 주로 중복코드를 제거하거나 기능단위로 함수를 분리하는 과정을 통해 리팩토링을 진행한다. (그 외에 더 많은? 무언가를 하겠지?) RESTful API를 위한 소스코드를 js 파일 하나에 다 작성하였지만, 중복되는 코드가 너무 많다. 함수 별로 statusCode도 똑같이 전달하고, Encoding 설정도 모두 중복된다. 그리고 RESTful API를 처리하는 함수는 별도.. 더보기
[패스트캠퍼스 챌린지 14일차] RESTful API - 기능완성 패스트캠퍼스 작심 30일 챌린지 14일차. 오늘은 RESTful API가 동작할 수 있게 Code를 모두 작성해보았다. 그동안은 API 호출을 하면 정상적으로 처리할 수 있게 결과에 대한 문자를 화면에 보여줬지만, 오늘은 In Memory를 이용해서 게시판을 추가해보고, ID를 통해 데이터를 조회하는 기능을 구현했다. 먼저 In Memory 데이터는 이전 강의에서 배운 Boards 객체를 사용하였다. /** @type {Board[]} */ const boards = [ { id: 'my_first_board', title: 'My first board.', content: 'Hello.' },{ id: 'my_first_board', title: 'My first board.', content: 'He.. 더보기
[패스트캠퍼스 챌린지 13일차] RESTful API - 예시(2) 패스트캠퍼스 작심 30일 챌린지 13일차. 오늘 학습 내용은 RESTFul API 작성을 도와줄 정규식과 타입 세이프티 기능을 학습하였다. 먼저 정규식(Regular Expression). 이전 강의에서 Board의 ID를 통해 정보를 조회하는 기능을 만들었다. 그럼 ID는 어떤 형식으로 받아야 할까? 사용자들이 ID에 어떤 값을 넣을지는 아무도 모른다. 숫자만 입력할 수도 있고 문자만 입력할 수도 있고, 심지어는 특수문자나 스크립트 코드를 작성하는 경우도 있다. 이 모든걸 다 받아준다고 하면 개발자는 많이 괴로워질것이다. 이때 ID 형식을 고정하고 검증하는 소스코드가 있으면 조금 더 편해지지 않을까? 그래서 사용하는 것이 정규식이다. 강의에서는 숫자와 영어 대소분자만 ID로 받을 수 있게 정규식을 구현.. 더보기
[패스트캠퍼스 챌린지 12일차] RESTful API - 예시(1) 패스트캠퍼스 작심 30일 챌린지 12일차. 오늘은 RESTful API를 활용한 토이프로젝트 구성에 대해 알려주는 강의를 들었다. 현업에서도 URL과 데이터 전송에 관한 규칙을 정하여 API를 통해 통신하는 경우가 많다. 주로 Tomcat 서버와 Spring(boot) 프레임워크 위에서 개발하여 사용하는데, Script 강의이기 때문에 별도의 프레임워크를 사용하지 않고 단순히 Script로만 RESTful API를 구현한다. API 구현 전에 먼저 할 일은 바로 어떤 기능을 만들것인지 기능 정의하기! 강의 내용과 마찬가지로 기능에 대한 설명은 다음과 진행할 예정이다. - User가 게시글을 조회/등록하는 서비스 - 로컬 파일을 데이터베이스로 활용(JSON) - 인증 로직은 제외 - RESTful API .. 더보기