Develop 29

[Spring Boot] 게시판 프로젝트 외전 #1 JUnit과 Mockito를 이용한 테스트 - 실전

앞서 게시글에서 JUnit과 Mockito를 활용하기 위한 이론을 공부했다면 이제 실제 코드에 적용시켜 볼 시간이다.우선 Controller와 Service 두 계층에 대해서 단위테스트를 진행할 예정이다.#1. Dependency 설정사용할 JUnit과 AssertJ, Mockito 모두 spring-boot-starter-test에 포함되어 있으므로 혹시 build.gradle에 해당 항목이 없다면 추가해주면 된다.dependencies { ... testImplementation 'org.springframework.boot:spring-boot-starter-test'}#2. 컨트롤러 단위 테스트@WebMvcTestpublic class BoardControllerTest { @MockBean pr..

[Spring Boot] 게시판 프로젝트 외전 #1 JUnit과 Mockito를 이용한 테스트 - 이론

게시판 프로젝트를 1차적으로 마무리하고 나서 계속 버전업을 시키려고 어떤 걸 해야할까 생각을 하던 중 정처기 공부를 하며 알게 된 Testing을 프로젝트 초기에 적용시켜봐야겠다 생각하고 공부를 시작했다.테스트 코드를 작성하는 건 처음이라 모르는 것 투성이인 상태였고 공부를 위해 기초적인 개념과 용어부터 정리해봤다.#1. 단위 테스트(Unit Test)1.단위 테스트란?소프트웨어 개발에서 개별적인 코드 단위를 테스트하는 것을 의미코드의 작은 부분을 격리시켜 하나의 모듈을 만들어 독립적으로 테스트함으로써 코드의 정확성과 신뢰성을 검증하나의 모듈이란 각 계층에서 하나의 기능 또는 메소드로 이해할 수 있으며 이 기능이 올바르게 동작하는지 독립적으로 테스트하는 것자동화가 되고 반복 가능하며 버그를 빠르게 찾아내..

[Spring Boot] 게시판 프로젝트 #4 Service, Controller 구현

Service : Business Logic을 담당하는 부분. DB로부터 데이터를 받거나 전달해주는 역할을 한다Controller : View로부터 오는 API 요청들을 어떻게 처리할 것인지 정의하는 역할을 한다=> /board/list란 경로로 GET 요청이 왔을 때 어디로 보내고,   /board/post란 경로로 GET 요청이 올 때 어디로 보내고,   POST 요청이 오면 xxService로부터 Data를 받아와서view로 Attribute를 전달하는 등@Controller : Handler가 Scan 할 수 있는 Bean 객체가 되어 Servlet용 컨테이너에 생성된다.@Service, @Repository : 해당 Class를 루트 컨테이너에 Bean 객체로 생성com.board.service..

[Spring Boot] 게시판 프로젝트 #3 DTO, Repository 구현

DTO와 Repository란 무엇일까?DTO(Data Transfer Object) : 계층 간 데이터 교환을 위한 Java BeanRepository : Database에 CRUD 명령을 실행하게 만드는 Interface         (JpaRepository를 extends 하게 되면 CRUD를 사용할 수 있게 된다.)BoardDto : 게시판 API 간에 Data를 전달하는 DTOcom.board.dto.BoardDto.javapackage com.board.dto;import java.time.LocalDateTime;import com.board.domain.Board;import lombok.*;// DTO : 데이터 전달 목적// 데이터를 캡슐화한 데이터 전달 객체@Getter@Sette..

[Spring Boot] 게시판 프로젝트 #2 Domain(Entity), Util 구현

domain 패키지 내부 Class 혹은 Enum 파일들은 DB 처리용으로 DB Table과 Mapping되어 DB와 직접적으로 데이터를 교환할 때 사용된다.domian 패키지 안에는 Board, Time 2개의 파일이 존재하는데Board : 게시판 글에 대한 정보를 담고 있는 테이블Time : 데이터 조작 시 자동으로 날짜를 수정해주는 JPA의 Auditing 기능을 사용한다. 이 Time Class를 다른 Entity들이 상속받아 사용하여 자동으로 일시를 부여해준다.게시글 Entity인 Board가 필요로 하는 속성은 게시글을 구분할 {id, 제목, 내용, 작성자, 작성일시, 수정일시}로 그 중 작성일시와 수정일시는 클라이언트가 직접 입력하는 것이 아니라, JPA Auditing 기능을 사용해 글이 ..

