전체 글 42

우아한 테크코스 7기 프리코스 1주차 회고

https://github.com/woowacourse-precourse/java-calculator-7/pull/275 [문자열 덧셈 계산기] 최인호 과제 제출합니다. by inhooo00 · Pull Request #275 · woowacourse-precourse/java-cajava-calculator-precourse 구현할 기능 목록 입력 게임 시작 메시지 출력 문자열 입력 출력 덧셈 결과 출력 기능 "//"와 "\n" 사이에 위치하는 문자를 커스텀 구분자로 설정 구분자 기준으로 문자열 분리github.com 일주일이라는 시간이 굉장히 빠르게 지나갔네요..시험 공부하랴 프리코스하랴 정신 없었던 주였습니다. 항상 시험 기간에는 시험 공부만 했었기에, 두 개를 동시에 하는 색다른 경험을 할 수 있..

[SpringBoot] Spring Boot로 REST API 만들기

REST API 란?REST : Representational State Transfer 의 약자로 '네트워크에서 통신을 구성할 때 이런 구조로 설계하라는 지침' 정도로 볼 수 있다.API : Application Programming Interface 의 약자로 응용 프로그램 프로그래밍 인터페이스를 뜻한다. 프로그램을 작성하기 위한 일련의 부프로그램, 프로토콜 등을 정의하여 상호 작용을 하기위한 인터페이스 사양을 말한다.REST API : API는 주로 프로그램 내부 단에서 이루어진다. 하지만 보다 다양한 분야에 쓰일수 있도록 '네트워크'와 '웹'에 맞춰진 API 통신 아키텍쳐가 등장했한것이 REST API이다. 주로 웹 API 쪽에서 사용된다. 웹 API = REST API 라고 봐도 볼 수있다.현실..

springboot 2024.09.28

[SpringBoot] IoC/DI 가 뭘까?

IOC(Inversion of Control)란?지금까지 자바 코드를 작성해 객체를 생성할 때는 객체가 필요한 곳에서 직접 생성했다. 다음을 보면 B 객체를 사용하기 위해 클래스 A에서 객체를 직접 생성한다.제어의 역전은 다른 객체를 직접 생성하거나 제어하는 것이 아니라 외부에서 관리하는 객체를 가져와 사용하는 것을 말한다.이 말도 듣기에는 어렵게 들릴 수 있는데. 코드를 보면 훨씬 이해가 쉽다. 방금 본 위 예제에 제어의 역전을 적용하면 다음과 같이 코드의 형태로 바뀐다.이전과는 다르게 클래스 B 객체를 직접 생성하는 것이 아니므로, 어딘가에서 받아와서 사용하고 있다고 추측해볼 수 있다. 이처럼 제어의 역전을 적용하면 객체를 외부에서 관리하게 되고, 실제로 사용할 때에는 외부에서 제공해주는 객체를 받아..

springboot 2024.08.28

오늘부터-웹-개발-인공지능-맛보기 1주차

구름톤 유니브 3기 스터디Back-end & Front-end (웹)Front-end ?실제로 보여지는 부분시각화의 영역Back-end 로부터 넘어온 데이터를 보여주는 역할Back-end ?보이지 않는 부분 = 웹/앱 서버(의 AP 구현), DB 등데이터 처리, 데이터 연산 등을 처리함Front-end 로부터 요청을 받아 데이터를 처리하고 되돌려 보내주는 역할Back-end & Front-end (모바일)Android OS 혹은 iOS 로 개발되어 디바이스에 최적화된 전용 앱들 : Native appsHTML/CSS/JS 로 만들어진 앱들 or 이렇게 만든 후 커버를 씌운 앱들 : Webapp, Hybrid apps네이티브 앱들은 Front-end와 Back-end를 굳이 나눠서 구분하지 않음보여지는 부..

카테고리 없음 2024.08.16

[SpringBoot] orElse와 orElseGet 차이점

끄적끄적 프로젝트를 하던 중 orElse와 orElseGet의 차이점 코드리뷰를 받아서 공부하게 되었다. orElse와 orElseGet두 메서드를 확인하기 위해서 Optional 클래스를 보면 이런 내용으로 정의되어 있다. 1. 둘 다 결과적으로는 value가 null일 때 other을 return하는 형태이다.2. 차이를 보자면 orElse는 코드가 실행되면 먼저 값을 가져오고, orElseGet은 코드가 실행될 때는 진행하지 않다가 null을 만나 호출되면 값을 가져온다 (if문과 비슷)3. 쉽게 정리하자면메서드에서 넘어온 값이 null이면 수행되는 것은 둘이 동일.orElse는 메서드에서 넘어온 값이 null이던 아니던 전달된 값을 가장 먼저 실행한 후, 넘어온 값이 null이라면 먼저 실행됐던 ..

