분류 전체보기 67

Nest.js에서 env로 외부 환경요소 주입하기

일단 Nest.js에서 env를 사용하기 위해서 dotenv 라이브러리를 다음과 같이 설치해줍니다. npm install dotenv 만약 클러스터를 이용하고 있다면, 기존 포스트를 참고해 줍니다. https://roslyndev.tistory.com/33 Nest.js 에서 cluster로 요청 격리하기 기본적으로 Node.js를 계승한 Nest.js는 Node.js와 마찬가지로 요청이 격리되지 않는 이슈가 있다. (싱글스레드) 다른 Asp.net, Spring, PHP 등보다 안정성이 떨어지는 건 바로 이 부분인데, 요청이 격리되는 roslyndev.tistory.com 이제 .env파일을 만들어 줍니다. 각각 파일에 내가 필요로 하는 환경 요소들을 동일하게 넣어줍니다. 다음 내용은 예시니까, 참고만..

Nest.js를 Docker로 배포하기

먼저 프로젝트 루트에 Dockerfile 이란 파일을 만들어주자. (사실 파일이름은 아무렇게나 해도 상관없다.) 그런 다음 다음에 오는 내용을 작성해 주자. FROM node:18 WORKDIR /usr/src/app COPY package*.json ./ RUN npm install COPY . . RUN npm run build EXPOSE 3000 CMD [ "npm", "start" ] From은 사용할 이미지다. node:18 이미지 사용을 지정했다. 이미지 내에서 사용할 작업 폴더는 WORKDIR로 지정한다. COPY 명령을 통해 먼저 package.json 과 package-lock.json을 WORKDIR로 복사한다. 다음에 RUN 명령으로 npm install 명령어가 실행된다. 이제 C..

윈도우에 Docker로 ubuntu 이미지 직접 만들기

개발환경은 되도록이면 해당 환경 이미지를 바로 당겨 쓰는 것을 권장합니다. node.js 환경이라면 docker pull node:버전 명령으로 환경을 셋팅하세요. 먼저 Docker Desktop 버전을 다운 받습니다. https://www.docker.com/products/docker-desktop/ Docker Desktop: The #1 Containerization Tool for Developers | Docker Docker Desktop is collaborative containerization software for developers. Get started and download Docker Desktop today on Mac, Windows, or Linux. www.docker...

Nest.js + TypeORM 을 적용해보자.

이번에는 Nest.js 프로젝트에 TypeORM을 적용해 보자. 일부 관련된 자료 또는 TypeORM 공식 홈페이지에는 TypeORM의 CLI를 이용한 프로젝트 생성방법이 거론되고 있는데, 우리는 Nest를 이용해서 프로젝트를 생성할 것임으로 굳이 TypeORM을 글로벌로 설치할 필요는 없다. 먼저 현재 프로젝트에 설치부터 해주자. npm install typeorm reflect-metadata @nestjs/typeorm reflect-metadata는 TypeScript에서 데코레이터 메타데이터를 사용하는 데 필요한 라이브러리입니다. TypeScript는 데코레이터를 지원하는데, 이를 사용하면 클래스와 클래스 멤버에 메타데이터를 연결할 수 있습니다. TypeORM은 이러한 데코레이터를 사용하여 엔터..

Nest.js 에서 cluster로 요청 격리하기

기본적으로 Node.js를 계승한 Nest.js는 Node.js와 마찬가지로 요청이 격리되지 않는 이슈가 있다. (싱글스레드) 다른 Asp.net, Spring, PHP 등보다 안정성이 떨어지는 건 바로 이 부분인데, 요청이 격리되는 다른 웹언어들은 한곳에서 오류가 나도 그 요청에 대한 오류로 끝나지만, Node.js나 Nest.js는 서버 응용프로그램이 종료되는 치명적인 문제를 가지고 있다. 때문에, 반드시 요청을 격리시켜주는 별도의 작업이 필요하게 되는데, 그중 가장 기본적인 방법을 기술해보자. 먼저 node 의 cluster를 원활히 사용하기 위해 type/node를 설치해 주자. npm install --save-dev @types/node 그런 다음 tscofnig.json 파일에 compile..

