[Spring Boot] 스프링부트 GCP 배포하기 (Google Cloud Platform)
·
🍏 Spring Boot
오늘은 지금까지 만든 스프링 프로젝트를 구글 클라우드 플랫폼, GCP를 통해 배포해 보려고 한다.구글 클라우드에서는 처음에 무료 크레딧을 주니 받아두면 좋다 https://cloud.google.com/free?gad_campaignid=17391149414&gad_source=1&gclid=Cj0KCQjwrPHABhCIARIsAFW2XBMd2UVlP5tGn22-5a-lcaOyilfwxbVdmR02FDEhIsZM1g52ICnGm-AaAnjOEALw_wcB&gclsrc=aw.ds&hl=ko&userloc_9213263-network_g=&utm_campaign=japac-KR-all-ko-dr-BKWS-all-cloud-trial-PHR-dr-1710102&utm_content=text-ad-none-n..
[Spring Boot] @Value 어노테이션 오류 / application.yml 값 인식 실패
·
🍏 Spring Boot
제목 그대로... 이러한 빨간 줄이 계속 발생했다. @Value 어노테이션을 붙이고, application.yml에ai: api: url: https://이렇게 설정까지 했는데 읽어오기는 커녕계속 이렇게 static Constructor을 더하라고 경고문이 떴다.그래서 public AnalyzeService(@Value("${ai.api.url}") String fastApiUrl, WebClient.Builder builder) { this.webClient = builder.baseUrl(fastApiUrl).build(); }이런 것도 사용해 보고... 먼저 인젝션을 해 주려고 했는데 여전히 같은 오류가 떴다.@PostConstruct를 쓰는 방법도 있었지만전에 그걸 사용했..
[Spring Boot] Gemini API, Vision API, Vertex AI와 Spring Boot 연결
·
🍏 Spring Boot
다소 제목이 거창하지만구글에 자료가 너무 없어서 챗지피티를 질질 붙잡고 몇 시간 만에 해결했다...우선 내가 구성한 프로젝트의 흐름은Vision api 불러서 ocr 기능으로 카페 메뉴판 인식-> 추출된 메뉴 중 사용자에게 맞는 음료 추천을 위해 Gemini api 호출이때 Gemini를 호출하는 건 단순히 지정된 프롬프트 형식(이 중에 당이 가장 낮은 / 적절한 메뉴를 추천해 줘)였기 때문에 단순히 Gemini만 부르면 된다고 생각했다 그런데 계속되는 404 not found 알고 보니 Gemini pro, 즉 지금 사용되고 있는 모델을 호출하려면Vertex ai도 필수로 사용해야 된다고 한다 (거쳐서 호출하나봄)내가 모델을 만드는 건 아니라 필요없을 줄 알았는데 이상한 데서 뒤통수 맞음원래는 Visi..
[Spring Boot] Firebase & Google OAuth2 로그인 / 액세스 차단 문제 해결
·
🍏 Spring Boot
파이어베이스와 연동해서 구글 로그인 하면 자동으로 저장이 되는 로직을 짰고잘 저장이 됐었는데코드 살짝 바꿨다고 승인 오류가 나기 시작했다. (이걸 고칠 생각을 못 함) 포스트맨으로 테스트하던 중 나타난401 invalid_client 오류 브라우저로 접속해 봐도 내용은 똑같았다. 유효하지 않은 사용자라는 응답... 알고 보니 이 부분은내가 깃 문제 때문에 브랜치를 한번 바꾸면서인텔리제이의 새 프로젝트에 환경변수 지정하는 걸 깜빡했다.application.yml에는 넣었으면서 ...어쨌든 환경변수 추가했다. 이렇게 첫 번째 오류 해결.근데 이제 계정 선택을 하는데, 다음 화면으로 넘어가질 않았다. 계속 구글 계정 선택 화면만 맴돌 뿐...파이어베이스에도 유저 저장이 아예 안 되고 있었던 걸 보아그 로직으..
[Git] 깃허브 커밋 메시지 규칙
·
🦖 Git
불과 한 달 전까지 나는 깃허브에 커밋할 때 내 마음대로 커밋 메시지를 쓰곤 했다... (ex: user 로직 수정, 폴더 이동) 이렇게 쓰다보니 나는 편한데 나중에 프로젝트 정리하려고 보니까 뒤죽박죽 예쁘지도 않고그래서 요즘은 커밋 메시지 규칙에 따라 작성 중이다! 보기 훨씬 편하고 통일감 있어서 좋다(근데 다시 읽다보니 나는 제목 첫 글자를 소문자로 작성해서 앞으로 유의해야겠다...) 🔥 커밋 메시지 구조기본 커밋 메시지 구조는 제목, 본문, 꼬리말 세가지 파트로 나누고, 각 파트는 빈 줄을 두어 구분한다 🔥 커밋 메시지 작성 기본 7가지 규칙제목과 본문을 한 줄 띄워서 구분 제목은 영문 기준 50자 이하 첫 글자는 대문자로 작성제목 끝에 마침표 X제목은 명령문으로 사용 본문의 각 행은 영문 ..
[Spring Boot] Google OAuth2 로그인 설정
·
🍏 Spring Boot
오늘은 스프링부트에서 구글 oauth2 로그인 설정하는 법을 적어보려고 한다! 🍞 구글 콘솔 설정우선 구글 클라우드 콘솔에 접속해 준다. https://console.cloud.google.com/welcome?invt=AbuvCw&organizationId=0 Google 클라우드 플랫폼로그인 Google 클라우드 플랫폼으로 이동accounts.google.com 여기서 프로젝트 선택 -> 새 프로젝트 생성 을 하고구글 로그인을 위한 프로젝트를 하나 만든다. 왼쪽 메뉴를 열고 api 및 서비스 -> 사용자 인증 정보 -> 동의 화면 구성을 클릭!그럼 아무것도 없다고 뜰 텐데 생성을 해 준다.앱 정보에는 간단하게 이름이랑 내 이메일 선택하면 되고다음 대상은 외부로 해 준다!그 다음도 내 이메일 입력..
[Spring Boot] Google Firebase와 Spring Boot 연결
·
🍏 Spring Boot
오늘은 구글의 파이어베이스를 사용해 보려고 한다.https://console.firebase.google.com/u/0/ 🔥Google Firebase 프로젝트 생성구글 파이어베이스 콘솔에 접속해서 Firebase 프로젝트를 만들어 준다. 방법은 생각보다 더 간단했다. 내 프로젝트 이름을 작성해 주고, 약관에 동의해 주면 된다.나는 그냥 다 체크체크 했다 그리고 애널리틱스 위치는 대한민국으로 설정해 주고마지막 프로젝트 만들기를 클릭하면 이제 여기서 프로젝트 설정 -> 서비스 계정에 들어간다. 그러면 이렇게 새 비공개 키 생성이 뜨는데 나는 자바를 사용해서 자바로 바꿨다. 그리고 버튼을 누르면 .json 파일이 자동으로 다운로드 된다. 🔥Spring Boot와 Firebase 연결그리고 이제 스프..
[Spring Boot] @RestController와 @Controller의 차이
·
🍏 Spring Boot
이 글을 작성하는 이유계속 404가 뜨던 요청이 @Controller에서 @RestController을 붙이자마자 해결된 것이다도대체 왜일까 내 10시간을 어디에 바친 것인가그러나 이 모든 것은 내 무지에서 출발하였다...한바탕 데이고 알아보는 두 어노테이션의 차이점. ✴️ @Controller ?컨트롤러는 애플리케이션을 구성하는 핵심 요소 중 하나로, URI와 매핑하여 클라이언트의 요청에 알맞은 응답을 반환하는 곳이다.Spring의 @Controller 어노테이션은 View를 반환한다. ✴️ @RestController ?Controller 앞에 Rest가 붙은 이 RestController는 @Controller + @ResponseBody 의 개념이라고 한다.그래서 @RestController 어노..
Google Search Console (구글 서치 콘솔) 사용법
·
🦕 etc
구글에 아무리 쳐도 내 게시물이 안 나온다는 것을 깨닫고...티스토리를 좀 더 본격적으로, 꾸준히 이용하고 싶은 마음에 'Google Search Console'을 사용해보기로 했다 🔷 Google Search Console이란? Google에서 무료로 제공하는 도구인 Search Console은 웹사이트 소유자가 Google 검색에서의 실적을 파악하고, Google 검색에서 표시되는 방식을 개선하기 위해 무엇을 할 수 있는지 이해하여 관련성이 높은 트래픽을 웹사이트로 유도하는 데 도움을 준다.Search Console에서는 Google의 웹사이트 크롤링, 색인 생성, 게재 방법에 관한 정보를 제공한다. 이를 통해 웹사이트 소유자는 Google 검색 실적을 모니터링하고 최적화할 수 있다. 실적 보고서:..
[mysql] 서버와 데이터베이스의 시간대 차이 문제 / UTC, serverTimezone
·
🦎 프로그래밍
rds 로 연결한 mysql 테이블의 데이터 값을 보다 보니현재 시간과 다른 것을 발견했다. 이유를 알아보니 서버와 데이터베이스의 시간대(timezone)가 달랐다. MySQL 서버의 시간대 확인 다음 sql 문을 통해 mysql 서버의 시간대를 확인할 수 있다. SELECT @@global.time_zone, @@session.time_zone;  그럼 이런 결과를 받게 되었는데@@global.time_zone@@session.time_zoneUTCUTC한국(Seoul) 시간은 UTC+9이므로, 저장 시점보다 9시간 빠르게 저장되고 있던 것이다. Spring Boot와 MySQL 시간대 맞추기 시간대를 맞추는 방법은 여러 가지가 있는데 우선1️⃣ MySQL 시간대를 Asia/Seoul로 변경 SETGL..