전체 글
-
Web - MVC 패턴Web/Web 2022. 1. 31. 12:07
MVC(Mode View Controller) MVC 패턴이란? ㆍ MVC 패턴은 디자인 패턴 중 하나이다. ㆍ Model, View, Controller의 줄임말로 애플리케이션을 구성할 때 그 구성요소를 세 가지의 역할로 구분한 패턴을 의미한다. ㆍ 사용자 인터페이스와 비즈니스 로직을 분리해서 서로 영향 없이 독립적으로 설계가 가능하다. MVC 패턴의 특징 ㆍ 애플리케이션의 역할을 세 구간으로 나누어 설계함으로써 서로 간의 의존성이 낮아진다. ㆍ 각 영역이 독립적으로 구성되어 개발자 간 분업 및 협업이 원활해진다. ㆍ 한 영역을 업데이트하더라도 다른 영역에 영향을 주지 않는다. MVC의 구성 요소 컨트롤러(Controller) ㆍ 모델(Model)과 뷰(View) 사이에서 중간 다리 역할을 수행한다. ..
-
Web - REST APIWeb/Web 2022. 1. 30. 18:22
REST REST란? REST는 Representational State Transfer의 줄임말이다. 자원을 이름으로 구분 짓고 해당 자원의 상태를 교환하는 것을 의미한다. 좀 더 구체적으로 설명하자면, HTTP URI를 통해 자원을 명시하고, HTTP Method를 통해 자원을 교환하는 것을 말한다. 이러한 REST는 서버와 클라이언트의 통신 방식 중 하나이다. REST의 장단점 장점 ㆍ HTTP 프로토콜의 인프라를 그대로 사용하기 때문에, REST API 사용을 위한 별도의 인프라를 구축할 필요가 없다. ㆍ HTTP 표준 프로토콜을 따르는 모든 플랫폼에서 사용이 가능하다. ㆍ REST API 메시지가 의도하는 바를 명확하게 나타내기 때문에, 의도하는 바를 쉽게 파악할 수 있다. ㆍ 서버와 클라이언트..
-
Spring Boot - 메이븐(Maven) vs 그래들(Gradle)Framework & Library/Spring Boot 2022. 1. 30. 14:38
빌드 관리 도구 빌드 관리 도구란? 빌드 관리 도구란 프로젝트에서 필요한 xml, properties, jar 파일들을 자동으로 인식하여 빌드해주는 도구를 말한다. 소스 코드를 컴파일, 테스트, 정적 분석 등을 하여 실행 가능한 앱으로 빌드해주는 역할을 수행한다. 외부 라이브러리를 참조하여 자동으로 다운로드 및 업데이트를 관리해 주는 것은 이러한 빌드 관리 도구의 가장 큰 사용 목적이다. 자바의 대표적인 빌드 도구에는 Ant, Maven, Gradle이 존재한다. 메이븐(Maven) 메이븐(Maven)이란? 자바의 대표적인 관리 도구였던 Ant를 대체하기 위해 개발된 빌드 관리 도구이다. 프로젝트의 외부 라이브러리를 쉽게 참조할 수 있게 pom.xml 파일로 명시하여 관리하며, 참조한 외부 라이브러리에 ..
-
Spring Boot - 프로젝트 구조 알아보기Framework & Library/Spring Boot 2022. 1. 29. 20:51
스프링 부트의 프로젝트 구조 src/main/java 디렉터리 - 클래스, 인터페이스 등 자바 파일이 위치하는 디렉터리이다. - 스프링 부트 프로젝트를 생성하면 우리가 생성하지 않은 SpringBootStudyApplication 클래스가 포함되어 있다. - 해당 클래스는 main() 메서드 하나만 선언되어 있으며, main() 메서드는 SpringApplication.run()을 호출해서 웹 애플리케이션을 실행하는 역할을 한다. 애너테이션 설명 @EnableAutoConfiguration 해당 애너테이션에 의해 스프링 부트 개발에 필요한 몇 가지 필수적인 설정들이 자동으로 완료된다. @ComponentScan 해당 애너테이션에 의해 자동으로 컴포넌트 클래스를 검색하고 빈으로 등록한다. @Configur..
-
Sneakers Mania - Summernote 이미지 파일 업로드 시 고유 URL 생성Projects/Problem & Solution 2022. 1. 29. 12:09
개요 문제점 Summernote는 이미지 파일 업로드 시 base64로 인코딩을 한 후 저장하는 방식이기 때문에, 보안성은 뛰어나지만 이미지 파일 관리가 매우 어렵다는 단점이 있다. 예를 들어서, 고화질의 이미지 파일을 업로드했을 때 DB의 용량을 많이 차지한다는 점과 해당 이미지 파일을 조회할 경우 업로드 시간이 많이 소요된다는 점이다. 해결 방안 Summernote가 제공하는 callback 함수를 이용하여, 이미지를 특정 경로에 업로드한 후 고유한 URL을 리턴하는 방식으로 해결해 보았다. 추가로, URL을 통한 외부 리소스 접근을 위해 톰캣 설정도 별도로 필요하다. 구현 방법 1. Summernote callback 함수 ㆍ Summernote에서는 몇 개의 callback 함수를 지원한다. ㆍ ..
-
프로그래머스(Level 3) - 가장 먼 노드Coding Test/Coding Test 문제 풀이 2022. 1. 29. 11:51
문제 설명 코딩테스트 연습 - 가장 먼 노드 6 [[3, 6], [4, 3], [3, 2], [1, 3], [1, 2], [2, 4], [5, 2]] 3 programmers.co.kr 풀이 1번 노드로부터 가장 멀리 떨어진 노드는 총 몇 개인지 구하는 문제이다. 매개변수로 주어진 간선의 정보를 이용해서 그래프를 구성하고, 1번 노드부터 너비 우선 탐색을 시작한다. 다음 노드를 탐색할 때마다 각 노드의 깊이를 이전 노드의 깊이 +1을 해줌으로써 각 노드의 깊이를 계산하였다. 모든 노드의 깊이를 계산하였으면, 그중 가장 깊이 있는 노드의 개수를 반환해줌으로써 문제를 해결하였다. 전체 소스코드 import java.io.*; import java.util.*; class Solution11 { static ..