Nest.js + mssql 연동하기

이번에는 nest.js와 mssql 을 연동해 보자. 먼저 mssql 라이브러리를 설치해 준다. npm install mssql 먼저 프로젝트에 Cors 이슈를 해결하기 위해 app에서 enableCors() 함수를 호출해 준다. import { NestFactory } from '@nestjs/core'; import { AppModule } from './app.module'; import { SwaggerModule, DocumentBuilder } from '@nestjs/swagger'; async function bootstrap() { const app = await NestFactory.create(AppModule); const config = new DocumentBuilder() .s..

Windows11에서 Nest.js 개발환경 셋팅

먼저 nest.js를 설치한다. npm i -g @nestjs/cli 이제 원하는 폴더로 이동해서 프로젝트를 생성해 보자. nest new sampleproject 여기서 [sampleproject] 는 내가 원하는 프로젝트명인데, 가급적 소문자를 권장한다. 그럼 다음과 같이 설치에 사용할 저장소를 선택해 달라는 질문이 나온다. 여기서는 그냥 "npm"을 선택해서 진행했다. 셋팅이 완료되고 나면 dir 명령을 통해 폴더를 확인해 보자. 내가 지정한 프로젝트명과 동일한 폴더명이 생겨 있을 것이다. 해당 폴더로 이동하고, vs code로 에디터를 열어보자. 루트 폴더 아래로 기본 파일들이 생성된 것을 볼 수 있다. 기본 생성된 결과물로 실행을 시켜보자. 이제 swagger을 설치해 보자. npm instal..

[공지] 샘플 코드를 온라인에서 공유드립니다.

지금까지 학습한 내용을 온라인에서 공유드립니다. 소스코드 공유 사이트인 깃헙(www.github.com)을 이용해서 공유드립니다. 깃(git)과 깃헙(github)에 관해서는 프로그램에 대한 이해도가 어느정도 수준에 이르면, 전체적으로 한번 포스트를 작성해 보도록 하겠습니다. 샘플코드 : https://github.com/roslyndev/ExampleProject GitHub - roslyndev/ExampleProject: 블로그 예제 코드 블로그 예제 코드. Contribute to roslyndev/ExampleProject development by creating an account on GitHub. github.com 해당 웹사이트에 접속하면 우선적으로 회원가입부터 진행해 주세요. 깃허브 ..

C# 프로그램 예제연습 - 텍스트게임만들기 - 08

자 이제 그동안 배운걸 총동원해서 Program.cs 에서 게임의 흐름을 작성해 봅시다. 먼저 기존에 작성했던 코드 맨 아래에 Dungeon() 함수를 추가해 줍니다. static void Main(string[] args) { Init(); player.Name = GetUserName(); Hello(player.Name); Dungeon(); } 던전함수는 플레이어가 던전에 입장하면 하게될 전체 로직이 작성될 곳입니다. 최초에 등장할 좀비를 포함하여 총 20마리의 몹을 처치하고, 모두 제거하고 나면 보스인 뱀파이어를 만나야 합니다. static void Dungeon() { IMonsterAction monster = null; //현재 상대할 몬스터입니다. Random random = new Ra..

C# 프로그램 예제연습 - 텍스트게임만들기 - 07

자, 이번에는 이제 보스 몹에 대한 클래스를 만들어 봅시다. Entities폴더에서 우클릭하여 [추가] - [클래스]를 선택합니다. Vampire.cs 를 입력하고 다음과 같이 클래스를 작성합니다. using ConsoleExample.Game01.Abstracts; namespace ConsoleExample.Game01.Entities { internal class Vampire : Monster, IMonsterAction { public Vampire() { this.Name = "뱀파이어"; this.IsDead = false; this.Health = 400; this.Attack = 20; this.Guard = 5; } public string GetName() { return this.N..

반응형