분류 전체보기

분류 전체보기

    Pipe

    파이프는 @Injectable () 데코레이터로 주석이 달린 클래스이다. 파이프는 data transformation과 data validation을 위해서 사용된다. 파이프는 컨트롤러 경로 처리기에 의해 처리되는 인수에 대해 작동한다. Nest는 메소드가 호출되기 직전에 파이프를 삽입하고 파이프는 메소드로 향하는 인수를 수신하고 이에 대해 작동한다. Data Transformation? 입력 데이터를 원하는 형식으로 변환 (예 : 문자열에서 정수로) 만약 숫자를 받길 원하는데 문자열 형식으로 온다면 파이프에서 자동으로 숫자로 바 꿔줍니다. ex) string '7' -> integer 7 Data validation? 입력 데이터를 평가하고 유효한 경우 변경되지 않은 상태로 전달하면됩니다. 그렇지 않으..

    Controller 생성하기

    nest g controller [컨트롤러 이름] --no-spec --no-spec은 테스트 소스 코드를 생성하지 않겠다는 옵션이다.

    NestJS 로직 흐름

    기본 흐름 클라이언트에서 요청을 보내면 진입점(Module) -> Controller -> Service 순서로 요청이 전달되고 Service에서 요청을 처리하고 Controller에서 응답을 클라이언트에 반환한다. Controller 안에는 Handler가 있다. 핸들러는 @Get, @Post, @Delete 등과 같은 데코레이터로 장식 된 컨트롤러 클래스 내의 단순한 메서드이다.

    NestJS 기본 구조

    eslintrc.js 파일 개발자들이 특정 규칙을 가지고 코드를 깔끔하게 짤 수 있도록 도와주는 라이브러리. 타입스크립트를 쓰는 가이드라인 제시, 문법에 오류가 나면 알려주는 역할 등등. prettierrc 파일 주로 코드형식을 맞추는데 사용한다. eslintrc 보다 작은 따옴표를 사용할지 큰 따옴표를 사용할지, indent 값을 2로 줄지 4로 줄지 등의 코드의 포매터 역할을 더 해준다. nest-cli.json 파일 nest 프로젝트를 위한 특정한 설정을 해줄 수 있는 프로젝트 파일 { "collection": "@nestjs/schematics", "sourceRoot": "src" } 위 코드는 src 폴더 안에 프로그램 로직 코드가 들어간다는 것을 말한다. tsconfig.json 파일 어떻게..

    NestJS 설치

    NestJS 클라이언트 설치 NestJS는 NestJS 클라이언(CLI)를 설치하여 시작한다. 다음 명령어로 설치한다. npm i -g @nestjs/cli npm, yarn 둘 중 어떤 것을 사용하더라도 상관없다. NestJS 프로젝트 시작하기 다음 명령어로 시작한다. nest new [project-name] 명령어를 실행하고 나면 기본적인 구조가 갖춰진 프로젝트가 만들어진다. nest new ./ 이 명령어로 현재 폴더 내에 기본 구조를 생성할 수도 있다.

    node.js의 동작 원리

    node.js란? node.js는 언어나 프레임워크가 아니다. node.js는 Chrome V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임이다. 즉 자바스크립트를 브라우저 바깥에서도 실행할 수 있도록 해주는 자바스크립트 실행기이다. 이벤트 기반 방식 node.js는 이벤트 기반 방식으로 동작한다. 이벤트가 발생하면 이벤트 리스너에 등록해둔 콜백함수를 호출한다. 여러 이벤트가 동시에 발생한다면 어떤 순서로 콜백함수를 실행할지 이벤트 루프가 판단한다. node.js 동작구조 node.js는 내부적으로 이벤트 루프, 백그라운드, 태스크 큐를 통해 동작한다. 브라우저에서 자바스크립트도 같은 동작방식으로 작동한다. 이벤트 루프: 이벤트 발생 시 호출할 콜백 함수들을 관리하고, 호출된 콜백 함수의 실행 순서를..

    Http 버전별 차이점

    Http란? 웹상에서 클라이언트와 서버 간의 통신을 위한 프로토콜이다. 신뢰성 있는 연결을 위해 Http 0.9~2까지는 TCP를 기반으로 한다. 클라이언트에서 요청정보, 파일, 버전이 포함된 http 요청을 하면 서버는 응답으로 요청을 정상적으로 처리했다는 "OK"라는 정보와 요청한 html파일을 보낸다. Http/0.9 메소드가 get 밖에는 없다. HTML 파일 자체를 보내주는 기능만 한다. GET /mypage.html A very simple HTML page Http/1.0 (Connection 1 Establishment - TCP Three-Way Handshake) Connected to xxx.xxx.xxx.xxx (Request) GET /my-page.html HTTP/1.0 Use..

    네이버 클라우드 SENS(Simple & Easy Notification Service) api와 node.js 연동하여 문자 서비스 이용하기

    각 api 코드에 대한 자세한 내용은 다음 주소를 참고. https://api.ncloud-docs.com/docs/ai-application-service-sens-smsv2 뼈대 코드 function send_message(phone) { var user_phone_number = phone;//수신 전화번호 기입 var resultCode = 404; const date = Date.now().toString(); const uri = ; //서비스 ID const secretKey = ;// Secret Key const accessKey = ;//Access Key const method = "POST"; const space = " "; const newLine = "\n"; const url..

    jenkins CI CD 구축 디버깅

    첫번째 Permission denied 오류 git에 권한 없이 커밋을 했다. git ls-tree HEAD로 권한 확인한 다음 권한을 나타내는 숫자가 644로 돼있는 파일들의 권한을 실행 가능하도록 바꿔준다. git update-index --chmod=+x [파일이름] 실행 권한 부여 그 후 커밋하고 푸시해준다. 두번째 Jest Permission denied 오류 깃에 모듈파일들을 함께 올려 Jest 모듈에서 충돌이 난듯하다. 세번째 제스트 테스트 코드가 실행이 종료되지 않아 젠킨스에서 테스트 코드가 계속 돌아갔다. "scripts": { "test": "jest --detectOpenHandles --forceExit" }, 위처럼 프로젝트의 package.json 스크립트 부분에 옵션을 추가한다..

    면접 준비

    뮤텍스 한 쓰레드, 프로세스에 의해 소유될 수 있는 Key🔑를 기반으로 한 상호배제기법 세마포어 Signaling mechanism. 현재 공유자원에 접근할 수 있는 쓰레드, 프로세스의 수를 나타내는 값을 두어 상호배제를 달성하는 기법 참고: https://worthpreading.tistory.com/90 뮤텍스(Mutex)와 세마포어(Semaphore)의 차이 이 글은 Medium에 개시된 글입니다. Medium에서 보시면 좀 더 유쾌한 환경에서 글을 보실 수 있습니다. 뮤텍스(Mutex)와 세마포어(Semaphore)의 차이 Toilet problem 동시성 프로그래밍의 가장 큰 숙제는 ‘공 worthpreading.tistory.com 데이터베이스 인덱스 인덱스란 추가적인 쓰기 작업과 저장 공간을..