전체 글 108

#20210721 Philosopher 시작

2. 학습 목표 Philosopher과제 파악하기 3. 학습 방법 건우형한테 흐름 배우기 강의 듣기 https://www.youtube.com/watch?v=YAP0Bv_aQl8 4. 다음 학습 목표 아직은 모르겠음. 과제를 파악하지 못함 5. 상세 학습 내용 철학자의 저녁식사 (Dining = Philosopher) DeadLock (교착상태)의 개념 - 프로세스가 자원을 얻지 못해 다음 처리를 하지 못하는 상태로, '교착 상태'라고도 하며 시스템적으로 한정된 자원을 여러 곳에서 사용하려고 할 때 발생 DeadLock (교착상태)의 발생 조건 - 교착상태는 한 시스템 내에서 다음의 네 가지 조건이 동시에 성립할 때 발생함. 따라서, 아래의 네 가지 조건 중 하나라도 성립하지 않도록 만들면 교착 상태를 ..

ft_philosopher 2021.07.21

#1.1 EC2 접속 및 서버 환경 준비하기

배포 과정 EC2 인스턴스 node.js git git clone nginx copy .env, awsconfig.json mariadb S3 domain change (Router 53) SSL db migration deploy script 수정 데이터 백업 EC2에 접속하기 밑의 경로로 들어가면 액세스 키와 시크릿 키를 발급받는 방법이 있다. 미리 발급 받자. https://www.44bits.io/ko/post/publishing_and_managing_aws_user_access_key 아마존 웹 서비스 IAM 사용자의 액세스 키 발급 및 관리 아마존 웹 서비스 계정은 하나의 루트 계정과 다수의 IAM 사용자로 구성됩니다. 각 사용자는 자신의 권한으로 외부에서 API를 호출할 수 있는 토큰을 발..

#1.0 나도 한번 서비스를 배포해보자! (EC2 인스턴스 생성 과정)

제작하게된 계기 실제로 서버를 배포하는 경험이 처음이기도 하고 기록해두면 두고두고 사용할것 같다. 우리가 제작한 CMS프로젝트를 다음 기수가 프로젝트를 받아서 진행하는 상황이다. 그래서 도움이 좀 됬으면 좋겠다. 배포 과정 EC2 인스턴스 nginx git node.js git clone copy .env, awsconfig.json mariadb S3 domain change (Router 53) SSL db migration deploy script 수정 데이터 백업 1. EC2 인스턴스를 생성하자. 예전에 EC2 인스턴스 생성하는 과정을 블로그에 정리해놨다. 밑의 블로그를 참고해도 되지만 좀 오래되서 이번에 새로 다시 해보겠다. 좀 간단하게 과정만 기록하겠다. 자세한 내용을 원하면 밑의 블로그를 꼭..

TDD[7] 코드 리팩토링 및 데이터베이스 연동

리팩토링 역할에 따라 파일로 분리하자 • api/user/index.js • api/user/user.ctrl.js • api/user/user.spec.js 리팩토링을 하면서 리팩토링이 잘됬는지 알수있 복잡한 코드를 정리해보겠다. ./index.js 밑과 같게 api/user/index.js 파일을 만들자 새로 만든 api/user/index.js 파일이다. 근데 이렇게 나누면 문제가 생긴다. app이라는 어플리케이션 변수 express 객체가 정의되어 있지않다. 이 문제를 해결하기 위해서 라우터 객체다. 그래서 위에 코드를 보면 2번줄을 추가했다. ./index의 코드가 이렇게 줄었다. 11번 줄은 /users 모든경로에 대해서는 user 라우터를 사용하겠다는 의미 그래도 코드가 기능에 비해 많이 길..

NodeJs 2021.04.01

TDD[6] 사용자목록 및 사용자 상세정보 API개발

GET /user/:id 유저한명 정보 success • id가 1인 유저 객체를 반환한다 error • id가 숫자가 아닐경우 400으로 응답한다 • id로 유저를 찾을수 없을 경우 404로 응답한다 이번에는 쿼리를 사용하지 않고 id 식별자로 구분해볼거다 const express = require('express') const logger = require('morgan') const app = express() const users = [ { id: 1, name: 'Alice' }, { id: 2, name: 'Bek' }, { id: 3, name: 'Chris' } ] app.get('/', (req, res) => { res.send('Hello World!') }) app.get('/use..

NodeJs 2021.03.31

TDD[5] TDD로 API 서버 개발

첫 API 테스트 만들기 성공 유저 객체를 담은 배열로 응답한다 최대 limit 갯수만큼 응답한다. 실패 limit이 숫자형이 아니면 400을 응답한다. offset이 숫자형이 아니면 400을 응답한다. 일단 서버를 실행하는 함수를 bin/www로 빼자 www.js 코드 const app = require('../express.js') app.listen(3000, () => {console.log(`running`)}) 그리고 express.js 에서 앱모듈을 공개하자 module.exports = app -> express.js 에 추가 package.json 파일에서 스크립트 부분도 당연히 바꿔줘야함 예시 코드) index.spec.js 코드 //테스트파일은 파일명에 spec이란 단어를 넣거나 폴더..

NodeJs 2021.03.31

TDD[4] TDD 이해 및 환경 구축

테스트 주도 개발 TDD로 개발하자 mocha, should, superTest TDD 엄밀하게 말해서 100%는 아니다. 테스트코드를 만들고 테스트코드를 통과하는 코드를 만들고 리팩토링하는 싸이클 여기에선 api를 만들고 테스트코드를 만들거나 테스크코드를 만들고 api를 만들거임 Mocha 모카(mocha)는 테스트 코드를 돌려주는 테스트 러너 테스트 꾸러미: 테스트 환경으로 모카에서는 describe()으로 구현한다 테스트 케이스: 실제 테스트를 말하며 모카에서는 it()으로 구현한다 mocha를 사용해보자 npm i mocha --save-dev 로 설치하자 14번줄 스크립트 부분에서 start 부분을 수정했다. node index.js == npm start 똑같은 명령어 devDependenci..

NodeJs 2021.03.31

TDD[2] Express.js 역할 및 구조의 이해

익스프레스JS 기초 어플리케이션 익스프레스 인스턴스를 어플리케이션이라 한다 서버에 필요한 기능인 미들웨어를 어플리케이션에 추가한다 라우팅 설정을 할 수 있다 서버를 요청 대기 상태로 만들수 있다 express를 사용하지 않고 만든 어플리케이션 const http = require('http'); //노드에서 기본적으로 제공해줌 기본모듈을 가져옴 const hostname = '127.0.0.1'; const port = 3000; const server = http.createServer((req, res) => { if (req.url === '/') { res.statusCode = 200; res.setHeader('Content-Type', 'text/plain'); res.end('Hello W..

NodeJs 2021.03.31