프로젝트

    Chat GPT 활용 서비스 구현하기 - 7. 회고

    2023.04.29 - [프로젝트] - Chat GPT 활용 서비스 구현하기 - 1. 설계하기 2023.05.02 - [프로젝트] - Chat GPT 활용 서비스 구현하기 - 2. Open AI API 연동하기 2023.05.02 - [프로젝트] - Chat GPT 활용 서비스 구현하기 - 3. Open AI API 연동하기 ver2. 2023.05.04 - [프로젝트] - Chat GPT 활용 서비스 구현하기 - 4. 데이터 저장하기 2023.05.05 - [프로젝트] - Chat GPT 활용 서비스 구현하기 - 5. 메일로 전송하기 2023.05.06 - [프로젝트] - Chat GPT 활용 서비스 구현하기 - 6. 스케쥴러 Chat GPT 활용 면접 질문 메일링 서비스 포스팅을 마치면서 프로젝트 회..

    Chat GPT 활용 서비스 구현하기 - 6. 스케쥴러

    주기적으로 유저에게 메일을 보내보자 지난 시간동안 면접 질문을 chatGPT에 요청에 만들어 저장하고 이를 사용자에게 메일로 전송하는 로직을 완성했다. 이제 이 로직들을 호출하는 주체가 필요한데 추가적인 요구사항으로 주기적으로 작업을 수행해야한다. 이를 위해, Scheduler를 사용하자. Spring은 Spring Scheduler와 Spring Quartz를 지원한다. 둘다 스케쥴링할 수 있게 도와주는데 그 차이를 먼저 알아보자. Spring Scheduler Spring-boot-starter 에 기본으로 있기 때문에 추가적인 의존성이 필요 없음 스케쥴링할 메서드는 void type이어야 하고 파라미터를 가질 수 없음 1개의 스레드에서 수행되므로 1개의 작업이 끝나지 않으면 다음 작업은 수행되지 않..

    Chat GPT 활용 서비스 구현하기 - 5. 메일로 전송하기

    오늘은 지난 시간에 저장한 질문들을 메일로 전송해보자. Spring Boot의 메일 전송 라이브러리는 여러 가지가 있지만 spring-boot-starter-mail 의존성을 설치하고 JavaMailSender 인터페이스를 사용해 빠르게 개발하자. 서드 파티 라이브러리들이 있지만 메일 전송에 있어서 큰 차이가 없는 것 같고 JavaMailSender는 Spring에서 제공하는 API이기 때문에 서드 파티 라이브러리를 사용할 필요가 없다. JavaMailSender MIME 메시지를 전송할 수도 있고 SimpleMail을 전송할 수도 있다. 이 프로젝트에서는 MIME을 사용해 첨부파일을 사용하거나 HTML을 전송하지는 않을 것이기 때문에 SimpleMail을 사용하자. 메일 SMTP 서버는 Gmail의 S..

    Chat GPT 활용 서비스 구현하기 - 4. 데이터 저장하기

    2023.04.29 - [프로젝트] - Chat GPT 활용 서비스 구현하기 - 1. 설계하기 2023.05.02 - [프로젝트] - Chat GPT 활용 서비스 구현하기 - 2. Open AI API 연동하기 2023.05.02 - [프로젝트] - Chat GPT 활용 서비스 구현하기 - 3. Open AI API 연동하기 ver2. 분석된 키워드를 기반으로 데이터베이스에 저장하기 지난 시간에 개발한 키워드 분석을 통해 추출한 질문과 키워드를 MySQL에 저장해보자. ERD는 다음과 같이 설계했다. Open AI API의 반환 결과는 저번 시간에 본 것처럼 카테고리 별, 질문 별 키워드로 구성되어 있다. [ { "category": "DB", "questions": [ { "question": "Dat..

    Chat GPT 활용 서비스 구현하기 - 3. Open AI API 연동하기 ver2.

    지난 시간에 이어서 이제는 chatGPT로 부터 가져온 데이터에 대해 키워드 분석을 진행해보자 코드를 작성하고 좀 알아보다 보니 카카오 키워드 분석 API가 유료라는 사실을 알게됐다. 나는 돈이 없으니 가능한 다른 방법을 찾아보자. 그리고 좀 생각해보니까 chatGPT도 키워드 분석을 해준다!! 하는 수 없이 개발 편의성을 위해 변경에 용이하지 않더라도 Keyword Extractor를 제거하고 Question Generator에서 키워드 분석까지 진행하도록 변경했다. 아래의 이미지는 기존에 내가 설계했던 클래스 다이어그램이다. 비록, Keyword Extractor가 Question Generator와 합쳐져 변경이 어려운 객체지향적이지 않은 코드가 되겠지만 일단 빠르게 개발을 하기 위해 이렇게 진행하..

    Chat GPT 활용 서비스 구현하기 - 2. Open AI API 연동하기

    지난 시간에 이어서 면접 질문을 메일로 전달해주는 서비스를 만들어본다. 면접 질문 목록으로는 인터넷에 떠돌아 다니는 것을 크롤링하는 것보다 요즘 핫한 Chat GPT를 활용하면 더 재밌을 것 같아 이를 활용한다. 지난 시간에 소개한 프로젝트 진행 흐름이다. 이 중에서 오늘은 2-1 을 진행한다. 면접 질문을 Chat GPT(Open AI)로부터 가져와야 한다. 이를 위해 Open AI API를 사용한다. 1. Open AI API 키 발급 받기 API 키 발급 링크를 통해 API 키를 발급 받을 수 있다. 발급 받은 API 키를 yaml 파일에 적용시킨다. yaml 파일 예시 openai: api-key: ***********OPEN-AI-API-KEY*********** 2. API 호출하기 API 호..

    Chat GPT 활용 서비스 구현하기 - 1. 설계하기

    2023.04.29 - [프로젝트] - Chat GPT 활용 서비스 구현하기 - 1. 설계하기 2023.05.02 - [프로젝트] - Chat GPT 활용 서비스 구현하기 - 2. Open AI API 연동하기 2023.05.02 - [프로젝트] - Chat GPT 활용 서비스 구현하기 - 3. Open AI API 연동하기 ver2. 2023.05.04 - [프로젝트] - Chat GPT 활용 서비스 구현하기 - 4. 데이터 저장하기 2023.05.05 - [프로젝트] - Chat GPT 활용 서비스 구현하기 - 5. 메일로 전송하기 2023.05.06 - [프로젝트] - Chat GPT 활용 서비스 구현하기 - 6. 스케쥴러 2023.05.06 - [프로젝트] - Chat GPT 활용 서비스 구현하기..

    당근마켓 클론코딩 - 1. 인접 동 조회 기능 구현하기

    생각한 사항 당근마켓의 내 주변 동네 범위 설정 로직은 어떻게 구현되어 있을까? 추측해보자 주민 센터의 위치 좌표에 대해 거리의 크기 기준으로 단계별 설정 BFS 알고리즘을 통한 인접 동 탐색 대중 교통의 소요 시간을 기준으로 가까운 순으로 단계별 설정 일단, 1단계는 이름이 같은 것 기준(포함 관계) ex) 삼성 1동 → 삼성동 결론 완벽히 해결하진 못했지만 기사를 통해 2~6km 반경의 동네 범위를 기준으로 탐색한다고 하는 사실을 알게됨 우리는 거리 기준으로 검색을 수행하도록 결정함 어차피 인접 동네는 잘 변하지 않는 데이터이므로 MySQL에서 거리 기준으로 검색을 통해 인접 동네 리스트를 생성하여 MongoDB에 저장하면 1번의 계산 로직을 수행하여 인접 동네가 변하는 순간까지 계속 조회할 수 있다..