전체 글

카테고리 없음

Type ORM 이상한 점

지연로딩을 하는데 어느 경우에만 즉시로 가져오고 싶은 컬럼이 존재했다. 그런데 이것을 아래와 같이 where: { member, }, relations: ['memberRole'], }); lazy: true 하면은 같이 가져오지 못해 Promise를 받게 된다. 그런데 아래조합으로 하면은 즉시 가져오게 된다. 도대체 왜 그런지 살펴봐야 겠다. eager: false where: { member, }, relations: ['memberRole'], }); 찾아보니 lazy는 항상 Promise를 반환하도록 되어있는거 같다. GPT에도 물어보니 relations와 eager로만 조합되어있지 lazy랑은 조합이 없는거 같다. nest/typeorm과 typeorm의 차이점이 무엇인가? nest/typeor..

카테고리 없음

사내 CI/CD 작업후 알게된점

이번 글은 사내 CI/CD작업을 하면서 알게 된 점을 적었습니다. 제가 볼려고 알게 된 점을 정리한 글입니다. EC2 인스턴스 접속할 때 홈 디렉토리가 계정별로 다른이유 알게된 이유는 젠킨스로 작업을 하면서 파일 실행을 내부에서 시켜야하는 경우가 존재했습니다. 그런데 이것을 못읽게 되면서 발생하는 문제였습니다. 파일을 찾을 수 없는것입니다. 그래서 찾아보니 Linux시스템에서 홈디렉터리 설정되어있지않는 유저는 ssh접속시 인자없으면 홈 디렉토리는 /home/ec2-user가 됩니다. 왜냐하면 일반적으로 사용자 계정이 생성될 때, 해당 계정의 홈 디렉토리는 /home/계정이름 과 같이 설정이 되기때문입니다. 따라서 자신의 홈 디렉토리로 이동하게 됩니다. 항상 파일위치만 보다가 홈 디렉토리를 확인안하게 되었..

카테고리 없음

Nest Docker 파일

이번글은 Nest JS로 배포를 하면서 겪었던 경험을 적은 글입니다. 단순 기록을 위한 글입니다. Node를 통해 배포를 처음보아서 적었습니다. DockerFile Nest를 사용하면서 DockerFile에서 초기서버 이미지이다. alpine으로 설정하게 되면 bcrypt가 동작안하게 되는경우가있다. 이런 현상은 왜 일어나느냐 저희의 개발환경컴퓨터와 alpine의 내부 구조가 다르기 때문이다. alpine은 가볍게 만들어져서 어느게 없는경우가있다. 그래서 bcrypt경우는 따로 rebuild를 해줘야한다. rebuild로 bcrpyt 패키지를 alpine컴퓨터에 맞춘것이다. install package.json을 통해서 node_modules를 생성하는 명령어이다. build Nest는 TS기반이다. 이..

카테고리 없음

Bastion Host - Mac ssh 터널링 사용법

이번글은 터널링 하는방법을 잊지않기위해 단순 코드 저장입니다. Bastion Host Bastion은 수호자, 보루 요새라는 사전적 의미를 가집니다. 구축한 인프라 또는 네트워크의 입구에서 허용된 사람만 출입할 수 있는 역할을 수행하는 녀석입니다. 즉 맨 입구에서 게이트역할을 하는 서버를 Bastion호스트 또는 Bastion서버 라고 부릅니다. 왜 사용하지? AWS 리소스 구성 후 관리자가 VPC 외부에서 Private Subnet에 접근해야 하는 경우 직접 접근할 수 있는 방법이 없는데, 이 때 Bastion Host를 거쳐서 Private Subnet에 접근할 수 있습니다. 저의 문제상황 로컬에서 Dev 디비는 접근이 가능했지만 QA환경에서는 접근을 못하게되어 DB Connection생겼습니다. 왜..

카테고리 없음

명령형 프로그래밍과 선언형 프로그래밍

