BackEnd
[AWS] pretier DB 사용하기
무료로 아마존의 DB를 사용해보자!!! 먼저 AWS에 들어가서 RDS를 검색해주자. 나오는 페이지에 "데이터베이스 생성" 버튼을 눌러준다. MySQL을 사용할 것이기 때문에 MySQL과 표준생성을 눌러준다. 템플릿은 당연히 프리티어로 설정해둔다. 이후 마스터 사용자 이름과 암호를 설정해준다. 프리티어기 때문에 버스터블 클래스만 사용할 수 있는데 과금 방지를 위해 그중에서도 가장 꾸린(?) db.t2.micro를 설정해주고 추가적으로 스토리지 자동조정을 꺼준다. (자동으로 DB가 변경되어 과금가능성이 있음) 초기 데이터베이스 이름과 자동백업의 날짜를 설정해준다. 백업 보존기간은 적당하게 일주일로 두었다. 무료료 최대한 DB를 굴리기 위해 로그, 유지관리는 모두 꺼주었다. 단, 데이터베이스의 삭제는 혹시 모..
nulish ?? 연산자
최근 추가된 문법중에 ?? 연산자가 추가되었다. 해당 연산자에 대해서 알아보자. a ?? b 위 연산자의 결과는 아래와 같다. a가 null도 아니고 undefined도 아니면 a이고, 그 외에는 b가 오게된다. x = (a !== null && a !== undefined) ? a : b; 연산자를 보다 보니, ||이랑 같은역할을 하는 것이 아닌가? 라는 생각이 들었다. 실제로 대부분의 케이스에서는 ||과 ??이 거의 유사하게 동작하게 된다. 단, 0이 falsy이기 때문에 0이 입력되는 경우 ?? 연산자와 || 연산자간 차이가 발생하게 된다. 0 ?? b => 0 0 || b ==> b 만약 변수에 0이 할당될 수 있는 경우에 해당 연산자를 사용하면 효율적일 것이다.
서버 도메인 달아주기
서버 도메인을 달아주는 법을 적어보고자 한다. 필자는 라즈베리파이를 이용해 직접 서버를 만들었지만 AWS,ncloud 등을 활용해도 결국 받게 되는 공인 IP는 똑같다. xxx.xxx.xxx.xxx 이런 숫자를 받을 것이다. 해당 IP를 도메인으로 바꿔보자. 모든 사이트에는 공인IP가 있다. 이를 사용자가 접근하기 편하도록 이름을 붙여주는것이다. https://www.gabia.com/ 웹을 넘어 클라우드로. 가비아 그룹웨어부터 멀티클라우드까지 하나의 클라우드 허브 www.gabia.com 여러사이트들이 존재하지만 필자는 가비아를 활용했다. (그이유는 저렴해서..) 다음과같이 원하는 도메인명을 적으면 여러가지 옵션들이 나온다. 공부용으로 사용할꺼면 500원짜리 도메인들을 사용하는것을 추천한다. (필자는 ..
[라즈베리]gitHub Action 자동배포하기 (CI/CD)
https://supersfel.tistory.com/368 라즈베리파이로 웹서버 만들기 (1) - 밖에서 라파 접속하기 이번에 새롭게 웹 프로젝트를 시작하려 하니 서버가 마음에 걸렸다. nCloud나 AWS나 몇몇 선택지가 있긴 했지만 가격이 아무래도 마음에 좀 걸렸었다... 그러던 중 집에 굴러다니던 라즈베리파이 supersfel.tistory.com 이전에 라즈베리파이를 활용하여 서버를 만들어서 배포하는 작업을 했었는데, gitHub Action을 활용해서 main에 push가 될때마다 자동 배포를 진행해보고자 한다. gitHub Action을 활용하면 깃허브에서 이벤트(push,commit,pull Request 등) 이 발생하였을때 특정 작업을 자동으로 진행하게 도와준다. Event push, ..
[NestJS] 03 - 컨트롤러
Nest의 컨트롤러는 MVC 패턴에서의 컨트롤러이다. 즉, 들어오는 요청(request)를 받고 그 처리결과를 응답(response)로 돌려주는 인터페이스 역할을 한다. 컨트롤러는 라우팅 메커니즘을 통해 컨트롤러가 받는 요청을 분류한다. 이전 글에서 서버를 구동시키고 동작하는법은 익혔다. 그렇다면 소스코드를 한번 살펴보자 // app.controller.ts import { Controller, Get } from '@nestjs/common'; import { AppService } from './app.service'; @Controller() export class AppController { constructor(private readonly appService: AppService) {} @Ge..
[NestJs] 2- 데코레이터
NestJs 는 데코레이터를 적극 활용한다. 데코레이터를 잘 활용하면 횡단관심사를 분리하여 관점 지향 프로그래밍을 적용한 코드를 작성 할 수 있다. 예시를 한번 보자. 상당히 스프링처럼 생겼다.. (필자는 스프링을 다룰 줄 모른다) class CreateUserDto { @IsEmail() @MaxLength(60) readonly email: string; @IsString() @Matches(/^[A-Za-z\d!@#$%^&*()]{8,30}$/) readonly password: string; } 당황스럽지만 차근차근 봐보자. 위 코드는 사용자가 요청을 제대로 보냈는지 검사하는 코드이다. email은 IsEmail()을 통해 이메일 형식을 정의하고 있고, 최대 길이를 60자로 정의하고 있다. (Ma..