본문 바로가기

분류 전체보기

(122)
나의 개발일지 TIL(Today I learned) - 트랜잭션, 동시성 제어 Today I learned 최종 프로젝트에서 예약 기능을 구현해보기 위해서 미리 알아보면서 필요한 기능을 학습하고 있다 예약 기능에 무엇이 필요한가 생각을 하다가 혹시 3명만 예약을 해야하는데 같은 날 같은 시간에 동시에 예약이 5명이 예약을 진행한다면 5명이 다 예약이 되어버리는 문제가 발생하지 않을까 생각을 했다 그래서 바로 간단한 테스트를 진행해 보았다 //cats.service.ts try { const cats = await this.catsRepository.find({ where: { deleteAt: null }, }); if (cats.length >= 2) { throw new Error('testing error'); } this.catsRepository.insert({ name:..
나의 개발일지 20220213 TIL(Today I learned) - NestJS, Token 응답 Today I learned NestJs를 왜 사용해야하지? 오늘은 express 프레임워크를 사용하면서 불편한 점 필요한 모듈을 하나 둘 사용하다 보면 코드의 양이 많아진다 그리고 레고를 조립하듯 하나하나 조립해야한다 NestJs는 express에서 필요한 모듈을 개발자가 레고를 조립하듯 작업했다면 NestJs는 커멘드 명령어를 이용해서 Nest가 구현해준다 nest g co posts 이 짧은 커멘드만 입력하면 posts컨트롤러가 알아서 만들어진다 이런식으로 기계적으로 NestJS가 컨트롤러뿐 아니라 서비스, 미들웨어와 인터셉터 등 웹 서버에 필요한 다양한 구성요소를 커맨드로 정확하게 구현할 수 있고 디렉토리 구조도 알아서 자동으로 구성된다 이렇다 보니까 개발자의 실수가 줄어든다 Token을 cook..
나의 개발일지 20220206 TIL(Today I learned) - 미니프로젝트 Today I learned 오늘은 미니프로젝트의 로그인 인증 기능과 상품 삭제 기능 관리자 로그아웃 기능을 작업했다 상품 삭제를 하는 중 문제가 발생했다 상품 삭제를 하드 삭제로 진행하는 방식으로 작업을 하고 있었는데 주문이 들어간 상태에서 상품을 삭제한다면 주문내역을 확인할 때 문제가 발생한다 그래서 하드 삭제를 소프트 삭제 방식으로 바꿔서 상품 삭제 기능을 구현해야한다 sequelize를 이용해서 소프트 삭제를 만들자 product 모델 파일에 설정을 추가합니다 paranoid 설정을 true로 주어서 deleteAt 컬럼을 사용해 완전히 삭제하지 않고 지운 시각을 기록해서 논리적으로 지우게 만든다 삭제를 진행하면 데이터베이스에서 완전 삭제가 되는게 아니라 deleteAt에 지운 시간이 들어가면서 ..
나의 개발일지 20220203 TIL(Today I learned) - 미니프로젝트 Today I learned 오늘은 미니프로젝트를 진행하면서 파라미터를 잘못 사용해서 문제가 발생해서 고생을 했다 axios로 api를 호출을 하면 문제가 발생한다 요청 url이 /admin_edit_product/api/admins/products 로 요청을 해서 문제였다 이 문제는 결국은 위에서 페이지를 render할때 주소에 파라미터값을 받는걸로 코드를 짜서 발생한 문제였다 productId는 필요한 값이라서 가지고 가야하기 때문에 이 문제를 해결하기 위해서 쿼리스트링으로 바꾸는 작업을 진행했다 파라미터를 받는 부분에서 파리미터를 지우고 쿼리스트링으로 보낸 productId를 받아서 사용합니다 쿼리스트링을 이용하면 api호출이 정상적으로 작동을 한다
나의 개발일지 20220202 TIL(Today I learned) - Promise Today I learned 오늘은 미니프로젝트의 관리자를 추가하는 기능의 작업을 진행했다 작업을 진행하면서 비밀번호의 암호화를 저번 미니프로젝트에서 pbkdf2를 이용해서 암호화를 진행했다 이 부분에서 문제가 발생했는데 바로 Promise였다 salt를 랜덤으로 만들고 pbkdf2를 이용해서 만든 암호화된 비밀번호와 salt를 반환 받아서 사용하고 싶었다 이런식으로 진행을 했는데 Promise{} 즉 프로미스가 반환이 되었다 사용을 할려면 then()을 이용해서 사용해야 하는데 나는 then()을 사용하는게 아니라 값을 받아다가 사용하고 싶었다 async와 await를 사용하자 await를 사용하면 Promise{}으로 반환 되던 값이 object로 반환이 된다 오늘 프로미스와 함께 하루종일 고생하면서..
나의 개발일지 20220201 TIL(Today I learned) - 미니프로젝트 Today I learned 오늘은 미니프로젝트의 S.A를 작성하는 작업을 진행했다 📂 프로젝트 개요 프로젝트명 mylovemeat(전자상거래 웹서비스) 프로젝트 유형 미니/단기 프로젝트 프로젝트 내용 닭고기,돼지고기,한우 등 가리지 않고 모든 종류의 고기를 거래하는 전자상거래 웹서비스를 구현한다. 프로젝트 일정 2023-02-01(수)~2023-02-07(화), 총 5일 프로젝트 결과공개 2023-02-08(수) 14:00 프로젝트 투입인력 6조 전원(총 5인, 백엔드 개발자) 🛠 개발환경 운영체제 Windows 10, Windows 11 IDE VSCODE 버전관리 Git 일정관리 Notion,slack DB관리 MySQL 서버 Express 프론트엔드 HTML / CSS / Javascipt / e..
나의 개발일지 20220131 TIL(Today I learned) - 시퀄라이즈, 타입스크립트 Today I learned 시퀄라이즈 인스턴스에 추가되는 특별한 메서드/혼합 두 모델 사이에 관계를 정의하면 해당 모델의 인스턴스는 관련 모델과 상호 작용하는 특별한 메서드를 얻는다 시퀄라이즈가 추측할 수 있는 데이터는 자동으로 전달이 된다 추측할 수 없는 사용자 ID와 타임스템프를 제외한 내용만 전달하면 된다 특별한 메서드를 상품의 상세정보를 가져오는 부분도 적용했는데 문제가 발생했다 이렇게 코드를 수정하고 테스트를 했는데 상품의 정보가 나오지 않았다 findOne을 사용했을 때는 잘 작동했다 이 문제를 해결하기 위해서 findOne과 getProducts의 반환값을 알아봐야했다 findOne은 객체가 나오는데 getProducts는 반환값이 배열로 반환이 되는걸 알았다 이제 문제를 해결해보자 배열이..
나의 개발일지 20220130 TIL(Today I learned) - 데이터베이스, 타입스크립 Today I learned 인덱스 사용 시 주의사항 사용하지 않는 인덱스는 제거를 해주는게 좋다 unique, primary key, foreing key는 자동 인덱스 where절에 자주 사용되는 컬럼이 인덱스 유력후보 정규화 크고 제대로 조직되지 않는 테이블과 관계를 작고 잘 조직된 테이블과 관계로 나누기 성능이 아주 중요한 경우는 역정규화가 필요할 수 있다 Nested loop join 타입스크립트 keyof 객체 유형의 해당 키를 문자열 또는 숫자 리터럴 합집합을 생성 type도 인덱싱 할 수 있다 제네릭 T, U, V 3가지까지만 받고 인자 값이 그 이상은 객체로 만들어서 구조 분해할당을 할 수 있으면 [0]과 같은 인덱싱은 가독성이 좋지 않다 구조 분해할당을 할 수 있으면 분해해서 가독성을 ..