이번 글은 단순히 제 생각을 정리한 글입니다. 명령형 프로그래밍 명령형 프로그램은 컴퓨터가 수행할 명령들을 순서대로 써 놓은 것이라고 합니다. 상세하게 어떻게 해서 어떻게 해 라는 과정들이 적혀 있습니다. public class ImperativeExample { public static void main(String[] args) { int sum = 0; for (int i = 1; i acc + curr, 0); console.log(`Sum: ${sum}`); 참고자료 : https://dmdwn3979.tistory.com/14

카테고리 없음

타입스크립트는 어떻게 정적펙토리 메서드를 지원하지?

안녕하세요 이번글은 TS에서 정적펙토리 메서드를 어떤식으로 사용하는지 스스로 추측해본 글입니다. 자세한 정적펙토리 메서드와 빌더패턴에 대한 자세한 내용은 빠졌습니다. 단지 사용하는 Best Practice에 대해서 이야기 합니다. 들어가며 일단 자바진영에서는 이펙티브 자바책에서도 정적펙토리 메서드를 권장합니다. 정적 펙토리 메서드란 무엇인가? 왜 사용하는가? 정적 펙터리 장점 1. 의미있는 이름을 부여할 수 있습니다 : 생성자 같은경우는 이름 그대로 가지기 때문입니다. 반면 정적 펙토리 메서드는 의미있는 이름을 가질 수 있습니다. 2. 생성자 로직을 깔끔하게 유지할 수 있습니다 : 만약 모든 객체가 생성되는 시간을 기록한다면 이 로직을 생성자에 넣으면 단일 책임 원칙을 위반하게 된다는 것입니다 등등 다양..

카테고리 없음

AWS 빠른 학습

인프라를 다루어야하는 일이 생겨서 빠르게 AWS용어를 정리하고자 글을 적었습니다. 내용이 다소 빈약할 수 있습니다. 가용영역(AZ) 1개 이상의 데이터 센터를 논리적 그룹으로 묶어 놓은 인프라 입니다. 여러개를 묶은 데이터 센터입니다. 리전(Region) 3개 이상의 가용영엯을 논리적으로 묶음 입니다. 데이터 센터를 그룹한걸 또 그룹한 것입니다 ELB를 사용할 때 왜 AZ를 2개 선택해야하는가? 데이터센터 하나만 있을 경우 센터에 장애가 나면 전체 시스템이 마비가 됩니다 그래서 최소한 2개이상의 가용역을 사용하게 되면 각각의 가용영역에 ㅇ니스턴스를 두고 로드밸런서로 분산하면 한쪽이 무너지더라도 전체시스템이 붕괴되진 않습니다. systemctl enable nginx enable은 껐다 켜지더라도 자동으로..

카테고리 없음

node - 1주차 스터디 공부자료

Promise all Promise.all() 은 여러 개의 프로미스(Promise) 를 비동기적으로 실행한다. 따라서 여러 개의 Promise 처리를 비동기적으로 실행하고자 할 때, 사용할 수 있다. await aFuncetion(); await bFuncetion(); await cFuncetion(); 다음과 같이 실행순서에 상관없는 경우 비동기로 실행할 때 Promise.all을 사용하면 성능이 더 올라간다. 위에같은 코드에서 Promise.all을 사용하지 않는다면 실행시간은 (a+b+c) 순서대로 실행되어 실행시간이 정해지지만. Promisea.all을 사용한다면 (a,b,c)중에서 가장 오래걸리는 함수의 시간이 실행시간으로 됩니다 객체할당 자바와 다르게 자바스크립트에서는 타입스크립트를 사용..

카테고리 없음

AWS - 데이터베이스 복구 (특정시점)

이글은 AWS를 직접실습해본 경험을 기록하기 위한 글입니다. 데이터베이스 복구방법 1. RDS - 데이터베이스 로 이동한다 2. 특정시점으로 복구하기로 하여 최근이나 사용자 지정날짜를 정한다 3. 그리고 나머지 옵션을 한다 사내에서는 업데이트나 복구시간을 정해둔 지침이있는데 그걸로 설정한다 4. 로그 내보기도 중요하다 cloud watch로 보내진다 주로 감사로그를 제외하고 해줄거같다 5. 그리고 제일 중요한 삭제방지 설정해준다 다음에는 스냅샷이나 AWS Backup을 이용한 복구한 내용을 추가해보겠습니다

카테고리 없음

Node - export에 대해서 알아보자

export하면 다른 파일에서 사용할 수 있는데 여러개를 한다면 어떻게 해야하는지 궁금했다 GPT가 이랬다 모듈에서 여러 개의 모델을 export할 때, 일반적으로는 객체로 감싸서 export 하는 것이 일반적입니다. 이렇게 하면 다른 파일에서 해당 객체의 속성을 사용하여 필요한 모델에 접근할 수 있습니다. // person-model.js const mongoose = require('mongoose'); const PersonSchema = new mongoose.Schema({ name: String, age: Number, }); const AnimalSchema = new mongoose.Schema({ species: String, color: String, }); const Person = ..

cwangg897
wang's tech blog