팀프로젝트 - 페이지네이션 구현 limit과 offset을 이용해서 간단히 페이지네이션을 구현할 수 있었다. 아래는 3계층 구조로 구현한 전체 상품 조회 기능이다. repository 계층에서 평소에 사용하던 findAll()이 아닌 findAndCountAll을 통해서 전체 데이터 수까지 이용할 수 있도록 했다. controller adminGetAllProducts = async (req, res, next) => { try { let limit = 3; let offset = 0 + (req.query.page - 1) * limit; const productsInfo = await this.productService.adminFindAllProducts( limit, offset ); return..

Node.js 이커머스 프로젝트 시작 새로운 프로젝트가 시작되어 S.A 작성과 역할 분담을 진행했다. 이커머스 프로젝트 S.A - 노드B반9조 공구해조 이커머스 프로젝트 www.notion.so 생각보다 DB를 설계하는 것이 어려웠다. 장바구니를 구현하고자 할 때 table 간의 관계가 생각보다 간단하지 않았다. 여러 논의를 통해 아래의 ERD를 짰고, 차후 진행하면서 문제가 발생하면 수정하고자 한다.

VSC-THUNDER CLIENT의 Collections 사용 문제점 프로젝트마다 계속 마구잡이로 사용하면서 activity가 정리가 안 됨 해결 Collections 기능 활용 알게 된 점 프로젝트별로 아래와 같이 관리할 수 있다. Collection Settings에서 Base Url을 설정하면 각 Activity에서 중복되는 해당 Base Url 부분을 입력할 필요가 없다. 타입스크립트 5일차 문제점 강의를 모두 듣고 아래 사이트를 보며 추가 과제 수행 중 CORS에러 발생 Node.js and TypeScript Tutorial: Build a CRUD API Learn how to use TypeScript to build a feature-complete Express API. Learn ho..

타입스크립트 3일차 - 포켓몬 api 예제에서 동기/비동기 문제 문제점 포켓몬 카드가 새로고침할 때마다 조금씩 순서가 다르게 나타날 때가 있었다. 해결 const fetchData = (): void => { for (let i = 1; i { for (let i = 1; i { const cardId = document.querySelector(".card:last-child .card--id"); return cardId && cardId.textContent === "#100"; }, { timeout: 5000 } ); why???
타입스크립트 3일차 알게 된 점 (기억할만한) this 화살표 함수에서 써야함, 일반 함수에서 쓰면 대상이 부정확해짐 interface Node { count: number; init(this: Node): () => {}; } let nd: Node = { count: 10, init: function (this: Node) { return () => { return this.count; }; }, }; let getCount = nd.init(); let count = getCount(); console.log(count); // 10 추상 클래스 특정 클래스의 상속 대상이 되는 클래스이며 좀 더 상위 레벨에서 속성, 메서드의 모양을 정의한다. abstract class Developer { abst..
타입스크립트 1~2일차 알게 된 점 TypeScript는 Javascript의 superset(=자바스크립트 + 알파)이다. 자바스크립트와 100% 호환이 되며, 이 외에 클래스,인터페이스 등 객체지향 프로그래밍 패턴을 제공한다. 명령어 npm ls -g ⇒ 글로벌 모듈 확인 npm i typescript -g ⇒ 타입 스크립트 사용하기 위하여 설치 tsc ⇒ 명령어 보기 tsc —version ⇒ 설치된 타입스크립트 버전 보기 tsc —init ⇒ tsconfig.json 생성(자동 셋팅) 마이크로소프트의 tsconfig 추천 세팅 GitHub - microsoft/TypeScript: TypeScript is a superset of JavaScript that compiles to clean Jav..
파이썬 표준 라이브러리 math 모듈 문제점 알고리즘 문제들을 풀면서 자주 사용되는 단순한 수학 연산들에 너무 시간을 쓰게 된다. 해결 파이썬 표준 라이브러리 math 모듈 사용 알게 된 점 자주 쓸만한 함수들 math.ceil(x): 올림 math.floor(x): 내림 math.comb(n, k): 반복과 순서 없이 n 개의 항목에서 k 개의 항목을 선택하는 방법의 수 (조합, nCk) math.perm(n, k=None): 반복 없고 순서 있게 n 개의 항목에서 k 개의 항목을 선택하는 방법의 수 (순열 nPk) math.factorial(n): n 팩토리얼 math.gcd(*integers): 최대공약수 math.lcm(*integers): 최소공배수 math.exp(x): e의 x 거듭제곱 ma..
웹 소켓 강의 수강 알게 된 점 웹 소켓 강의를 들으며 아직까지 큰 문제는 없었다. Socket.io를 사용할 때 아래의 코드들은 기억해두면 좋을 것 같아 메모해 놓는다. 물론 자주 쓰다보면 쉽게 외워질 것이니 억지로 외울 필요는 없을 것 같다. Socket.io 이벤트 통신 // 해당 이벤트를 받고 콜백함수를 실행 socket.on('받을 이벤트 명', (msg) => { }) // 이벤트 명을 지정하고 메세지를 보낸다. socket.emit('전송할 이벤트 명', msg) Socket.io 송수신 메소드 // 접속된 모든 클라이언트에게 메시지를 전송한다 io.emit('event_name', msg); // 메시지를 전송한 클라이언트에게만 메시지를 전송한다 socket.emit('event_name'..
키워드1 문제점 Sequelize 쿼리문으로 데이터 조회 요청시 join을 하게 되면 해당 데이터가 객체 형태로 합쳐지게 되는데 이를 원래 데이터와 같은 형태로 합치고 싶었다. 시도해본 것들 include를 이용한 다양한 예시들을 따라해 봤다 해결 아래와 같이 코드를 짜서 해결했다 findReviewByOwnerId = async (ownerId) => { const review = await this.reviewModel.findAll({ raw: true, attributes: { include: ['Service.customerId', 'Service.customer.nickname'], }, include: [ { model: this.serviceModel, attributes: [], wher..
form 태그 안의 button 문제점 프론트에서 form 태그 안에 button 태그가 존재하는 경우 button의 onclick 함수가 아닌 form 자체의 submit 함수가 실행된다. 이로 인해 원하는 onclick 함수를 활용할 수 없었다. 시도해본 것들 button 태그에 type="button"을 추가하기 input 태그 type="button"을 대신 활용하기 해결 두번째 방법으로 해결이 되었다. 알게 된 점 html 엘리먼트끼리 연동되어 사용되는 경우가 있다는 것을 처음 알았다. 어떤 오류가 발생했을 때 단순히 해당 엘리먼트만 볼게 아니라 여러가지 가능성이 있음을 생각해야될 것이다.
- Total
- Today
- Yesterday
- 25501
- Wil
- 24313
- 4134
- 2738
- 2587
- 5597
- 13909
- 2903
- Programmers
- 백준
- 코육대
- programmer
- 26069
- MySQL
- SQL
- 17103
- 25192
- 24723
- 1269
- 13241
- 10807
- 벡준
- 항해+
- 2053
- til
- 24060
- 20920
- 항해 플러스
- Python
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |