분류 전체보기 238

[Spring] OpenFeign 사용해보기

💡 OpenFeign이란?Netflix에 의해 처음 만들어진 Declarative(선언적인) HTTP Client 도구로써, 외부 API 호출을 쉽게할 수 있도록 도와준다. Open Feign은 인터페이스에 어노테이션들만 붙여주면 구현이 된다. 이러한 방식은 Spring Data JPA와 유사하며, 상당히 편리하게 개발을 할 수 있도록 도와준다.라이브러리 추가ext { set('springCloudVersion', "2023.0.1")}dependencyManagement { imports { mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}" }}dependencies { ..

*/Spring 2024.05.22

[Spring] JPA 엔티티 생성 시 생겼던 문제들 (식별관계 문제)

📍 EnjoyTrip 프로젝트에서 엔티티를 만들 때 생겼던 문제 기록 우선 나는 계속 안드로이드 개발 + 짜잘한 것만 깔짝깔짝 대다가.. 백엔드 개발을 한지 얼마 안 된 상태였다.첫 프로젝트에서는 다른 팀원분께서 엔티티를 만들었고, 나는 JPA를 익히는데 더 집중해서 개발을 했다. 이 프로젝트에서는 기존 ㅆrㅍi에서 준 Dump 파일이 이미 존재했고, MyBatis를 이용하여 프로젝트를 진행하면 됐는데,우리는 어차피 2학기 때 JPA를 쓸 것이기 때문에 미리 연습해보자. 라는 취지로 JPA로 프로젝트를 바꿔서 진행했다.따라서 엔티티를 만들어야 했는데, 그것을 내가 하기로 했다. 이땐 처음이라 연관관계 설정하는게 어려웠다.특히나 ㅆrㅍi에서 준 Dump 파일을 그대로 넣고 + 우리의 커스텀 기능을 만들어..

*/Spring 2024.03.17

Gitlab + Docker + Jenkins 이용한 스프링부트, 리액트 프로젝트 CI/CD

EC2 접속 ssh -i ./pem키 ubuntu@ec2주소 권한 오류가 뜬다면? Permission denied (publickey) chmod 400 pem키 Docker 설치 오래된 버전 삭제 sudo apt-get remove docker docker-engine docker.io containerd runc Repository 설정 sudo apt-get update sudo apt-get install ca-certificates curl gnupg lsb-release curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg..

Etc 2024.02.25

Docker를 이용하여 Spring Boot 배포해보기

| 실습 환경: MacOS, M1 🐳 Docker란? 로컬에서 서버에 올릴 때 문제 발생 ⇒ 도커 탄생! 각종 디펜던시 설정의 번거로움 디펜던시들의 버전 불일치 문제 애플리케이션을 패키징 할 수 있는 툴 컨테이너에 애플리케이션 + 시스템 툴 + 환경 설정 + 디펜던시를 하나로 묶어 어디에서나 쉽게 배포하고 안정적인 구동을 도와준다. 구성 요소 Dockerfile - 컨테이너를 어떻게 만들어야 하는지에 대한 설명서 Image - 애플리케이션을 실행하는데 필요한 코드, 런타임, 환경, 시스템 툴, 시스템 라이브러리 등이 포함 Container - Image를 고립된 환경에서 개별적인 시스템 안에서 실행할 수 있는 공간 🔌 배포 실습 1. Docker 설치 https://www.docker.com/produc..

Etc 2023.12.30

[MySQL] 프로시저

저장 프로시저(Stored Procedure)란? 일련의 SQL문장을 선언해서 MySQL에 저장하고, 해당 SQL문을 함수처럼 사용하는것으로 만들어 두기만 하면 함수처럼 호출하여 편하게 사용할 수 있다. 장점 하나의 프로시저로 여러 SQL문의 실행이 가능하다. (모듈화) 호스팅 언어와 SQL문이 분리되어 보수가 용이하다. 네트워크 소요 시간을 줄일 수 있다. (구문 분석 및 코드 변환을 미리 진행하여 처리 시간이 단축됨) 단점 재사용성이 낮다. (DB 버전 별 구문 규칙과 호환성이 다름) 처리 성능이 좋지않다. (MySQL 스토어드의 프로그램 처리 성능이 낮다) 실습 1. 테이블 생성 2. 프로시저 생성 delimiter $$ create procedure 이름 (매개변수) begin # SQL문 end..

Etc 2023.12.30

Java 통신 인터페이스 실습

| 실습 환경: Spring Boot 3.2.1 / Java 17 / Gradle 1. HttpURLConnection 실습 ❓ HttpURLConnection HTTP와 관련된 기능을 지원하는 URLConnection URLConnection은 Java 애플리케이션과 URL 간의 연결 관련한 모든 클래스의 수퍼 클래스 Spring 같은 프레임워크 없이도 사용이 가능하다는 장점! 🔌 코드 private String baseUrl = "https://dapi.kakao.com/v2/local/search/keyword.JSON"; private String header = "Authorization"; @GetMapping("/http-url-connection") public JSONObject http..

*/Spring 2023.12.30

[AWS] EC2 스프링 부트 배포 중 트러블슈팅 기록

1️⃣ GitHub를 통해 프로젝트 코드 가져올 때 SSH Key를 생성해서 깃허브에 등록한 후 클론 과정에서 문제 발생원인: 사용자의 PC에서 해당 폴더에 대한 접근 권한이 없어서 발생하는 에러해결: 1) 권한 변경 -> 실패         2) sudo 붙여서 실행 -> 실패         3) web url 이용 -> 실패         4) sudo 붙여서 web url 이용 -> 성공대신 이렇게 하니 pull은 안 됐다🥲 수정 사항 있으면 파일 지우고 다시 클론하고 반복함 ㅜㅜ  2️⃣ ec2 접속 오류 (집에선 됐는데 밖에 나가니 안 됐다)원인: IP가 바껴서 생기는 오류라고 생각해서해결: 보안 그룹에서 인바운드 규칙 편집해서 ssh 포트 추가로 열어줬다.  3️⃣ gradlew 작동 에러 ..

