전체 글153 [doker] 도커 빌드 및 도커 컨테이너 실행 이전 글에서 도커 설치까지 하였습니다. 이제 스프링부트에서 도커를 빌드하고 컨테이너를 실행해보도록 하겠습니다. 스프링 프로젝트 생성 gradle java 11 그리고 dependencies 는 web만 추가해주었습니다. DockerController package com.example.springbootdocker.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class DockerController { @GetMapping("/") public String home() {.. docker 2022. 7. 22. [docker] window10 도커 설치 이전 글에서 도커가 무엇인지는 대충 이론으로는 알겠는데 개발자라는게 백문이 불여일타 라고 일단 해봐야 알지 않을까 해서 일단 설치부터 하고 프로젝트도 만들고 시작해보겠습니다. 일단 도커를 설치하기 전에 해줘야할 설정들이 있습니다. hyper v 를 활성해줘야하고 WSL2를 설치해줘야합니다. Hyper v 활성화 1. 윈도우 키 + x 를 눌러준다. 2. window powershell 관리자권한으로 실행을 시켜준다. 3. Enable-WindowsOptionalFeature -Online -FeatureName Microsoft-Hyper-V -All 을 파워쉘에 치고 엔터를 눌러준다. 4. Enable-WindowsOptionalFeature -Online -FeatureName containers –.. docker 2022. 7. 21. [docker] 도커란? 컨테이너란? 컨테이너는 소프트웨어 서비스를 실행하는 데 필요한 특정 버전의 프로그래밍 언어 런타임 및 라이브러리와 같은 종속 항목과 애플리케이션 코드를 함께 포함하는 경량 패키지입니다. 컨테이너는 운영체제 수준에서 CPU, 메모리, 스토리지, 네트워크 리소스를 쉽게 공유할 수 있게 해주며 컨테이너가 실제로 실행되는 환경에서 애플리케이션을 추상화할 수 있는 논리 패키징 메커니즘을 제공합니다. 보통 이라면 컨테이너라고 하면 이러한 컨테이너 박스를 생각 하실것입니다 IT 의 컨테이너 기술은 말그대로 아래와 같은 의미를 가지고 있으며 구동되는 형태도 이와 유사 합니다. 그리고 이러한 컨테이너는 아래와 같이 아주 큰 화물선에 실려서 이동되게 됩니다. 이처럼 컨테이너란 기술은 OS 위에 다수의 여러 애플리케이션 자.. docker 2022. 7. 21. [JUnit 5] Tag, CustomTag 테스트 그룹을 만들고 원하는 테스트 그룹만 테스트를 실행할 수 있는 기능.입니다. @Tag 테스트 메소드에 태그를 추가할 수 있다. 하나의 테스트 메소드에 여러 태그를 사용할 수 있다. 인텔리J에서 특정 태그로 테스트 필터링 하는 방법 Edit Configurations 를 눌러줍니다. 그 후의 +를 눌러 JUnit을 눌러서 JUnit을 추가해줍니다. 그 후의 Name 을 정해준후 Tags를 fast 를 적어서 @Tag가 fast 메소드들만 실행되게 해줍니다. @Test @DisplayName("스터디 만들기 ╯°□°)╯ fast") @Tag("fast") void create_new_study() { Study actual = new Study(10); assertEquals(actual.getLimi.. 카테고리 없음 2022. 7. 21. [JUnit5] Assumptions Assumptions Assumption 구문은 테스트 메서드가 특정한 조건에 대해서 실행하고자 할 때 사용하는 구문입니다. JUnit5에서는 org.junit.jupiter.api.assumptions 패키지의 내용물로 사용할 수 있습니다. assumeTrue 메서드는 파라미터의 값이 true일때 테스트를 계속 진행하겠다라는 의미입니다. 예를들어 특정한 OS, JAVA 버전, 환경변수에 따라 이러한 값에 따라 실행되어야한다. 실행되지 않아야 한다. 이런식으로 활용 할 수 있습니다. 저는 환경변수를 통해 테스트를 진행하였습니다. 이런식으로 환경변수를 하나 잡아줍니다. 그리고 인텔리제이를 껏다켜야합니다. 인텔리제이는 기본적으로 실행당시에 환경변수들을 읽어오기때문에 재부팅하지 않으면 인식하지 못할 수 도 있.. Spring Boot/JUnit5 2022. 7. 21. [JUnit5] Assertion assertEquals study public class Study { private StudyStatus studyStatus = StudyStatus.DRAFT; private int limit; public StudyStatus getStatus() { return this.studyStatus; } } StudyTest class StudyTest { @Test @DisplayName("스터디 만들기 ╯°□°)╯") void create_new_study() { Study study = new Study(-10); assertNotNull(study); //기대 값 왼쪽 나오는 값 오른 쪽이긴하나 상관없다. assertEquals(StudyStatus.DRAFT, study.getStatus(),.. Spring Boot/JUnit5 2022. 7. 21. [JUnit 5] JUit5 테스트 코드 테스트 코드의 중요성 개발단계 초기의 문제 발견을 도와줍니다. 개발자가 나중에 코드를 리팩터링 하거나, 기존 기능을 업그레이드하는 과정에 올바르게 작동하는지 확인할 수 있습니다. 기능의 불확실성을 감소할 수 있습니다. 시스템에 대한 실제 문서를 제공합니다. 즉, 단위 테스트 자체가 문서로 사용할 수 있습니다. 테스트 코드 적용 후 느낀 첫 번째 : 빠른 피드백 및 자동 검증 기존의 개발 방식은 다음과 같았다고 합니다. 코드 작성 서버(Tomcat, 내장 서버) 실행 API 테스트 도구(Postman)로 HTTP 요청 및 응답을 눈으로 확인 결과가 다르면 서버 중지 후 코드 수정 여기서 매번 코드를 수정할 때마다 2번~4번을 반복했다고 합니다. (이건 저도 똑같네요ㅎㅎ) 따라서, 매번 서버를 .. Spring Boot/JUnit5 2022. 7. 21. [Project] 해시태그 검색 구현 게시글들을 보면 해시태그들을 넣을 수 있게 되어있다. 위의 검색창의 해시태그를 사용하여 검색할 수 있지만, 티스토리 블로그 같은 경우에도 해시태그 검색 페이지가 따로 있다. 이걸 토대로 해시태그를 검색할 수 있는 페이지를 만들어 보겠습니다. ArticleController @GetMapping("/search-hashtag") public String searchArticleHashtag( @RequestParam(required = false) String searchValue, @PageableDefault(size = 10, sort = "createdAt", direction = Sort.Direction.DESC) Pageable pageable, ModelMap modelMap) { Page .. Project/project-board 2022. 7. 20. [Vue] Vue 설치하기 Vue.js javascript Framework 언어인 React, Angular, Vue.js 가 있다. Vue.js는 Evan You가 만든 언어이며, React와 Angular의 장점만을 모아 만들었다고 합니다. React는 Facebook, Angular는 Google이 지원하고 있는 반면 Vue.js 는 1인 개발자로 시작했기 떄문에 다른 언어들에 비해 밀릴것으로 생각했으나, 생각 그 이상으로 유지보수가 잘 되고 있으며 사용자도 매우 많습니다. Vue.js 공식 사이트에서 언급한느 특징은 아래와 같습니다. Approachable ( 접근성이 좋다.) Versatile ( 가변성이 있고 = 다재다능하며, 여기저기 적용하기 좋다는 뜻이다,) Perfomant ( 성능이 좋으며) Maintainab.. Vue 2022. 7. 18. [Project] 게시판 검색기능 우리는 만약 게시판에 검색기능이 없다면 찾고자 하는 글을 일일이 찾아야 할것이다. 검색 기능은 꼭 있어야 할 기능이라고 생각해 구현해보려 한다. 이미 전의 글 부터 순차적으로 하고 있기 때문에 추가해야할 코드는 적다. SearchType package com.jisu.projectboard.domain.type; import lombok.Getter; public enum SearchType { TITLE("제목"), CONTENT("본문"), ID("유저 ID"), NICKNAME("닉네임"), HASHTAG("해시태그"); @Getter private final String description; SearchType(String description) { this.description = descri.. Project/project-board 2022. 7. 15. [Project] 게시글 페이징 처리 구현, 정렬 및 테스트 게시글 리스트를 보여주는 과정에서, 개수가 많아지는 경우 모든 게시글 데이터를 한번에 뿌려주는 것보다 페이지별로 나눠서 보여주는 것이 깔끔하고 데이터 절약에 좋기 때문에 게시글 리스트 페이징 처리를 구현해보려 한다. 현재 프로젝트에서는 검색 부분과 함께 페이징 처리가 되야한다는점을 생각하며 만들어 보려고 한다. 이전 글에 비즈니스로직을 설계하면서 repository와 service까지 페이징 처리를 하기 위해 다 만들어놨습니다. 이제 이것을 뷰와 컨트롤러에 적용만하면 됩니다. 현재 게시판상태입니다. 밑의 페이지버튼은 눌러도 아무런 반응이 없습니다. 이 상태에서 이번 페이지가 예를들어서 3페이지이고, 전체 페이지바의 크기가 5개이다 가정하면 previous 12345 next 이런식으로 구현을 하려고 합니.. Project/project-board 2022. 7. 14. [Project] 게시글, 댓글 비즈니스 로직, 페이지 구현 지금까지 Entity, API, QueryDsl, DTO 까지 구현을 했습니다. 이제 이에 맞게 게시판, 댓글 컨트롤러, 뷰, 서비스클래스를 만들어 테스트까지 해보도록하겠습니다. ArticleController RequiredArgsConstructor @RequestMapping("/articles") @Controller public class ArticleController { private final ArticleService articleService; @GetMapping public String articles(@RequestParam(required = false) SearchType searchType, @RequestParam(required = false) String searchVa.. Project/project-board 2022. 7. 14. 이전 1 ··· 5 6 7 8 9 10 11 ··· 13 다음