본문 바로가기

전체 글

[Nest] Internal server error 문제 상황 너무나 기본적인 개념이었지만, 무턱대고 Nest 적용해보며 코드를 작성하다보니 어려움을 겪었던 문제이다. { "statusCode": 500, "message": "Internal server error" } 개념 nest가 error를 JSON으로 전송할 때, 해당 오류가 무엇인지 해석하고 그 결과를 전송한다. 사용자가 error 목록을 nest에게 알려주지 않으면, 해석하지 못한 에러가 등장한 경우 위와 같은 JSON 객체를 전송한다. "Internal server error"라는 것은 nest 서버에서 '해석' 기능을 하지 못한 오류가 발생하였다는 것을 의미한다. 결론 error handling을 꼼꼼하게 해두자. 공식 문서를 꼼꼼하게 읽어보자. https://docs.nestjs.com.. 더보기
1. 문제해결능력 intro 프로그래머에게 가장 중요한 능력이라고 생각하고, 가장 자신있는 능력이라고 생각하기 때문에 첫번째로 작성한다. 문제 해결 능력이란 무엇인가 하는 이론적인 내용은 평범한 내용이기에, 내 문제 해결 능력을 보여주는 사례와 이야기를 풀어보고자 한다. 그럼에도, 문제 해결 능력이란? 다양한 문제 상황이 있기 때문에 본 글에서 회고하고자 하는 문제 해결 상황을 규정하고자 한다. 개발자로서 가장 많이 마주하는 문제는 남들과 달리 에러가 발생한 경우 즉, 구글링한 검색 결과대로 했는데(알려준 대로 했는데) 에러가 발생한 경우일 것이다. 문제 해결 단계 1. 원인 분석 실행이 되는 환경과 오류가 뜨는 환경 간의 차이를 분석하거나, 에러 메세지를 통해 오류의 근원지를 파악할 수도 있다. 2. 가설 설정 및 검증.. 더보기
[JS] Map, Set 자료형 심화 이해 iterable 객체 정의 for…of 반복문을 적용할 수 있는 객체로 Symbol.iterator가 구현된 객체 for…of 문은 Symbol.iterator를 자동으로 호출함. 배열, 문자열이 대표적 사례이며 객체는 iterable이 아닌 대표적 사례 개념 심화 관심사의 분리 원칙에 근거해 object[Symbol.iterator] 활용 let range = { from: 1, to: 5 }; // 1. for..of 최초 호출 시, Symbol.iterator가 호출됩니다. range[Symbol.iterator] = function() { // Symbol.iterator는 이터레이터 객체를 반환합니다. // 2. 이후 for..of는 반환된 이터레이터 객체만을 대상으로 동작하는데, 이때 다음 값.. 더보기
[Express] body parser? urlencoded? 참고자료 https://velog.io/@hyunju-song/body-parser의-urlencoded는-도대체-어떤-역할을-하는-걸까 https://stackoverflow.com/questions/29960764/what-does-extended-mean-in-express-4-0/45690436#45690436 https://expressjs.com/ko https://tk-one.github.io/2018/08/28/nodejs-buffer/ body-parser 모듈 개념 http 통신 과정에서 요청된 request 객체를 추출하는 모듈이다. JS는 데이터를 주고 받을 때 JSON 객체 형태로 주고 받는데, 해당 객체에 담긴 데이터를 쉽게 다룰 수 있도록 파싱해주는 역할을 수행한다. 활용 ex.. 더보기
[CORS] CSR에서 google oauth2.0 적용기 자주 볼 수 있는 CORS에러지만 에러가 뜨지 않을거라 자부했었기에 그 경험을 공유하고자 한다. 문제 상황 1. Client Side Rendering - front: React - back: Express.js 2. Oauth 로직 - 프론트에서 구글 로그인 버튼 클릭 시 GET /api/auth/login/google로 요청 - 백에서는 passport를 활용하여 google oauth를 실행하여 google url로 요청 - 짜잔! No Access-Contorl-Allow-Origin 시도한 해결 방법 이번 cors 에러는 로컬에서 프론트(http://localhost:3000), 백(http://localhost:3001)을 따로 열어 시도했을 때부터 발생했다. 1. front package.j.. 더보기
[AWS] ubuntu로 ssh key 파일 넣기 해당 글은 ssh 접속을 특정 ip로 제한한 경우입니다. 1. 옮기는 이유 /home/ubuntu/.ssh/ 디렉토리 안에 .pem 파일을 넣어두면, ssh를 이용하여 접속시 해당 파일을 자동으로 읽는다고 함 http://taewan.kim/post/ssh_config/ 2. 방법 사용 중인 인스턴스가 어떤 유형의 ssh key를 채택했느냐에 따라 다르다. 첫번째: key.ppk WinSCP를 설치하여 진행하면 된다. 해당 프로그램은 putty와 같이 .ppk 파일을 첨부하여 접속하는 방식으로 파일을 이동시킨다. 이 때 사용자 이름과 비밀번호가 필요하다. 별다른 설정을 하지 않았다면 초기 사용자 이름은 아래와 같다. 비밀번호는 설정되어있지 않기 때문에 참고할 글을 첨부한다. https://serina-t.. 더보기
[AWS] ec2 instance에 node.js 서버 배포기 첫번째 에러 Cannot find module 'semver' 이는 ubuntu에 설치된 node의 버전 문제로, 이를 해결하고자 다양한 해결책을 찾아봤으나,,, 직빵은 nvm을 이용하는 것이었다. 아래 링크에서 제공하는 명령어를 그대로 복붙해보자. https://docs.aws.amazon.com/ko_kr/sdk-for-javascript/v2/developer-guide/setting-up-node-on-ec2-instance.html 두번째 에러 Error: EACCES: permission denied 일반적인 해결방법은 npm에서 제안한 대로 npm이 참고할 경로를 변경해주는 것이었다. https://ksbgenius.github.io/nodejs/2020/12/13/npm-global-ins.. 더보기
[Sequelize] snake_case를 camelCase로 다루기 참고자료 https://github.com/sequelize/sequelize/issues/10857 https://github.com/sequelize/sequelize/issues/10857#issuecomment-534351978 https://stackoverflow.com/questions/42728789/sequelize-foreign-key-snake-case-in-db-and-camelcase-in-code-does-it-possible 목표 db의 column은 모두 snake_case로, 대신 JS에서 해당 컬럼을 다룰 때에는 camelCase로 다루기. 이유는 프론트 단과의 통신 과정에서 case 충돌을 막기 위함이다. 예를 들어 res.data.profile_image VS. res.. 더보기