springboot 2024.08.10

[SpringBoot] GPT 3.5 AI 사용하기

생산형 AI 기능을 쓰고 싶은 개발자는 어디에나 있을 것이다. 오늘은 Spring에서 AI를 사용하는 법을 알아보자. AI 기능을 빌려오는 느낌이고 직접 구현이 아니다. 참고 바란다. 1. 의존성 추가 implementation 'org.springframework.ai:spring-ai-openai-spring-boot-starter:0.8.0-SNAPSHOT' repositories { mavenCentral() maven { url 'https://repo.spring.io/milestone' } maven { url 'https://repo.spring.io/snapshot' } } 해당 의존성은 Spring Boot 프로젝트에 OpenAI와 연동할 수 있는 기능을 제공한다. 2. OpenAI A..

springboot 2024.03.24

[SpringBoot] KOMORON을 이용해서 형태소 분석하기

프로젝트를 진행하다가 워드 클라우드를 구현해야 할 일이 생겼다. 워드 클라우드란?? 처음 접근 알고리즘을 직접 짜려고 시도했다. 단순히 단어의 개수를 반환하면 된다고 생각했기 때문이다. 그 반환 단어를 프론트에서 받아서 크기를 기준으로 워드 클라우드를 구성하면 되지 않을까? 라고 생각했다. 하지만 우리의 서비스는 문장을 받는 '메모'이다. 때문에 위에 내가 직접 알고리즘을 짜는 방법은 불가능했다. 라이브러리 발견 그렇게 구글링을 하다가 https://github.com/shineware/KOMORAN (코모론) 라이브러리를 발견했다. 해당 라이브러리는 한국 형태소를 분석하는 기능을 가지고 있는 신기한 라이브러리였다. 명사만 필요한 나의 서비스에 정확히 일치했다. 구현 1. 의존성 추가 repositori..

springboot 2024.03.23

[SpringBoot] 인텔리제이 안에서 데이터베이스 접근하기

MysqlWorkbench로 접근하는 게 귀찮기도하고, 앱도 그리 좋지 않은 거 같고, 수정도 힘들고...... 인텔리제이로 데이터베이스를 접근해보자. - 오른쪽에 나와있는 DataBase 버튼을 클릭한다. - 자기가 사용하는 툴을 선택한다. 필자는 MySQL - user와 비밀번호를 입력한다 - 이제 들어와지면 끝났다. 자신의 database 이름으로 들어가면 테이블과 컬럼들을 확인할 수 있다.~~ 테이블을 더블클릭하면 안에 데이터를 확인할 수 있을 것이다. 추가로 배포한 서버도 IP주소와 DB아이디, 비밀번호만 알면 똑같이 들어가서 확인 가능하다!

springboot 2024.03.23

[GCP] GCP VM인스턴스 안에서 파일을 읽는 방법

프로젝트를 진행하다가, 파이어베이스 정보가 있는 worryboxFirebaseKey.json 파일을 깃허브에 올리지 않게 되었다. 그러다가 갑자기 의문점이 듦. "원래 배포 서버에서는 git pull 땡기고 실행하면 되는데, 저 json 파일은 pull 땡겨도 안 나오네?" 그렇게 되서 생각난 해결방법은 총 2가지 1. 환경변수로 넣기 2. 직접 경로 안에 파일 만들어서 넣기 json 파일은 환경변수로 넣을 수 없어서 처음 해보는 2번 방법으로 하도록 마음 먹었다. 일단 git에 올려둔 파일의 경로를 보자! @Configuration public class FirebaseConfig { @PostConstruct public void init(){ try{ FileInputStream serviceAcc..

server 2024.03.21

[SpringBoot] Swagger 간편 어노테이션 정리

앞 글에 연계해서 스웨거 어노테이션을 써 보자~ 1. RequestDto @NotBlank(message="메모 내용을 입력해야 합니다.") @Size(min = 1, max = 60, message = "1 글자 이상, 60 글자 이하가 아닙니다.") @Schema(description = "걱정 메모 내용", example = "너무 힘들어요.") @NotNull private String worryText; 우리가 봐야 할 어노테이션은 @Schema다. 딱 보면 알겠지만, 해당 Dto를 사용하게 될 시에 스웨거를 보면 "worryText" : "String"이 아닌 아래와 같은 문구로 대체된다. 프론트가 보고 이해하기 더 쉽다!! 2. Controller @Operation(summary = "걱정..

springboot 2024.03.21