분류 전체보기


🧑🏻💻 하루코딩 님의 Do it! 알고리즘 코딩테스트 강의(인프런)를 듣고 정리한 내용입니다. 01. 알고리즘 선택의 기준이 되는 시간 복잡도 ➡️ 알고리즘에서 시간 복잡도는 주어진 문제를 해결하기 위한 연산 횟수를 의미한다. ➡️ 일반적으로 수행 시간은 1억 번의 연산을 1초의 시간으로 간주하여 예측한다. (만약 시간제한이 2초라면 2억 연산 안에 답이 나와아한다는 것) ✔️ 시간 복잡도 유형 빅-오메가(Ω(n)) : 최선일 때의 연산 횟수를 나타내는 표기법 빅-세타(Θ(n)) : 보통일 때의 연산 횟수를 나타내는 표기법 빅-오(O(n)) : 최악일 때의 연산 횟수를 나타내는 표기법 ※ 실제 코딩 테스트에서 염두해야 할 표기법은? 빅-오(O(n)) → 다양한 테스트 케이스를 수행해 모든 케이스를 통과..

🧑🏻💻 비밀번호 재설정 테스트 중 발생한 에러 로그 1. Could not autowire. No beans of 'JavaMailSender' type found. ❓ 의존성을 추가하고 yml 작성 후 아래와 같이 필드를 선언하는 데 자꾸 빨간줄이 나타났다. 뭐가 문제인지 찾아보니 대체적으로 yml 설정을 잘못해서 난 에러라고 한다. yml 파일을 몇 번이고 살펴봤지만 딱히 빨갛게 에러도 안 뜨고 gpt에게도 물어봤지만 딱히 좋은 답변도 주지 않아 이걸로 초반에 한참을 시간을 잡아 먹었던 것 같다. 뭔가 문법이 틀린 것 같긴 했는데 도통 그 문제를 찾지를 못했다. 그러다 찾은 문제! 실제로 spring.mail. 이런 식으로 시작되어야 맞는 것인데 내가 띄어쓰기를 하지 않고 딱 붙여 썼으니 yml에 ..


🧑🏻💻 비밀번호 재설정을 위한 이메일 보내기 구현 1 본격적인 구현에 앞서 STMP가 무엇인지 어떻게 작동하는 것인지 알기 위해 테스트를 해봤다. 💡STMP(Simple Mail Transfer Protocol)란? ➡️ 인터넷에서 이메일을 전송하는 데 사용되는 표준 프로토콜이다. 이 프로토콜은 서로 다른 이메일 시스템 간의 메세지 전달 및 중계를 가능하게 하며 TCP/IP를 기반으로 동작한다. ➡️ 전자 우편 서버 간의 통신을 위한 핵심 프로토콜이라고 할 수 있다. ✔️ 테스트 시작에 앞서 기본적으로 해줘야 할 의존성 추가 (나는 gradle을 사용하기 때문에 아래와 같이 추가했다.) implementation 'org.springframework.boot:spring-boot-starter-mail..


🧑🏻💻 메인 프로젝트가 시작한지 벌써 일주일하고 하루가 지났다. 간단한 시작 후기와 함께 첫 멘토링에 대한 기록 남기기. ✔️ 메인 프로젝트의 시작! 메인 프로젝트는 마음 맞는 사람들과 미리 팀을 꾸려도 된다기에 프리 프로젝트가 끝나자마자 바쁘게 움직였다. 프리 때 같이 협업했었던 프론트엔드 분께 연락을 드려서 같이 팀을 꾸리게 되었고 그분이 구해오신 두 분, 그리고 내가 구한 두 분이 모여 팀이 완성되었다. 화기애애하지만 어색했던 첫 시작은 뒤로 하고 메인 프로젝트는 어설펐던 프리 프로젝트와는 다르게 완성도 있는 결과물을 내기 위한 열정적인 회의가 계속 지속됐다. 프론트 중 한 분이 경험이 있어 잘 끌어주긴 했지만 아이디어가 쉽게 모이지는 않았다. 아무래도 다들 기획은 해본 적이 없던 터라 더 그랬던..


