본문 바로가기

전체 글

(117)
1주차 노트워킹 Q. 나에게 성공이란 무엇인가요? 그리고 개인적으로 무엇에 의해 동기부여가 되시나요? 단기적인 성공은 월급을 받지 않는 삶입니다. 월급을 받기 위해서는 회사에서 요구하는 과제를 진행해야 하는데 실제로 원하는 아닌 방향에도 납득을 하고 진행해야 할 때 이 삶이 자본가의 삶은 아닌게 확실하다를 느꼈습니다. 개인적으로 주체적으로 살 때 동기부여가 되는데 이 보다 더 동기부여가 될 때에는 제 능력을 최대한 발휘해서 남을 도울 때 확실한 동기부여가 된다고 생각합니다. Q. {창}을 통해 가장 얻고 싶은 것은 무엇인가요? 아이디어만 쌓아 놓는다고 실현이 되지 않습니다. 그 실현을 앞당길 수 있는 방법은 잘 아는 사람에게 도움을 받는 방법이 있다고 생각합니다. 실현하기 까지 단계를 줄일 수 있는 노하우를 알고 싶습니..
Hint로 쿼리 튜닝하기 Hint를 왜 써야 할까? 오라클이 항상 최적의 실행 경로를 만들어 내기는 불가능하기 때문에 직접 최적의 실행 경로를 작성하여 SQL 문에서 인덱스 설정이 Optimizer에 의존한 실행 계획보다 효율적인 실행 계획을 구사할 수 있기 떄문이다. 1. OPTIMIZER_MODE CHOOSE : Optimizer가 CBO와 RBO 두 가지가 모두 선택 가능할 경우에 사용 ALL_ROWS : CBO 환경경에서 전체적인 처리, 즉 Batch 환경에서 주로 사용 FIRST_ROWS : CBO 환경에서 빠른 응답시간을 얻고자 할 때, 즉 ON-LINE 환경에서 주로 사용 Rule : SQL에 대한 실행 계획이 여러 개 있을 때 가장 낮은 순위의 실행계획을 사용 OPTIMIZER_MODE 비교 RULE Analyze..
Uber Eats # 20 Metadata로 사용자 분기 처리하기 @UseGuards(AuthGuard)를 사용해서 User가 있을 때에만 접근가능하도록 해주었다. 이번에는 Metadata를 사용해보자. 여기서 Metadata를 사용하는 이유는 사용자의 role에 따라 접근하도록 하기 위함이다. @SetMetadata를 사용하는데 여기에는 2개의 인자를 가질 수 있다. 하나는 key이고 다른 하나는 value이다. @SetMetadata("role", UserRole.Owner) 핵심은 모든 resolver에서 metadata를 사용하는데 있다. 그러기 위해서 auth 아래에 auth.decorator.ts를 만들어서 사용한다. 함수형을 만들고 여기에 전달하는 인자는 UserRole을 enum 형태로 export 하여 만든다. type AllowedRoles = key..
Uber Eats # 19 Mail module 만들기 1. 이메일 모듈 만들어서 유저 인증하기 Mailgun 서비스 이용하기 fake number을 사용해도 된다. Sending menu에서 API를 선택하면 아래 node.js mailgun이 있지만 수동으로 만들기 위해서 cURL을 사용한다. 카드등록 시 5,000 번 메일 이용이 가능하지만 등록을 안 했을 시는 셀프 인증을 통해서 진행한다. 셀프 인증은 오른쪽 상단 Authorized Recipients 아래 메일을 입력하고 해당 메일에서 I Agree를 클릭해서 진행하면 된다. 수동으로 만들고 싶지 않다면 nestjs에서 제공하는 nodemailer를 사용한다. 그게 아니라면 API를 이용한 Email module을 만들어보자. nest g mo mail로 모듈을 생성한다. 모듈 생성 후 mail m..
Uber Eats # 18 User Profile sync와 async의 차이를 알아야 userProfile 쿼리 작성 시 생기는 에러를 해결할 수 있다. @UseGuards(AuthGuard) @Query(returns => UserProfileOutput) userProfile(@Args() userProfileInput: UserProfileInput): Promise { try{ const user = this.usersService.findById(userProfileInput.userId); } catch (e) { return { error: 'User Not Found', ok: false, }; } } // 에러 src/users/users.resolver.ts:60:15 - error TS2322: Type '{ error: strin..
Uber Eats # 17 AuthGuard NestJS Guard Documentation | NestJS - A progressive Node.js framework Nest is a framework for building efficient, scalable Node.js server-side applications. It uses progressive JavaScript, is built with TypeScript and combines elements of OOP (Object Oriented Progamming), FP (Functional Programming), and FRP (Functional Reac docs.nestjs.com nest g mo auth로 인증 모듈을 만든다. Guard는 HTTP Request를 다음 단계로..
Uber Eats # 16 User Authentication nestjs/passport 적용하여 passport-jwt와 nestjs/jwt 활용하기 전에 수작업으로 인증하기 Token generation 작동하기 모듈로 적용하기 Token generation 작동하기 json web token 설치하기 npm i jsonwebtoken 여기에는 Typescript 파일이 없다. 수동으로 찾아서 설치한다. npm i @types/jsonwebtoken --only-dev 사용하기 jwt.sign에 token 데이터, privatekey, algorithm을 적어주면 된다. privatekey는 process.env에서 가져온다. 이를 가져오기 위해서 app.module.ts를 수정한다. ConfigModule.forRoot({ isGlobal: true, env..
Uber Eats # 15 User Resolver and Service, InputType과 ObjectType 비교 Service는 repository가 필요하다. 그래서 UsersModule에 imports에 입력한다. import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { User } from './entities/user.entity'; import { UsesrsResolver } from './users.resolver'; import { UsersService } from './users.service'; @Module({ imports:[TypeOrmModule.forFeature([User])], providers: [UsesrsResolver, UsersService] }) expo..