전체 글 112

카카오맵 open API - 키워드 검색하기

Toy Project #2에서 카카오맵에서 제공하는 키워드 장소 검색하기 open API를 적용한 경험을 남겨본다. 🌱 왜 카카오맵 open API 중 키워드 검색하기를 사용했는가?패키지 구조ItineraryRestControllerItinerarySearchResponseDTO ItineraryService결과(Postman Test)왜 카카오맵 open API 중 키워드 검색하기를 사용했는가?Toy Project #2의 요구사항 중 “일정 정보에 위치 정보를 확인 및 추가하는 공통 유틸리티 클래스 제공”이 있었다. 이를 위해 일정 정보를 추가할 때, 해당 일정 장소를 검색하여 키워드를 토대로 위치정보를 확인하기 위해 카카오맵 open API를 사용했다. 패키지 구조Toy Project #2는 Spri..

싱글톤 패턴이란?

싱글톤 패턴이란?단 하나의 인스턴스를 생성해 사용하는 디자인 패턴이다.인스턴스가 1개만 존재해야 한다는 것을 보장하고 싶은 경우와동일한 인스턴스를 자주 생성해야 하는 경우에 주로 사용한다. 왜 싱글톤 패턴을 사용하는가?인스턴스를 하나만 사용한다면 메모리 낭비를 방지할 수 있다.다른 클래스 간의 데이터 공유가 쉽다.└ 싱글톤으로 생성된 객체는 전역성을 띄기 때문에 다른 객체와 공유가 쉽다. 싱글톤 패턴의 문제점싱글톤 패턴 구현을 위한 코드가 많이 필요하다. 테스트하기 어렵다.└ 자원을 공유하기 때문에 테스트시, 매번 인스턴스의 상태를 초기화 해줘야한다.싱글톤 객체간의 결합도가 높아져 객체 지향 설계 원칙 중 개방-폐쇄의 원칙에 어긋나게 된다. 싱글톤 패턴 구현 방식Lazy Initialization (늦은..

객체지향 프로그래밍이란?

객체지향이란?컴퓨터 프로그래밍 패러다임 중 하나로, 프로그래밍에서 필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고, 그 객체들 간의 유기적인 상호작용을 통해 로직을 구성하는 프로그래밍 방법장점코드 재사용 용이유지보수가 쉬움대형 프로젝트에 적합단점처리 속도가 상대적으로 느림객체가 많으면 용량이 커질 수 있음설계시 많은 시간과 노력이 필요객체지향 프로그래밍과 관련된 5가지클래스 + 인스턴스(객체)클래스어떤 문제를 해결하기 위한 데이터를 만들기 위해 추상화를 거쳐 집단에 속하는 속성(attribute)와 행위(behavior)를 변수와 메서드로 정의한 것== 객체를 만들기 위한 메타정보 인스턴스(객체)클래스에서 정의한 것을 토대로 실제 메모리에 할당된 것으로 실제 프로그램에서 사용되는 데이터 추상..

TestCode 작성법

Test Code팀원들과 협업하는 상황이라면, 내가 작성한 코드를 타 팀원이 모두 이해하는 것은 어려울 수 있다. 하지만 개발자도 사람이므로 내 코드가 요구사항에 맞게 잘 작성되었는지 확인하기 위해 merge 이전 꼭 확인을 해봐야한다. 확인을 할 수 있는 대표적인 방법이 Test Code이다. 이전 프로젝트에서는 Test Code를 작성하지 않고, main.java를 만드어서 직접 print를 해보는 단순한 작업만 거쳐왔었다. 하지만, 해당 과정을 정리해서 팀원들에게 보여줄 수는 없었기에 항상 테스트는 개인이 진행했었는데 Test Code를 작성하면 협업이 가능하다는 점을 깨닫게 되었다. 팀에서 진행한 전반적인 Test 방법은 다음과 같다.❓Test Code 작성 방법테스트 코드 작성 시 확인이 용이하..

Entity와 DTO의 연관관계

Entity와 DTO이번 프로젝트에서는 DB와의 연동이 없었기에 데이터를 DTO를 통해 관리했다. 프로젝트를 하기 전에는 “왜 Entity가 아닌 DTO를 사용하여 데이터를 관리할까?”라는 의문이 있었다. 이를 해결하기 위해 둘의 개념 정리부터 시작했다.EntityDB Column들을 필드로 가지는 객체DB와 1-1 대응└ 테이블에 가지지 않는 칼럼을 필드로 가져서는 안됨 @Entity 어노테이션으로 해당 클래스가 Entity클래스임을 명시 id 칼럼 : @Id 다른 칼럼 : @ColumnDTO (Data Transfer Object)데이터를 이동하기 위한 객체Client가 Controller에 요청을 보냄 : RequestDtoController가 Client에게 응답을 보냄 : ResponseDto로..

Annotation이란?

AnnotationAnnotation이란 자바에서 코드 사이 “주석”처럼 쓰이며 특별한 기능을 수행하도록 하는 기술이다. 이전에는 Java Code과 XML 설정파일을 따로 저장하고 이름을 동일하게 하여 관리했다. 코드와 설정 파일과 분리되어 있기에 개발에 어려움이 있었고 이를 해결하기 위해 하나의 파일에서 Annotaion(설정파일)과 코드를 함께 사용하는 방법이 개발되었다. 다양한 Annotation이 존재하지만, Toy 프로젝트를 통해 새롭게 알게된 Annotation에 대해 설명한다.❓@NoArgsConstructor(access = AccessLevel.PROTECTED) Entity나 DTO를 사용할 때, 주로 해당 어노테이션 사용아무 매개변수가 없는 생성자(기본생성자)를 생성하되, 다른 패키..

협업을 위한 Github 사용법

Github전략Git Branch 전략 - Git Flow이번 프로젝트에서 처음으로 Git 브랜치 전략을 사용해서 협업을 진행했다. Git 브랜치 전략이란, Git 브랜치를 효과적으로 관리하기 위한 워크플로우이다. 그 중, 우리 팀은 Git Flow 방식을 사용했다. ❓Git Flow 방식에서 사용되는 브랜치Main 브랜치 : 출시 가능한 프로덕션 코드를 모아두는 브랜치Develop 브랜치 : 다음 버전 개발을 위한 코드 (개발 완료 → Main 브랜치로 머지)Feature 브랜치 : 하나의 기능을 개발하기 위한 브랜치 형태 : feature/branch-name└ “git flow integration plus” 플러그인을 사용하면 바로 생성가능Release 브랜치 : 소프트웨어 배포를 준비하기 위한 ..

Github 2023.09.18

패스트캠퍼스X야놀자: 백엔드 개발 부트캠프 - Toy #1 여행 여정을 기록, 관리하는서비스

서비스 개요 서비스 목적 및 목표 목적 여행 여정을 기록과 관리하는 SNS 서비스를 만든다. 목표 여행의 여정 정보를 기록하고 조회하는 Java 애플리케이션 개발한다. 하나의 여행은 여러 여정 정보로 구성된다. (여행 : 여정 = 1 : n) 여정정보는 이동 (출발지, 도착지, 출발시각, 도착시각)과 숙박(체크인, 체크아웃) 등의 상세정보를 포함한다. 여행 정보와 특정 여행의 여정 정보는 데이터 저장 경로에 파일 형태로 저장한다. (CSV, Json) 서비스 설계 패키지 구조 ✅ Domain 형 구조 패키지구조 설계는 대표적으로 ‘계층형’ 구조와 ‘도메인형’ 구조가 있다. 그 중 도메인형 구조는 각각의 도메인 별로 패키지 분리가 가능하여 도메인 별 관리가 직관적이다. 도메인 별로 의존하는 코드가 없도록 ..

9251: LCS(JAVA)

9251번: LCSLCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다.https://www.acmicpc.net/problem/9251 코드 설명fir : 첫번째 문자열firLen : fir의 길이sec : 두번째 문자열 secLen : sec의 길이lcs : LCS를 구현한 함수LCS란?Longest Common subsequence : 최장 공통 부분 서열두 서열이 주어졌을 때 두 서열 중 공통인 부분 서열 중 가장 길이가 긴것exampleACAYKPCAPCAK⇒ ACAK (최장공통부분서열)public static int lcs(char[] fir, char[] sec,int fi..

알고리즘/백준 2023.09.01

패스트캠퍼스X야놀자: 백엔드 개발 부트캠프 - DB를 활용한 책 검색 어플리케이션

과제 설명목적카카오 Daum 검색 REST API 중 책 검색하기 API를 활용하여 책 제목을 기반으로 책의 전반적인 정보들을 검색하는 java 애플리케이션을 개발합니다. 구현내용카카오 API 키 획득카카오 개발자에 로그인하여 어플리케이션 생성생성한 어플리케이션의 REST API 메모 로컬 REST API 사용Daum 검색 중 책 검색하기 API 문서를 참고하여 개발한다.요청과 응답 구조에 대한 예제 코드를 확인하여 개발한다. JAVA 어플리케이션 구현 책 제목 입력제목을 기반으로 책의 기본 정보들 JSON 반환검색 결과(JSON)에서 가격, 출판사, 저자, 할인가격 및 ISBN 결과를 추출상위 10개 결과 표시 데이터 베이스 저장검색 결과를 DB에 저장할지 선택저장 선택 (Y) 관련 책 정보를 DB에 ..