분류 전체보기 73

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..

개발이야기 2024.01.17

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..

개발이야기 2024.01.17

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

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

개발이야기 2024.01.17

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

지금까지 학습한 내용을 온라인에서 공유드립니다. 소스코드 공유 사이트인 깃헙(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 해당 웹사이트에 접속하면 우선적으로 회원가입부터 진행해 주세요. 깃허브 ..

개발이야기 2024.01.16

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..

개발이야기 2024.01.15

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..

개발이야기 2024.01.15

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

오늘은 몹들을 등장시키기 위한 작업을 할 겁니다. 제 구상은 이렇습니다. 일전에 배운 배열에 몹들을 랜덤하게 담을 겁니다. 총 20마리의 몹을 배열에 담아서 배열에 있는 모든 몹을 물리치면 보스를 만나고, 보스를 이기면 끝나는 형식이 될 겁니다. 그런데 각기 다른 몹들을 배열안에 일관되게 담고, 동일한 행위를 호출하기 위해서는 이들에게 동일한 기능이 있다는 것을 프로그램에게 알려줘야 합니다. 우리는 그걸 인터페이스(interface)라고 부릅니다. 인터페이스는 규칙이에요! 예를 들어, 교실에서 학생들은 선생님이 정한 규칙을 따라야 해요. 그 규칙에는 일어서기, 문을 열고 닫기, 친구에게 인사하기 등이 있을 거에요. 이렇게 학생들이 지켜야 하는 규칙이 바로 '인터페이스'라고 생각할 수 있어요. 컴퓨터 프로..

개발이야기 2024.01.15

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

우리는 기초연습때 콘솔로 이름을 입력 받는 것과 프로그램의 흐름을 함수로 나누는 것을 연습해 보았습니다. 아직 잊은 거 아니겠지요? 이제 그 내용을 복습해 보도록 하겠습니다. 프로그램의 진입점에서 함수를 호출해서 게임이 진행되게 할 겁니다. 먼저 Program 함수 내에 나 자신을 선언해 줘야 하므로, User 클래스를 player란 이름으로 선언해 줍니다. static User player; static void Main(string[] args) { Init(); player.Name = GetUserName(); Hello(player.Name); } 기존에 만들었던 함수와 동일한 구조로 작성하되, 달라진 부분은 User 라는 클래스를 player란 이름의 인스턴스로 만들어서 사용한다는 점만 달라졌..

개발이야기 2024.01.15

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

지난 시간에 우린 몹(Monster)에게 공격력과 방어력이라는 공통 항목을 추가해 주는 과정을 통해 상속에 대해 이야기 했습니다. 그런데 공격력과 방어력은 사용자에게도 있어야 겠죠? 그러니 우리 User.cs 에도 동일하게 공격력과 방어력을 넣어줍시다. internal class User { public bool IsDead { get; set; } public string Name { get; set; } public int Health { get; set; } public int Attack { get; set; } public int Guard { get; set; } public User() { this.IsDead = false; this.Name = string.Empty; this.Healt..

개발이야기 2024.01.15
반응형