sogno

일하면서 공부해욧 9

카테고리 설명
  • 스터디용으로 파놓은 repository에 push를 하려고 했는데... ! [rejected] main -> main (fetch first) error: failed to push some refs to 'https://github.com/sognociel/express_study.git' hint: Updates were rejected because the remote contains work that you do hint: not have locally. This is usually caused by another repository pushing hint: to the same ref. You may want to first integrate the remote changes hint: (e.g..

  • 이번 프로젝트를 진행하면서 multer-s3를 사용해 보게 되었는데, 팀장님이 작성한 코드만 보며 조각조각땃땃따를 하다 보니 도대체 얘는 어떻게 진행되고 있는 것인가... 도저히 이해를 못 하겠던 것이었다... 계속되는 머리털뜯기... 그걸 보는 팀장님... (진짜 답답하셨을 듯 이해를 1도 못하고 있어서...) 그도 그럴게 Node.js로 api 한번 만들어보질 않았는데 바로 Nest.js typeorm 이렇게 넘어가서 그런 걸 지도 미들웨어에 대한 개념도 부족해서 (저번에 팀장님이 설명해 주셨는데 또 잊었음!! 이게 다 블로그를 안 써서 그런 것 같음!!!) 이번에 Express로 미들웨어 함수를 만들어 보라고 하시길래 이번엔 절대 잊지 않겠다... 는 마음으로 만드는 과정을 샥샥 적어볼까 한다. 공..

  • 회사에서 Docker를 통해 MySQL을 띄워놓았다. 회사 노트북으로 돌아가고 있는 DB에 접근하려면 설정해줘야 할 것들이 몇 가지 있어서 나중에 또 이런 일이 있을 때 참고하려고 정리해 두기로 했다. 알아보기 쉽게 외부/내부로(어감이 조금 이상하긴 하지만...) 구분하겠다. 내부 노트북 : Docker를 통해 MySQL DB를 띄워둠. 이 노트북이 사용하는 공유기에 포트포워딩 설정을 해둬야 함 외부 노트북 : 내부 노트북의 외부 ip주소만 있으면 됨 1. Docker 컨테이너 설정 기존에 도커를 실행했을 때는 포트를 로컬의 3306번으로 지정을 해두었는데, 이렇게 도커 컨테이너를 실행하면 외부접속이 아예 불가능하므로 처음부터 외부 접속 할 포트를 설정하거나, 아니면 기존에 로컬에서 실행되는 도커 컨테이..

  • 스터디는 맥, 집에서 따로 공부할 때는 윈도우를 쓰는데, git repository에 그날 한 것들을 올려놓고 받아오는 식으로 진행을 하려고 했다. 출퇴근시간에 노트북을 들고 다니기가 번거로웠고... 목이랑 어깨가 안 좋아서 매번 들고 다닐 때마다 한의원 VVIP가 되었기 때문에^^7 하지만 처음부터 시뻘건 경고창을 맞닥뜨리게 되는데... Prettier와 ESLint를 적용하고 있었는데 Replace의 경우는 Prettier의 괄호 안 공간과 싱글쿼테이션 때문이라 설정에서 바꿔주었더니 바로 해결이 되었다. 그러나... Delete `␍`의 경우는 계속해서 남아있었다. 알아보니 ESLint에서 발생하는 오류라 실행은 정상적으로 된다고 한다. 하지만 이런 오류표시 정말 엄청 너무나도 심각하게 신경 쓰이고 ..

  • class-validator는 기본적으로 @IsString, @IsNumber 등 기본적인 데코레이터들을 제공해 주지만... 이것만으로 검증을 할 수 없을 때 커스텀이 필요한 경우가 있다! 나는 입력받은 키와 몸무게가 소수점이 없을 때는 3자리 이하로, 그리고 만약 소수점 자리가 있다면 소수점 이하 2자리까지만 입력된 값을 통과시키고 싶었는데, 이런 데코레이터는 없기 때문에... 직접 커스텀을 해야 했다. 다행히... custom class validator에 대해 정리해 주신 분이 계셔서😭 정말 많은 도움을 받았다. https://lee-eonsang.com/blog/custom-class-validator 일단 최종적으로 구현한 내용은 아래와 같다. import { registerDecorator, ..

  • 오늘은 node.js와 express에 대해서 쪼끔... 알아보기로 한다. 그냥 node.js 홈페이지에 가서 설치를 해도 되지만, 이전에 프로젝트를 수행하다가 노드 버전 때문에 계속 나 혼자 충돌? 이 일어났던 적이 있어 nvm으로 설치를 하는 게 좋은 것 같다. 알고 보니 이전에 개발 공부를 하시던 분들은 그때 최신버전이 16이었고, 나는 새싹에서 처음 다운로드하였어서 18 버전이라 그랬던 것... https://github.com/coreybutler/nvm-windows/releases nvm-setup.zip 이었던가..? 설치를 하고 실행하면 됐던 것 같다. $ nvm install v16 { // 응답에 Hello World 라는 문자를 담아서 보내겠다 // send 대신 좀 더 명시적으로 ..

  • 뭔가 이것저것 짬뽕인 느낌이지만 길이도 그렇게 길지 않을 테고.. 복습 겸 한꺼번에 모아두는 게 좋을 것 같았다. 나는 차트 데이터에 관해서 코드를 짜보았는데, class-validator는 로그인 등 다양한 곳에서 사용하는 것 같더라..! 요약 : class-validator로 DTO타입 체크하는 여정기. class-validator class-validator란 joi의 Typescript 버전으로, 데코레이터를 이용하여 편리하게 검증할 수 있는 라이브러리이다. 서버로 들어오는 Json 데이터의 검증을 할 때 유용하게 사용할 수 있다. joi란 무엇이냐? 이것 또한 validation 라이브러리라고 보면 된다. DTO (Data Transfer Object) DTO란 말 그대로 해석하면 '데이터 전송..

  • ★테스트를 작성하는 이유★ 우리가 작성한 코드가 생각한 시나리오에서 정상 동작함을 보장하기 위함이다. 물론! 우리가 생각하지 못한 상황에서에 대한 동작(알 수 없는 예외)에 대해서도 최소한의 예외 처리 등을 작성하여서 코드가 실행되는 애플리케이션이 의도치 않게 종료되는 것(의도된 종료와는 별개)은 막고 보장할 수 있어야 한다. 코드와 프로젝트는 생명주기라는 것이 존재하는데(업데이트, 실제 사용기간 등) 그 주기 내에서 발생할 수 있는 사이드 이펙트를 체크하고 그로 인해 발생할 수 있는 문제를 실제환경이 아니더라도 재현 및 선제적으로 체크할 수 있게 하기 위해서 테스트를 작성한다는 이유를 꼭!!! 생각하면서 테스트를 작성해 보자~ 프로젝트 생성 $ npx create-react-app 프로젝트이름 --te..

  • Jest란? Jest는 페이스북에서 만들어서 React와 더불어 많은 자바스크립트 개발자들로부터 좋은 반응을 얻고 있는 테스팅 라이브러리라고 한다. zero config라고 해서 별도의 설정 없이 빠르게 테스트 케이스를 작성할 수 있다는 장점을 가지고 있다. Jest 설치 npm i -D jest 설치를 완료한 뒤, package.json의 test script를 jest로 수정해 주면 된다. 이후 npm test로 실행하여 테스트 코드를 실행하면 되는데, 이때 실행되는 파일들은 아래와 같다. - 파일명.test.js 혹은 __tests__ 폴더 안에 있는 파일들 test코드 작성 방식 1. 실행 함수를 외부 파일에서 가져오지 않을 때 add.test.js describe('계산 테스트', () => {..