프로젝트 소개 프로젝트 명 : 스택오버플로우 클론 코딩 기간 : 2023.08.04 ~ 2023.08.23 ✔️ 깃허브 주소 : https://github.com/codestates-seb/seb45_pre_019 GitHub - codestates-seb/seb45_pre_019 Contribute to codestates-seb/seb45_pre_019 development by creating an account on GitHub. github.com 드디어 첫 프로젝트가 끝이 났다. (물론 끝난 게 끝난 게 아님을... 리팩토링 하자) 시작 전에는 클론 코딩이라는 얘기를 듣긴 했지만 과연 내가 잘 해낼 수 있을까 하는 의문이 가득 했는데 다행스럽게도 맡은 바 역할은 잘 해낸 것 같아서 그나마 안도..

🧑🏻💻 pre-project를 진행하다 사용한 @Query에 대한 정리 ❓ JPA에서 검색 기능을 구현하기 위해 어떤 방식으로 Repository에서 쿼리 메서드를 만들어야 하나 찾아보다가 동적 쿼리에서는 @Query 어노테이션이 유용하게 쓰인다는 것을 알게 되었고 발견한 어노테이션을 사용하고 알게된 내용들을 정리하기로 했다. 💡 @Query Spring Data JPA에서 사용하는 어노테이션, JPQL 쿼리를 직접 정의할 때 사용되며 복잡한 쿼리나 특수한 조건을 처리할 수 있다. JPQL(Java Persistence Query Language) : 테이블이 아닌 엔티티 객체를 대상으로 검색하는 객체지향 쿼리 동적 쿼리 외에도 아래와 같은 상황에서 유용하게 쓰인다고 한다. 복잡한 쿼리 : 기본 메서드..

🧑🏻💻 pre-project를 진행하다가 만난 에러와 새롭게 알게된 것들에 대한 정리 ❓ 문제 상황 게시글 전체 조회 API를 만들고 Postman으로 호출을 했는데 호출 결과가 "406, Acceptable" 로 나왔다. ✔️ 결과 HTTP (HyperText Transfer Protocol) 406 Not Acceptable 클라이언트 오류 응답 코드는 서버가 요청의 사전 콘텐츠 협상 헤더에 정의 된 허용 가능한 값 목록과 일치하는 응답을 생성 할 수 없으며 서버가 기본 표현을 제공하지 않음을 나타냅니다. 찾아본 결과 위와 같은 문제 때문에 나타나는 에러인데 좀 더 자세하게 설명을 해보자면 Accept 등의 헤더에 적혀있는 형식을 생성해 낼 수 없을 때 발생하는 에러라는 것이다. 즉, Spring에..


🧑🏻💻 to-do App 프로젝트 ✔️ ToDoService 중 update 부분 → 기존에 저장된 데이터를 가져와 내용, 순서, 완료여부를 수정할 수 있도록 구현했다. 하지만 막상 실행하고 수정해 보니 수정되는 값을 제외하고 디폴트 초기값으로 변경되는 것이었다. ✔️ Postman으로 todo를 등록하고 수정한 모습 → 처음에는 수정되는 값과 id를 제외하고 다 디폴트 초기값으로 변경된다고 생각했는데 디버깅을 통해 유일한 int 타입인 todoOrder 에서의 문제인 것을 알게 되었다. → 뭐가 문제인지를 모르겠어서 디버깅을 몇 번이나 돌려보고 수업 진행 시 받았던 solution 코드에서 비슷한 부분을 찾아 또 다시 디버깅을 돌려본 결과 유일한 차이점이 타입이라는 것을 알아냈다. 그리고 Option..


💡 @Id ➡️ JPA 엔티티 객체의 식별자, 데이터베이스 테이블의 기본 키와 객체의 필드를 매핑시켜주는 어노테이션이다. ➡️ @Id만 사용할 경우 기본 키를 직접 할당해 주어야 하지만 대신 데이터베이스가 생성해 주는 값을 사용하려면 @GeneratedValue를 사용하면 된다. 💡 GeneratedValue ➡️ 기본 키를 자동 생성해 주는 어노테이션이다. 속성으로는 strategy(전략)가 있으며 이를 통해 자동 생성 전략을 지정해 줄 수 있다. ➡️ 자동 생성 전략은 총 네 가지가 존재한다. ✔️ IDENTITY @GeneratedValue(strategy = GeneratedType.IDENTITY) Indicates that the persistence provider must assign pr..