분류 전체보기
-
golang 에러 Fatal error: newproc: function arguments too large for new goroutineGolang 2021. 11. 14. 22:24
이 에러는 goroutine 사용 시 인자로 넘겨주는 argument값이 너무 커서 발생하는 에러이다. 값을 넘기는 대신 값의 주소값을 넘기면 해결할 수 있다. 예를들어 a := []string{"1","1",1","1"......} //아주 큰 배열 go func(a []string){ fmt.Println(a) }(a) 와 같은 식으로 사용하면 위 에러가 발생 할 것이다. 이를 해결하기 위해서는 아래와 같이 go func의 args를 주소값을 넘기도록 변경하면 된다. a := []string{"1","1",1","1"......} //아주 큰 배열 go func(a *[]string){ //주소값으로 변경 fmt.Println(a) }(&a)
-
Nestjs GraphQL 시작nestjs 2021. 8. 22. 21:06
nestjs cli를 install한다. npm i -g @nestjs/cli graphQL을 위한 install을 한다. npm i @nestjs/graphql graphql apollo-server-express@2.x.x Nest Project를 생성한다. nest new nest-runner-server 예시로 User 관리를 위한 resource를 generate한다. nest g resource 필요한 module을 install한다. npm i ts-morph @apollo/gateway npm run start로 동작을 확인한다. 이제 graphQL schema와 Resolver, service를 구현해야 한다.
-
Apollo Studio 설정하기etc 2021. 5. 30. 23:43
https://studio.apollographql.com/ 에서 가입 후 아래의 화면에서 Create your first graph를 클릭한다. 만약 localhost로 작업중이라면 띄워놓은 playground url을 end point 위치에 작용해서 제대로 받아지는지 확인한다. 만약 remote server에 붙이려면 deployed를 선택한 후 next를 클릭한다. Key 값을 복사한다. https://www.apollographql.com/docs/rover/configuring/ 를 보고 따라한다. curl -sSL https://rover.apollo.dev/nix/latest | sh 명령어로 ubuntu 에서 rover를 설치했다면 /root/.rover/bin/rover config a..
-
nestjs 문서 따라하기 #5 (Controller-4)nestjs 2021. 5. 25. 00:39
Asynchronicity Javascript는 비동기적으로 동작하기 때문에 동기적 동작이 필요할 경우 async / await를 사용하여야 한다. Promise를 return하기 Observable return하기 Promise vs Observable Promise async 작업이 끝나거나 에러발생을 핸들링하는 단일 이벤트 핸들러이다. 이벤트가 무조건 실행된다. 즉시 실행된다. Observable stream같이 0~n개의 이벤트를 핸들링 할 수 있다. Promise와 달리 필요하지 않은 이벤트를 취소할 수 있다. subscribe시에만 실행한다. array와 비슷한 operator를 지원한다.(map, reduce, forEach) 참조 https://rxjs-dev.firebaseapp.com/..
-
nestjs 문서 따라하기 #4 (Controller-3)nestjs 2021. 5. 22. 16:13
Resources HTTP 메소드 사용하기 decorator ( @Get(), @Post(), @Put(), @Delete(), @Patch(), @Options(), @Head(), @All() ) 사용방법@All decorator의 경우 어떤 method로 요청이 와도 다 받는다. Route wildcards route 경로에 regex 처럼 사용할 수 있는 문자는 ?, +, *, () 이다. - , . 은 string 그 자체로 사용된다. 아래는 예시이다. Status Code @nestjs/common 패키지에서 import한 HttpCode decorator를 사용해서 status code를 변경할 수 있다. Headers 커스텀 응답헤더는 @Header() decorator로 사용할 수 있다...
-
nestjs 문서 따라하기 #3 (Controller-2)nestjs 2021. 5. 16. 10:45
Router Controller의 목적은 애플리케이션에 대한 특정 요청을 수신하는 것이다. Routing 메커니즘은 어떤 컨트롤러가 어떤 요청을 수신하는지 제어한다. controller가 받은 요청은 api에 따라 Controller의 method로 라우팅된다. 여기서 return 이 status도 없이 string만 전달하는게 이상하게 느껴질 수 있다. 기존 express를 사용할 때는 함수에서 인자로 req, res를 받은 뒤 res.status(400).json({err: ‘Incorrect id’});와 같이 status를 설정하고 json형식으로 응답을 전달해야 한다. 하지만 nest는 아래와 같다. 참조: Request Object nest에서 request Object를 쓰기 위해서는 @Re..
-
nestjs 문서 따라하기 #2 (Controller-1)nestjs 2021. 5. 6. 07:02
Controller란? 쉽게 말해서 Client Side에서의 요청을 받는 layer이다. (Route의 역할을 한다.) HTTP, GraphQL, NATS, ...etc 등의 interface를 통해 Client Side에서 요청이 오면 해당 요청을 받고 Client에게 response를 주는 Layer이다. Logic은 들어가지 않고 요청에 맞게 logic이 구현된 service를 호출해준다. (service는 다음 장에서 알아보겠다.) 여기서 Nestjs는 request와 연관된 controller를 연결시켜주는 역할을 하는 Decorator (클래스들을 요구되는 metadata와 연결해 주고 Nest에게 routing map을 가능하게 한다.)를 사용한다. 우리는 이 Controller Decor..
-
nestjs 문서 따라하기 #1 (First Step)nestjs 2021. 5. 6. 06:43
Nestjs는 "nest new $project_name" command를 이용하여 시작 시 자동으로 file들이 생성되고 아래와 같다. app.controller.ts 하나의 route가 있는 기본 controller app.controller.spec.ts controller unit test app.module.ts 이 app의 기본 모듈 app.service.ts 하나의 method를 갖는 service main.ts nestjs의 시작 file nestjs는 기본적으로 express를 기반으로 사용하는데 fastify로 변경할 수 있다. (이는 기본 문서를 다 한 후에 알아보도록 하겠다.) ※우리는 nodejs에서 req body로 json을 받기 위해 body-parser를 설정해야만 했다. ..