전체 글 338

20240516_ChatGPT 질문 만들기 + MSA 통합(1)

GPT에 어떻게 데이터를 대입할지 생각했는데일정 양식을 부여하고, 그 안에 데이터를 넣어주기로 했다.넣을 때 들어가는 데이터량을 줄여 소모되는 토큰을 줄이기 위해 DTO를 새로 구성했다. 더보기GPT용 날씨 DTOpackage org.weather;import jakarta.validation.constraints.NotNull;import lombok.Data;import java.io.Serializable;@Datapublic class WQ implements Serializable { @NotNull String category; @NotNull String fcstValue;} GPT용 미세먼지 DTOpackage org.weather;import jakarta.valid..

20240515_SpringSecurity + JJWT 적용

이전 팀프로젝트에서 작업했었던 SpringSecurity 및 JJWT를 이번에는 개인프로젝트에 적용시키기로 했다.이유1. 손쉬운 보안 작업물론 PostgreSQL에서 작업하거나, Seed 암호를 쓸 수는 있겠지만 그보다 더 쉽게 암호화 및 보안 작업이 구현 가능하다. 2. 세션을 사용하지 않아 사용자가 많은 경우에도 서버의 부담 경감 + 확장 가능성 고려 3. 소셜 로그인을 구현할 경우, 개발자 부담이 대폭 경감 4. 기타 로그인과 관련된 다양한 기능을 쉽고 빠르게 구현할 수 있음ex) 정지된 유저 처리, 유저 권한 관리, 특정 상태의 유저에 대한 로그인 조치 등 5. 공부했던 내용 복습 + 업그레이드 그래서 구현하긴 했는데...솔직히 예전에 만들었던 코드를 보고 따라 만든 부분이 많다...여전히 어렵긴..

20240515_유저 DB 조정

1. 가입일 입력//회원가입 진행Instant registerDate = Timestamp.from(Instant.now()).toInstant();createMemberData.setRegisterdate(registerDate);log.info("Create member: " + createMemberData);memberService.createMember(createMemberData); 기본값을 지정했는데 어째서인지 가입일이 입력되지를 않는다...(userid는 잘 됨)이 부분은 postgreSQL을 좀 더 공부해야 하는 부분인 것 같다  2. DB에 Country와 area 컬럼 추가VO@Size(max = 50)@NotNull@Column(name = "country", length = 50..

20240514_날씨 모듈 통합

기존의 날씨 api와 미세먼지 api를 출력하는 jsp의 정보를 하나의 jsp에서 볼 수 있도록 만들 것이다.간단히 include로 끝날 줄 알았던 작업이 비동기처리를 안 해놔서 다 해야만 했다... 전체 코드더보기통합 controllerpackage org.weather.main;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.PostMapping;import org.springframework.web.servlet.ModelAndView;@Controllerpublic clas..

20240514_미세먼지 파트 조정

1. pk 변경- 기존의 serial 형태의 pk는 데이터 insert / update를 시키는데 문제를 계속 일으켰다.- save(), saveAll()은 pk를 기준으로 데이터를 파악하는데 serial로 계속 늘어나니 계속 insert만 되었다.--> pk를 serial id에서 StationName 컬럼으로 변경했다.==> 당연히 vo과 dto도 변경 2. dto setter 변경- 기존에는 setter 단계에서 모든 변경을 한 채 전송했다.ex) grade가 1이면 좋음, 단위 붙이기 등--> grade에서 좋음 상태면 1로 취급이 안 되기 때문에 default로 넘어가는 문제 발생==> 1, 좋음 -> 좋음이 되도록 변경했다public void setPm25grade(String pm25grad..

20240513_ChatGpt Api 사용하기

내일 일이 생겨서 작업 시간이 부족할 것 같아, 오늘 Chat Gpt 작업에 들어갔다.기능은 간단하게 GPT에 질문하고 답변을 받아오는 기능이다.나중에 오늘의 날씨와 미세먼지 데이터 + 옷 데이터를 넣어서 뭘 입으면 좋을지 답변을 듣기 위한 기능이다. 전체 코드더보기DBcreate table gptAnswervo( id serial primary key, username varchar(50) not null, question VARCHAR(50000) not null, answer VARCHAR(50000) not null)  application.propertiesopenai.secret-key=**  컨트롤러package org.gpt.ask;import com.fasterxml.jackson.cor..

Foreign Key에 대하여

Foreign Key- 특정 칼럼(들)의 값이 다른 테이블의 특정 row와 매칭되어야 하는 제약 조건--> 매칭되지 않으면 생성될 수 없기 때문에 두 테이블 사이에 참조 무결성을 유지할 수 있음 Foreign Key의 장점- 데이터 무결성- 쉬운 데이터 구조 및 관계 확인- update, delete 등의 로직 간소화 Foreign Key의 단점- 참조 테이블들을 스캔할 때 드는 추가 코스트(insert / update)- 테이블 구조 변경 시 고려해야 할 사항 증가- 데이터 변경이 잦을 때 코스트 증가- 테스트의 번거로움 이에 대해 여러 의견을 살펴보았다. O Foreign Key 사용을 지향해야 한다- 성능이 느려지는 문제(특히 대량의 데이터 로딩)는, 로딩 전에 Foreign Key 를 disabl..

이해 2024.05.12

20240512_미세먼지 데이터

날씨 데이터에 이어서 미세먼지 데이터를 출력하는 작업을 시작했다 https://www.data.go.kr/iim/api/selectAPIAcountView.do 공공데이터포털 통합 로그인공공데이터포털 로그인 국민과 함께 하는 공공데이터포털에 오신 것을 환영합니다auth.data.go.kr 해당 api 중 "시도별 실시간 측정정보 조회 상세기능명세"를 사용했다. 기본적인 데이터 출력 상태더보기{"so2Grade":"1","coFlag":null,"khaiValue":"98","so2Value":"0.003","coValue":"0.4","pm25Flag":null,"pm10Flag":null, "o3Grade":"2","pm10Value":"30","khaiGrade":"2","pm25Value":"12"..