Etc 2023.06.26

백준 21921: 블로그 (Python)

https://www.acmicpc.net/problem/21921 21921번: 블로그 첫째 줄에 $X$일 동안 가장 많이 들어온 방문자 수를 출력한다. 만약 최대 방문자 수가 0명이라면 SAD를 출력한다. 만약 최대 방문자 수가 0명이 아닌 경우 둘째 줄에 기간이 몇 개 있는지 출력한다 www.acmicpc.net 투 포인터 이용 n, x = map(int, input().split()) visitors = list(map(int, input().split())) i = j = 0 temp = result = 0 cnt = 0 for i in range(n): # 끝 포인터 이동 while j-i < x and j < n: temp += visitors[j] j += 1 # x일 if j-i == x..

알고리즘/백준 2023.06.15

투 포인터 (Two Pointers)

투 포인터 리스트에 순차적으로 접근해야 할 때 2개의 점 위치를 기록하면서 처리 특정한 합을 가지는 부분 연속 수열 찾기 * 기본적으로 시작점을 오른쪽으로 이동시키면 항상 합이 감소하고, 끝점을 오른쪽으로 이동시키면 항상 합이 증가하기 때문에 투 포인터 알고리즘으로 해결할 수 있다. * 리스트 내 원소에 음수 데이터가 포함되어 있는 경우, 투 포인터 알고리즘으로 해결할 수 없다. n = 5 # 데이터의 개수 m = 5 # 찾고자 하는 부분합 data = [1, 2, 3, 2, 5] # 전체 수열 count = 0 interval_sum = 0 end = 0 # start를 차례대로 증가시키며 반복 for start in range(n): # end를 가능한 만큼 이동시키기 while interval_su..

알고리즘/정리 2023.06.13