목록전체 글 (168)
HyeLog
알고리즘 문제 풀 때, 비트마스킹을 이용해서 방문 체크를 하면 시간복잡도와 공간복잡도를 개선할 수 있다!! 어떻게 하는지 알아보자😎 1. 방문 처리 배열은 왼쪽부터 인덱스가 시작되지만, visited(= 2진수)는 오른쪽부터 인덱스가 시작된다. 따라서 1을 그 인덱스만큼 왼쪽 쉬프트(
알고리즘 문제를 풀다보면 각종 자료형에서 어떤 원소가 있는지 없는지 존재 여부를 확인하고 싶을 때가 자주 있다. 느낌상 find() 를 쓰면 될거같지만,,, 자료형마다 find() 사용법이 조금씩 달라서 헷갈릴 수 있어서 정리해본다👍 1️⃣ vector 의 find() vector 에서 사용할 find() 는 헤더에 존재하는 함수다. 사용법: find(자료형의 시작 iter, 자료형의 끝 iter, 찾고 싶은 원소) → 만약 그 원소가 존재하면, 그곳을 가리키는 iter 를 반환하고, 존재하지 않으면, ⭐vector의 끝 iter⭐ 를 반환한다. + 이걸 응용하면, find(v.begin(), v.end(), 찾을 원소) - v.begin() 이렇게 찾을 원소의 인덱스도 알아낼 수 있다🙌 // #incl..
2주차 미션부터는 ✨깃허브 리드미✨에 정리했다. (아래 링크 참고) https://github.com/shj718/django_rest_framework_17th GitHub - shj718/django_rest_framework_17th: CEOS 17th Backend DRF Study CEOS 17th Backend DRF Study. Contribute to shj718/django_rest_framework_17th development by creating an account on GitHub. github.com

리픽을 개발하면서 카카오톡 알림톡 전송 기능을 구현하려고 했는데, 아직 사업자 등록을 완료하지 않아서 해당 기능은 개발할 수 없게 되었다.. 그래서 문자 전송이라도 해보기로 했다!! 🌈 네이버 SENS (Naver Simple & Easy Notification Service) 네이버 클라우드 플랫폼의 SENS 는 문자 전송 API 를 제공하고 있다. 참고로 2023년 7월말 기준, 이용료(SMS 기준)는 50건까지는 무료이고 그 이후에는 건당 9원이다. 🌈 사전 준비 사항 1. 먼저, 네이버 클라우드 플랫폼에서 회원가입을 진행한 후에 마이페이지 > 계정 관리 > 인증키 관리 로 들어간다. 여기서 신규 API 인증키 생성 을 선택해서 ✨Access Key, Secret Key✨를 발급 받자. (Acces..

이번 프로젝트에서 최신순 / 가격낮은순 / 가격높은순 으로 카테고리의 전체 상품을 보여주는 기능을 구현하게 되었다. 따라서, 페이징 처리를 해야 했는데, 기존에 자주 쓰이던 offset 과 limit 을 사용한 페이징 방식은 속도가 느려서 서비스가 커짐에 따라 장애를 유발할 수 있음을 알게 되었다. 그래서 해당 방식보다 속도가 빠른 No Offset 페이징을 사용하여 페이징 성능을 개선해보고자 한다. 💫 페이징 종류 일반적으로 전체 아이템을 보여주는 방식에는 2가지가 있다. 첫번째는 이렇게 페이지 번호를 명시해서 해당 페이지의 아이템들만 보여주는 방식이다. 두번째는 [상품 더보기]를 누르면 다음 아이템들을 더 보여주는 방식이다. 이번 프로젝트에서는 사용할 방식은 두번째 방식이다. 💫 QueryDSL 로 ..

Spring Boot (JPA) 로 개발하던 중에 productRepository.save(product); 로 엔티티를 저장하는 과정에서 다음과 같은 에러를 마주했다. Field 'id' doesn't have a default value 엥?! 나는 분명 id 를 @GeneratedValue 로 MYSQL 에서 자동 증가되게끔 구현했는데 default value 가 왜 필요하지?? 그래서 MySQL 로 가보니... 그 테이블만 id 컬럼에 AUTO_INCREMENT 가 설정되어 있지 않다는 사실을 발견했다! 바로 AUTO_INCREMENT 만 설정하면 되겠네~ 하고 설정하려 했더니... 다음과 같은 에러를 마주했다. Cannot change column 'id': used in a foreign ke..

🌈 개발 환경 이번 프로젝트에서 이미지 파일을 Amazon S3에 업로드(저장) / 조회 / 삭제 하는 기능을 개발하게 되었다. 참고로 프론트엔드에서는 Next.js 를 사용하고, 백엔드에서는 Spring Boot 를 사용하여 개발을 진행하고 있다. 따라서 Spring Boot, Amazon S3 를 사용하여 이미지 파일을 업로드(저장)하고 다시 조회 및 삭제하는 방법에 대해 차근차근 적어보려 한다. 비슷한 환경에서 개발하는 사람들에게 도움이 되었으면 하는 마음이다! 🔥 전체적인 Flow 1. 프론트엔드에서 이미지 파일을 Form data 로 포장하여 백엔드에게 전달 2. 백엔드에서 해당 이미지를 Amazon S3 에 업로드, 업로드된 이미지 정보를 DB에 저장 3. 프론트엔드에서 이미지 조회시, 백엔드..
N+1 문제 N+1 문제란, 연관관계가 설정된 엔티티를 조회하는 1개의 쿼리에 대해 조회된 엔티티 개수(N개)만큼 그와 연관된 엔티티를 조회하는 N개의 쿼리가 추가로 발생하는 문제를 말한다. 예를 들어, 고객(Customer)과 주문(Order)이 1:N 연관관계를 맺고 있을 때 아래와 같이 주문(Order)을 조회하면, List orders = orderRepository.findAll(); 실제로 이런 쿼리가 수행되고, SELECT * FROM `Orders` orderentit0_; 위 쿼리의 결과로 N개의 레코드가 반환되었을 때 추가로 아래와 같은 쿼리가 N개 발생한다. SELECT * FROM `Customers` customeren0_ WHERE customeren0_.`customer_id`..