Dev. 63

Swagger

swagger... 실제로 스웩이 넘치는 ui로 프론트와 백 사이를 멋지게 연결해주지만, 이게 맞나 싶은 주석 달기... autogen 라이브러리도 있는것 같고, ORM과 연결해서 모두 자동화가 될 것 같은데 싶다. 여튼, 설치하고, npm i -D swagger-jsdoc swagger-ui-express swagger ui를 사용하기 위해 swagger.js파일을 만들어 옵션을 적고, app.js에 연결해준다음 // ./swagger/swagger.js const swaggerJsdoc = require('swagger-jsdoc'); const swaggerUi = require('swagger-ui-express'); // Swagger 문서 정의 const swaggerOptions = { sw..

daily 2023.05.16

Dockerization [1] - AWS EB에 docker 배포하기

이제 Elastic Beanstalk에 올려서 배포하는걸 해보자. AWS Elastic Beanstalk AWS에서 EB라고 검색하면 나온다. 설명대로 쉽게 배포할 수 있긴 한데, 늘 그렇듯 어떻게 쓰는지에 대한 자료가... 어딘가 있겠으나 내눈엔 잘 안보인다. 위 화면에서 애플리케이션 생성을 누르면, 프리티어만 체크되면 된다. 플랫폼은 Docker로, 플랫폼 브랜치는 Docker running on 64bit Amazon Linux 2로 선택했다. 다른 옵션은 ECS running on 64bit Amazon Linux 2인데, 잘 모르겠기도 하고, 검색해보면 aws에서 컨테이너를 관리하고 배포하는 서비스 같아 보인다. 어쨋든 나는 바로 docker를 올리려고 생각했으니 이건 아니다. 다른 선택지는 헛..

daily 2023.05.15

Dockerization [0] - docker build 하기

Node.js 환경에서 만든 API를 Docker 이미지로 만들어 배포하기를 해보고 있다. 우선 Docker Desktop 설치에서부터 문제 해결을 하고, Docker image를 만들고 실행하면서 생긴 문제를 기록해본다. "Cannot enable Hyper-V service" 문제. 1. AMD에 MSI Bios에서 AMD IOMMU 옵션을 찾아서 enable, SVM 옵션을 찾아서 enable로 바꿔주고, 2. 윈도우 시작메뉴 우클릭 > 앱 및 기능 > 프로그램 및 기능 > Windows 기능 켜기/끄기 > Hyper-V 체크, 가상머신 플랫폼 체크 두가지 적용하고나니 Hyper-V 문제가 해결되었다. 그 다음은, "WSL 2 installation" 에러 이건 팝업에 있는 해결 방법 링크에서 알려..

daily 2023.05.15

REST...

REST 설계라는 것에 대해서 조금 더 알게 된 영상과 블로그 글을 공유하며, 간략하게 정리. 결과적으로 REST 설계라고 하려면 self-descriptive 하고, Hypermedia as the engine of application state(HATEOAS)도 지켜야 한다는 것... 대충 설명하는 URI와 HTTP method로 자원의 표현에 의한 상태전달만으로는 REST API로 부르지 말아달라는 REST 설계 개념을 만든사람의 부탁.....이 있으나, 대부분 적당선에서 끊고 RESTful하다고 설명하는 상황. 그리고 그런지 오래된 상황. 아래 영상과 글을 참조하면 좋다. https://www.youtube.com/watch?v=RP_f5dMoHFc https://wonit.tistory.com..

PWM 신호로 Fan 제어해 압력값 세팅하기

보통 PID제어를 설명하는 글에서 설명할 때 아래와 같은 그림을 많이 사용한다. 지금 개발 중인 PWM 신호로 Fan을 제어하고 원하는 pressure값에 도달하는 환경을 적용하려면 위 그림에서 Plant, Process에서, PWM 신호값으로 처리해주면 된다. 도식화 해보면, 위와 같이, PWM duty cycle을 제어하는 값으로 하고, Fan에 입력하고, 측정되는 압력값을 세팅한 압력값과의 차이를 바탕으로 PID 제어하는 로직을 구현했다. import time from time import sleep import math import random import matplotlib.pyplot as plt current_value = 10.0 def get_current_value(): global c..

daily 2023.05.15

23, 19주차