[Spring Boot] 게시판 프로젝트 #1 세팅

Spring Boot로 게시판 백엔드 서버를 만들어보자정처기 공부를 시작하면서 직접적인 코딩보다는 이론과 알고리즘 위주의 공부를 하다보니 실질적인 프로젝트를 구현하는 데 필요한 감각이 많이 떨어졌다는 생각이 들어 간단한 게시판 프로젝트를 통해 감을 되찾고 새로운 기술들도 적용해보고자 한다.우선은 기본적인 게시판 기능만 구현해 놓고 후에 회원가입 등 기능을 추가해가며 프로젝트를 발전시켜나가 볼 생각이다.#1. 요구 사항 정의전체 게시글 목록 조회게시글 전체에 대하여 제목, 작성자명 조회하기게시글 ID 내림차순으로 정렬하기게시글 작성제목, 작성자명, 작성 내용 등을 DB에 저장선택한 게시글 조회선택한 게시글의 제목, 작성자명, 작성 날짜, 작성 내용 등을 조회선택한 게시글 삭제선택한 게시글을 DB에서 삭제게..

HDFS 개요

1. HDFS(Hadoop Distributed FileSystem)HDFS는 Hadoop Distributed FileSystem이 의미하는 것처럼 하둡 네트워크에 연결된 기기에 데이터를 저장하는 분산형 파일시스템으로 실시간 처리보다는 배치처리를 목적으로 설계되어 작업량이 적거나 빠른 데이터 응답이 필요한 작업에서는 적합하지 않음2. HDFS의 구조1) Block based file system(1) Block based file system?HDFS는 블록 구조의 파일 시스템이다. HDFS에 저장되는 모든 파일은 일정 크기의 블록으로 나눠져 여러 서버에 분산 저장된다.블록 크기는 기본 128MB로 되어있고, 설정으로 변경이 가능하다. 블록 단위로 분산해서 저장하기 때문에 로컬디스크보다 큰 규모로 데이..

Hadoop 개요

하둡(Hadoop)이란?하나의 성능 좋은 컴퓨터를 이용하여 데이터를 처리하는 대신 낮은 성능의 컴퓨터 여러 대를 클러스터화 해 큰 크기의 데이터를 클러스터에서 병렬로 동시에 처리하여 처리속도를 높이는 것을 목적으로 한 분산처리 오픈소스 프레임워크Hadoop의 필요성온라인 서비스와 온라인 데이터 처리 기술이 발전하면서 데이터의 양과 종류가 다양해졌다.정형 데이터의 경우 기존에 있던 RDBMS에 저장하면 되지만 웹 로그 등의 비정형 데이터를 RDBMS에 저장하기에는 데이터의 크기도 너무 크고 RDBMS의 복잡하고 상세한 기능이 필요하지도 않았다.또한 RDBMS는 대용량, 고스펙의 장비에 운영하는데, 자주 사용하지 않는 데이터를 무작정 RDBMS를 늘려서 보관하는 것은 비용적인 면에서도 너무 낭비가 심하다. ..

BufferedReader, BufferedWriter,StringTokenizer, StringBuilder 빠른 입출력을 위한 함수들

최근 알고리즘 연습문제들을 풀기 시작했는데 입출력 제한시간이 정해져있기도 하고 개인적으로도 입출력 시간을 단축하고 싶다는 생각이 들어 찾아보던 중 원래도 알고 있었고 실제로 사용도 해봤지만 자세히는 몰라 잘 사용하지 않던 BufferedReader와 BufferedWriter가 입출력 시간 단축에 도움이 된다는 글을 보고 사용하기 전에 한 번 제대로 공부해 봐야겠다는 생각이 들었다.BufferdReader / BufferedWriterBufferedReader와 BufferdWriter는 버퍼를 사용하여 데이터를 입출력하는 함수다.설명만 들었을 때는 간단한데 버퍼가 무엇인지 잘 모르는 상태에서는 뜬 구름 잡는 소리처럼 들려 버퍼가 무엇인지에 대해 먼저 알아보기로 했다Buffer란?두개의 장치 사이에서 데..