Project (13) 썸네일형 리스트형 공식문서에서 EventLoop의 MacroQueue를 Event Loop란?Node.js가 논 블로킹 I/O 작업을 수행할 수 있게 도와주는 기능입니다. 어떻게 도와주냐면, 이벤트 루프가 libuv에 작업을 넘기면서 논 블로킹을 하게끔 도와줍니다. 그래서 자바스크립트가 싱글 스레드로 동작함에도 불구하고 논 블로킹 I/O 작업을 수행할 수 있게 합니다. 이러한 I/O 작업이 완료되면 libuv은 Node.js에 이벤트를 전달하게되고, 콜백을 Polling Queue에 추가해 실행할 수 있게 합니다.공식 홈페이지에서는 libuv라고 적혀있지 않고 커널(Kernel)이라고 적혀있습니다. libuv가 좀 더 맞다고 생각해 자체적으로 변환했습니다.Event Loop는 단계를 순차적으로 이동한다. 모든 단계를 한 번 도는 것을 Tick 이라고 한다.먼저 각 단계에 관.. Index.. Index.. Index.. 정말 많이 들어봤습니다. 인덱스(Index). 하지만 실제 프로젝트에서 인덱스를 만들어본 적은 없습니다. 물론 PK를 설정하면 자동으로 인덱스가 들어가는 경우를 제외하고요. 실제로 인덱스를 이용해 데이터를 조회할 만큼 데이터가 많이 존재하지 않은 부분만 개발을 했었기 때문입니다. 그렇다고 중요한 사실을 모르고 지나가면 안될 것 같아서 공부 겸 내가 아는 지식이 맞는지 확일할 겸 인덱스(Index)에 관해서 작성해보도록 하겠습니다.올바르지 못한 내용이 존재할 수 있습니다. 틀린 점이 보인다면 댓글로 작성 부탁드리겠습니다."인덱스(Index)란 무엇일까?"인덱스(index)라는 것은 특정 컬럼(Column)의 값을 빠르게 검색할 수 있도록 도와주는 자료구조입니다. 즉, 책의 목차처럼 데이터가 저장된 위치를 .. [번역] Pipes란 무엇인가? Pipes에 관한 내용을 번역과 동시에 제 생각을 넣은 글입니다. 더 정확한 사실을 알고 싶다면 해당 링크를 방문해 주세요. 번역 시작하겠습니다.파이프(Pipes)는 @Injectable 데코레이터가 달린 클래스임과 동시에 PipeTransform 인터페이스로 구현이 되어있습니다. 이제부터 파이프가 어떻게 진행되는지에 대한 내용을 얘기해 보겠습니다. 파이트는 두 가지의 전형적인 유스 케이스를 갖고 있습니다.첫 번째, Transformation(변환)입니다. 이것은 요구되는 형태(form)에 맞춘 입력 데이터를 전환합니다. 예를 들어서, string을 정수로 변환한다던지에 관한 것을 의미합니다.두 번째, Validation(검증)입니다. 이것은 입력 데이터가 활용 가능한 데이터인지 평가합니다. 그리고 유효.. [번역] Passport란 무엇인가? passport에 관한 내용을 번역과 동시에 제 생각을 넣은 글입니다. 더 정확한 사실을 알고 싶다면 해당 링크를 방문해 주세요. 번역 시작하겠습니다.passport는 node.js에서 인증을 처리하기 위한 미들웨어입니다. 이 미들웨어는 다양한 전략(strategy)를 이용해 인증을 구현할 수 있습니다. 그 중 passport-local은 사용자가 로컬 데이터베이스에 저장된 username, password를 사용해 인증을 처리하는 전략입니다.passport-local의 전략은 기본적으로 LocalStrategy 클래스를 확장해 생성됩니다. 이 클래스의 생성자는 기본 설정으로 동작하게 되어있지만, 옵션 객체를 전달해 동작 방식을 커스터마이즈할 수 있습니다. 예를 들어서 username이 아닌 email을.. [번역] Guard란 무엇인가? Guard에 관한 내용을 번역과 동시에 제 생각을 넣은 글입니다. 더 정확한 사실을 알고 싶다면 해당 링크를 방문해 주세요. 번역 시작하겠습니다. Guard란? What is Guard?특정 라우트나 컨트롤러 메서드에 대한 접근을 제어하는 역할을 합니다. 주로 사용자의 인증 및 권한 검사를 위해 사용되며, 요청이 해당 라우트로 진행될 수 있는지 결정합니다.Guard는 @Injectable 데코레이터로 이루어진 클래스입니다. 그리고 canActivate 인터페이스로 구현되어 있습니다. Injectable로 구성되어 있다는 것은 주입할 수 있는 클래스라는 것을 의미합니다. 그리고 CanActivate 인터페이스를 구현한다는 의미는 해당 클래스가 Guard로 사용되다는 것을 의미합니다.더보기CanActivat.. [번역] ManyToMany Relations ManyToMany Relations에 관한 내용을 번역과 동시에 제 생각을 넣은 글입니다. 더 정확한 사실을 알고 싶다면 해당 링크를 방문해 주세요. 번역 시작하겠습니다.A엔티티와 B엔티티를 갖고 있는 상태로 가정하겠습니다.Many-to-many는 A 엔티티가 B의 여러 인스턴스를 갖고 있고, B는 A의 여러 인스턴스를 갖고 있는 관계를 의미하는데요. 우리는 Question과 Categoy 엔티티로 예시를 들어볼 겁니다. A question은 여러 카테고리를 가질 수 있고, 각 카테고리는 여러 question들을 가질 수 있습니다. 아래는 Question와 Category 엔티티입니다.Category Entityimport { Entity, PrimaryGeneratedColumn, Column } f.. [번역] OneToMany / ManyToOne Relations OneToMany / ManyToOne Relations에 관한 내용을 번역과 동시에 제 생각을 넣은 글입니다. 더 정확한 사실을 알고 싶다면 해당 링크를 방문해 주세요. 번역 시작하겠습니다.A엔티티와 B엔티티를 갖고 있는 상태로 가정하겠습니다.Many-to-one과 One-to-many는 A엔티티는 B의 여러 인스턴스를 갖고 있는 관계입니다. 반대로 B는 A 엔티티의 하나의 인스턴스를 갖고 있습니다. 즉, A는 B의 여러 인스턴스 그리고 B는 오직 하나의 A 인스턴스를 갖고 있는 것을 의미합니다.이제 늘 그렇듯 예제를 살펴보도록 하겠습니다. 예시는 A는 User Entity, B는 Photo Entity로 정의하고 시작하겠습니다. 다시 말씀드리자면, 위의 내용을 토대로 User는 여러개의 Photo를 .. [번역] @OneToOne Relations OneToOne Relations에 관한 내용을 번역과 동시에 제 생각을 넣은 글입니다. 더 정확한 사실을 알고 싶다면 해당 링크를 방문해 주세요. 번역 시작하겠습니다.일단 현재 A Entity가 있고 B Entity가 있다고 가정하고 시작해보겠습니다.One-to-one에서 A는 B의 딱 한 개의 인스턴스를 갖고 있습니다. B 또한 마찬가지로 딱 한개의 A의 인스턴스를 갖고 있는 관계를 의미합니다. 이제 A라고 부르지말고 A는 User Entity이고, B는 Profile Entity라고 정의하고 시작해 보겠습니다. User는 한개의 Profile을 갖고 있고, Profile 또한 오직 한 명의 User를 갖고 있다. import { Entity, PrimaryGeneratedColumn, Column .. 이전 1 2 다음