서론8~9월동안 원티드 프리온보딩 인턴쉽 챌린지를 진행하며 좋은 인연을 맺게 되었다. 팀으로 활동하는 과정은 끝났지만, 데일리 스크럼을 통해 매일 할 일을 정리하며 취업 활동을 같이 이어나가기로 하였다. 기존에는 팀 공용으로 쓰는 노션 페이지의 캘린더 뷰 데이터베이스에 팀원들의 리마인드를 위해 직접 블록을 생성해오고 있었다. 과정을 진행하며 공휴일을 제외한 평일 오전 10시 30분에 정기적으로 진행하기로 정해졌으므로 자동화 방법을 찾고있었다. 매번 페이지 생성 하는 것은 너무 번거롭기 때문에... 해결 방법들1. Notion 페이지 반복 기능 이용 데이터베이스의 템플릿에 ... 버튼을 누르면 Repeat 설정을 할 수 있다. 여기서 weekly 를 선택하면 요일 지정은 가능하지만... 더 섬세한..
서론 OAuth2.0 을 이용하여 로그인을 개발하던 중.. 저는 Nest 가 먹기 좋게 감싸놓은 @nestjs/passport 패키지와 @UseGuard(AuthGuard(`${strategy명}`)) 을 이용하여 편안하게 개발하고 있었습니다. 그 때 동료가 저에게 로그인 프롬프트를 띄우는 경로와 콜백 경로가 같아도 인증이 잘 작동한다는 놀라운 사실을 알려주고 말았습니다. 같은 Guard를 사용하는데도 다른 동작을 한다니?? 하나는 외부 로그인 프롬프트를 띄워야하고 하나는 인증된 정보를 받아 처리해야하니 당연히 경로가 달라야겠지 하고 별 생각없이 '/login' 과 '/login/callback' 이라는 두 가지 경로를 만들던 저는 정말 하나로 통일해도 잘 작동한다는 사실을 알고 왜 그런지 궁금해졌습니다..
Ghostpong 에서는 유저의 프로필 사진 업로드 기능을 지원하고 있습니다. 서버에 직접 static file 들을 업로드하고 serving 하는 기능을 구현했던 과정을 소개합니다. 1. serve static https://docs.nestjs.com/recipes/serve-static 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 (Obj..
프로젝트 진행 중 작성한 wiki 를 옮겨와 편집했습니다. 팀원들 고생하지 말라고 필수적인 태그만 정리한 거라 부족한 점이 많습니다. Nest 와 Swagger 공식문서를 보면서 태그 쇼핑하시는 것을 추천합니다. 하지만 제가 프로젝트 시작할 때는 다른 사람들이 대체 무슨 태그를 쓰는 지 궁금했어서 기록용으로 남깁니다...ㅎㅎ ApiOperation Api에 대한 설명을 적는 태그입니다. 사용 예 @ApiOperation({ summary: '친구 신청하기 (닉네임)' }) 적용 스크린샷 Path 옆에 summary 의 내용이 나타납니다. 메소드 위에 주석 (/**/) 을 쓰면 더 상세한 표기가 가능합니다. (Nest 의 swagger plugin 을 적용했을 경우) Api{StatusCode}Respon..
프로젝트 진행 중 작성한 wiki 를 옮겨와 편집했습니다. swagger OpenAPI Speciation (OAS) 를 활용할 수 있는 도구. OpenAPI 란 RESTful 인터페이스를 정의하기 위한 세계 표준이다. OAS 로 technology-agnostic API 를 설하고 개발, 사용할 수 있다. Use in nest! yarn add @nestjs/swagger nest 는 OpenAPI 를 데코레이터로 만들 수 있는 모듈을 제공한다. DocumentBuilder 로 OpenAPI 사양을 준수하는 기본 문서를 구축할 수 있다. 전체문서 (all HTTP routes defined) 를 생성하려면 SwaggerModule 의 createDocument() 를 사용한다. 순서대로 applicat..
에러 내용 php-fpm 을 사용하는 도커 컨테이너 하나와 웹 서버로 nginx 를 사용하는 도커 컨테이너 하나를 띄우고 둘 사이에 통신할 수 있게 세팅하는 와중에 자꾸 502 에러나 connection reset by peer 가 발생하였다. 발생한 에러 curl -v localhost:1234 * Trying ::1:1234... * Connected to localhost (::1) port 1234 (#0) > GET / HTTP/1.1 > Host: localhost:1234 > User-Agent: curl/7.74.0 > Accept: */* > * Mark bundle as not supporting multiuse < HTTP/1.1 502 Bad Gateway < Server: ngin..
어느 순간부터 모든 웹페이지에 커서가 나타나기 시작했다. 구글링으로 해결법을 바로 찾을 수 있었다. 크롬 브라우저 세팅 (맥 단축키 : cmd + ,) 에서 "Navigate pages with a text cursor." 라는 기능을 찾아서 꺼주면 된다. F7 으로도 on/off 할 수 있다. 정식 명칭은 caret browing 이다. Firefox 와 Internet Explorer 에서도 지원한다. 마우스나 트랙패드를 사용할 수 없을 때 유용하다. 하지만 나는 Vimium extension 을 기본으로 사용하고 있기 때문에 도움이 되지 않았다... 이 글을 보시는 분들께도 Vimium을 추천하고 싶다! 마우스 없이 브라우징이 가능하다. https://chrome.google.com/webstore..
2022.03.06 ~ 2022.04.14 진행. minishell 42 Seoul 2서클 과제로 bash 의 간단한 몇 가지 기능을 구현한다. 주요 기능에는 redirection () 과 pipe (|)처리, 환경변수 설정 및 사용, exit status, built-in command, signal 처리가 있다. 내가 주로 담당한 부분은 커맨드의 파싱 처리 부분이었으므로 파싱 과정에 대해서 다룰 것이다. 파싱에 앞서 고려할 점 처리 순서 쉘 커맨드가 들어왔을 때 파싱 후 어떤 순서로 처리되어야 하는 지를 고려해야 한다. 예를 들어 type == SYMBOL || (*head)->type == SYMBOL_HERE) { result = check_rdr(*head, (*ptr)->left); if (!..