-
<TIL> npm-checks-update클래스/└ TIL 2022. 5. 4. 23:18
🧭 npm-checks-update 패키지 웹스톰에서 express 보일러 플레이트 실행시 기본 설치되는 패키지들은 버전이 낮습니다. npm-checks-update를 설치하고, ncu -u 명령어를 실행하면 package.json 파일에서 패키지들을 최신버전으로 변경해 줍니다. 이후 npm i 명령어를 통해 각각의 패키지들을 업데이트합니다. https://www.npmjs.com/package/npm-check-updates npm-check-updates Find newer versions of dependencies than what your package.json allows. Latest version: 12.5.11, last published: 3 days ago. Start using np..
-
<Nest: 에러노트> QueryFailedError: Table 'user' already exists액티브 스킬 2022. 4. 28. 08:59
QueryFailedError 네스트(NestJS)에서 MySQL을 연결하던 중 테이블이 이미 존재한다는 에러가 발생했습니다. ormconfig.json에서 synchronize 옵션과 migrationsRun 옵션이 충돌이 일으킨다는 힌트를 얻었습니다. synchronize 옵션이 true일 경우, 서버 구동시 테이블을 새로 생성합니다. migrationsRun 옵션이 true일 경우, 서버 구동시 마이그레이션을 자동 적용합니다. 해결방법 1. migrationsRun 옵션을 날려버립니다. 해결방법 2. synchronize, migrationsRun 옵션을 둘다 false로 합니다. (그럼 의미가 있나?...) 📌 https://stackoverflow.com/questions/62434734/typ..
-
<TIL> IoC / DI, unknown database클래스/└ TIL 2022. 4. 28. 00:18
🧭 IoC / DI 네스트(NestJS)를 공부하다가 IoC와 DI라는 개념을 접했습니다. 클래스의 생성과 사용을 구분해서 관심사를 분리합니다. IoC(Inversion of Control, 제어 역전)란 생성의 제어권을 프레임워크에 넘겨주는 것입니다. IoC의 방법으로 DL과 DI가 있고, 다시 DI에는 Setter, Constructor, Method 방식이 있습니다. 일반적으로 IoC는 DI를 사용하며, DI 중에서 Constructor 방식을 사용합니다. 네스트에서는 서비스 클래스를 컨트롤러 클래스에 주입하게 됩니다. 에러 네스트에 MySQL을 연결하던 중 "Unknown database 'DB이름'" 에러가 발생했습니다. TypeOrm이 알아서 데이터베이스를 생성해 줄 것이라고 착각했기 때문입니..
-
<TIL> NestJS, AWS클래스/└ TIL 2022. 4. 27. 00:12
🌱 NestJS "컨트롤러"에 "서비스"를 붙이는 행위를 DI(Dependency Injection)라고 합니다. NestJS는 Fastify랑 Express 위에서 돌아간다고 하는데 배포시에 결정하는 것일까요? 데코레이터는 함수로써, 함수의 역할을 보충해주는 역할을 합니다. 쿼리 파라미터, 패스 파라미터(라우트 파라미터), 본문(body)을 통해서 데이터를 전달할 수 있습니다. AWS 모놀리틱 구조란 하나의 서버 컴퓨터에 프런트엔드, 서버, DB가 모두 포함되어 있는 것입니다. MSA란 프런트엔드, 서버, DB를 각각 다른 서버 컴퓨터에서 관리하고, 나아가서 각각을 기능 단위로 더욱 세분화하는 것입니다. 일기 NestJS를 처음 접했을 때는 너무 복잡해 보였습니다. 백엔드 학습을 어느정도 하고 보니 잘..
-
<WIL> 주특기(노드) 2주차 진행사항과 N+1 문제클래스/└ 항해99 2022. 4. 25. 20:03
🌊 # 7주차 진행사항 주특기 2-3주차에는 로그인을 포함한 매거진 웹의 API를 만들면서 시작합니다. 이 API를 바탕으로 테스트 코드, 타입스크립트 등을 적용해 나가는 방식으로 진행하고 있습니다. 1주차와 비교해서 큰 차이점은 JWT를 활용한 로그인 구현과 MySQL이라는 관계형 DB를 다루게 된 것입니다. 특히 MySQL을 접하는 것이 DB에 대한 사고를 확장하는데 도움이 많이 된 것 같습니다. 테스트 코드 Jest를 활용하여 테스트 코드를 작성하였습니다. 함수 단위의 유닛 테스트 부터 API를 검증하기 위한 통합 테스트까지 하나씩 작성해 가면서 감을 익힐 수 있었습니다. 레이지 로딩, 이거 로딩, N+1 문제 (숙제...?) 매거진 웹의 게시글을 로드하면서 댓글까지 한꺼번에 불러오는 쿼리를 작성하..
-
<타입스크립트> 너의 의미: 협업무기/타입스크립트 2022. 4. 25. 14:37
🚀 타입스크립트(이하 'TS')는 필수처럼 되었습니다. 자바스크립트(이하 'JS')를 배우기 전에 TS로 시작해도 되냐는 말도 보입니다. TS에 대한 관심이 뜨거운 것 같습니다. 그렇다면 TS가 어떤 의미인지 가볍게 짚어 보겠습니다. 타입 말그대로 TS는 타입과 관련된 언어입니다. 자유로운 JS에 타입이라는 제약을 가하게 됩니다. 물론 JS에 타입이 없는 것은 아니지만 구렁이 담넘듯 타입이 휙휙 변하는 JS와 달리 TS에서는 타입이 정적으로 유지됩니다. 타입이란 우리가 흔히 사용하는 Number, String, Object부터 any 같은 TS 특유의 타입까지 다양합니다. 타입이라는 굳이 없던 제약을 가하는 것이 당장은 불편하게 느껴지기도 합니다. 에러 발생 TS는 에러가 발생하는 시점을 앞당겨 줍니다...
-
<WIL> NoSQL에서 SQL로클래스/└ 항해99 2022. 4. 17. 23:51
🌊 # 6주차 노드 주특기 1주차 과제는 로그인 없는 게시글, 댓글 CRUD 구현이었습니다. 과제 자체는 어렵지 않아서 기한보다 조금 일찍 끝냈습니다. 디벨롭시킬 부분에 대해서 고민해 보았습니다. 로그인 등의 기능을 붙일 수도 있겠지만, TypeScript 마이그레이션을 해보기로 결심했습니다. 프로젝트 규모가 커지면 TypeScript 마이그레이션에 애를 먹을 것 같아 매도 먼저 맞는 놈이 났다고(?) 간단한 프로젝트에 적용해 보기로 했습니다. 실은 API 테스트, 테스트 코드 작성 등도 하고 싶었으나 프로젝트가 워낙 단순하여 의미없는 테스트를 하게 될 것 같아서 생략하였습니다. 다음번 이 2가지를 염두에 두고 과제를 진행하여 꼭 포함시키고자 합니다. 목요일까지 주특기 1주차를 마무리 짓고 2주차에 접어..
-
<채용설명회> 카카오 테크 인턴십 설명회 (4/16)클래스/프로그래머 2022. 4. 17. 23:13
🚀 서버파트 QnA 카카오 테크 인턴십 설명회 중 인상깊었던 질문/답변 일부를 정리해 보았습니다. 질문1. 인턴십 과정 중 눈에 띄었던 지원자는? CS지식이 조금 부족하더라도, 도메인에 대한 높은 이해를 바탕으로 기반기술을 빠르게 습득하고 인턴십 과제를 빠르게 완료한 사람 과제의 조건을 만족한 후, 추가적으로 필요한 부분을 스스로 고민하는 사람 요구조건을 일부 만족하지 못했지만, 기능 하나를 적용하더라도 이 기술을 쓰는게 맞나 고민하면서 적용하는 사람 탈락한 케이스 => 마감기한에 비해 해놓은게 별로 없는데 긴장감이 안보이는 사람 이 기술이 왜 필요한지 철두철미하게 원리를 알아가는 사람 질문2. 코틀린 사용 여부? 대세는 자바, 신규 프로젝트에는 꽤 적용하는 편 이 프로젝트에는 자바보다 코틀린이 낫다는 ..