18~19주차 두 주간 node.js 백엔드 API를 만들기 위해 필요한 지식을 쌓고, 강의를 들으며 과제를 하는 시간을 보냈다. 과정 중에서 배우고 경험한 내용을 몇가지 정리해 본다면... 1. ORM ORM(Object-Relational Mapper)과 ODM(Object-Document Mapper)의 차이에 대해서는 이 글에서 정리했다. 둘 다 데이터베이스를 더 쉽게 사용하기 위한 프로그래밍 방법인데, 이번엔 ORM을 위해 Sequelize를 사용했고, ODM을 위해서 Mongoose를 사용했다. ORM이 없다면, DB에서 원하는 값을 얻기 위해, SQL문을 직접 작성해서 보내야 하는데, Document 방식의 NoSQL에서는 그나마 가능할 수 있겠다. 그러나 관계형 데이터베이스에서는 테이블을 ..

daily 2023.05.11

3-Tier, 3-Layered Architecture

n-Tier / n-Layered Architecture 3-티어 아키텍처에서는 애플리케이션을 데이터베이스 티어(또는 데이터 티어), 서버 애플리케이션 티어(또는 애플리케이션 티어), 클라이언트 티어로 나눈다. 각 티어에서도 여러개의 레이어로 나눌 수 있는데 이것을 계층형 아키텍처(Layered Architecture)라고도 부른다. Tier는 여러 개의 Layer로 구성할 수 있는데.. 그 둘을 구분하는 가장 큰 차이는 물리적으로 나누어진 계층인지 논리적으로만 나눠진 계층인지의 차이로 보면 된다. (n-Tier와 n-layered Architecture의 차이에 대한 글 참조) 한글로 Tier도 계층, Layered도 계층으로 번역한 글이 많아서 둘을 대충 같은 것으로 보고 작성한 글이 많아서 정확하게..

daily 2023.05.09

23.05.06. Refresh token, Access token

Refresh 토큰과 Access 토큰은 사실 익숙한 내용이다. 예전 dropbox API를 사용하고 있을 때, 언제부로 Oauth2.0으로 바뀌니 준비하라는 메일을 받았고, 그 내용이 기존 발급했던 auth key를 더이상 쓸 수 없고, access token과 refresh token을 사용하는 방식으로 바뀐다고 해서 취미로 하던 프로젝트에서 그에 맞게 코드를 수정했던 기억. 그 당시엔 refresh token의 expire기간이 길고, access 는 4시간인가로 짧았고, refresh는 월단위로 길었다. 사실 중요한 서비스는 아니었고, 깊게 알진 못해서 refresh token의 만료 시에 어떻게 되는지는 확실히 알아보지 못하고 시간이 지나도 refresh token이 갱신되며 문제가 없었던 것으..

daily 2023.05.06

23.05.01. Sequelize findOne에서, 테이블 조인과 이름 변경

Issue 위 ERD에서, Posts 에서..특정 postId를 가지는 데이터를 조회할 때, 필드로 postId, UserId, title, content, nickname을 찾고 싶다면 어떻게 해야할까? 우선 두 테이블을 userId 컬럼이 같은 기준으로 테이블을 조인하고, 각 데이터를 찾으면 될 것 같은데, Sequelize의 findOne 메서드를 사용해서 어떻게 구현해야 하는지가 문제였다. Try&Error 우선 처음 시도는 테이블 조인부터 해봤다. const post = await Posts.findOne({ attributes: [ "postId", "UserId", "title", "content", "createdAt", "updatedAt", ], include: [{ model: Use..

daily 2023.05.01

23, 17주차

17주차 이번주는 node.js를 이용해서 백엔드 서버를 구현해 보는 입문 주차였다. node.js 입문주차에서는 동기/비동기, 에러 핸들링 등의 자바스크립트 문법과, 서버를 구현하고 배포하기 위한 패키지 관리, DB연결, REST API의 개념, github 사용, 도메인 연결까지 간단하게 따라 하며 학습했다. 1. 동기와 비동기 (Synchronous / Asynchronous) 공부하면서 단어가 직관적이진 않다고 생각했다. Synchronous는 동시에 일어나거나 시간이 연동된다는 의미가 더 먼저 떠오르기 때문인데, 자바스크립트에서 동기와 비동기의 개념은 연속성에 대한 이야기로 이해하는 것이 더 좋다. Synchronous는 연속적으로 실행되는 것이고, Asynchronous는 연속적이지 않게 코드..

daily 2023.05.01
728x90