기타113 [Junit5] Junit4에서 Junit5으로 안녕하세요. Spring Boot 2.2.x는 Junit5를 기본으로 제공하고 있습니다. 메이저 버전이 바뀌게 되었습니다. 과연 Junit4에서 Junit5로 변화하면서 어떤 부분이 변경되었을까요? 오늘은 Junit5를 사용하는 방법과 추가된 점에 대해서 알아보도록 하겠습니다. JUnit5 JUnit5는 차세대 Java Test 프레임워크로 3가지의 서브 패키지로 구성되어 있습니다. JUnit5 = JUnit Platform + JUnit Jupiter + JUnit Vintage JUnit Platform : JUnit Platform은 JVM에서 테스트 프레임워크를 시작하기 위한 기초적인 역할을 수행합니다. 또한 테스트 개발을 위한 API를 제공합니다. JUnit Jupiter : JUnit5에서 테.. 2020. 5. 1. [git] git을 이용한 버전관리 - 기본편 (remote, push, pull, fetch, clone) with github 안녕하세요. git에 대해서 이야기하는 3번째 시간입니다. 오늘은 원격 저장소(remote repository)과 이를 이용하는 명령어인 push, pull, fetch, clone에 대해서 알아보도록 하겠습니다.git의 component 구조이전 시간까지는 혼자서 작업하는 내용의 버전을 관리하는 방법이 었다면 이번시간부터 배우는 원격저장소를 이용하면 공동으로 협업할 수 있는 시스템 아키텍처가 그려지게됩니다. 원격저장소를 포함하면 2가지의 관점에서 구조적인 이미지를 그려볼 수 있습니다. 첫번째는 개인 관점에서의 git 이용 flow, 또 다른 한 관점은 다른 사람과의 공동으로 원격저장소의 사용입니다.첫번째 git에 관한 포스팅에서 git의 3가지 컴포넌트에 대해서 이야기 했던 적이있습니다. 아래 이미지와.. 2020. 4. 18. [git] git을 이용한 버전관리 - 기본편 (tag, alias) 안녕하세요. 오늘은 저번 포스터에 이어서 git의 명령어에 대해서 추가적으로 알아보는 시간을 가지도록 하겠습니다. 이전에 보았던 명령어들이 git으로 버전관리를 하는 아주 기본적인 부분이라고 한다면 이번 포스팅에서 알아볼 명령어들은 조금은 더 고급진(?) 명령어들이라 할 수 있을 것 같습니다. alias alias는 git 명령어에 별명을 붙여주는 명령어입니다. 우리가 git 명령어를 쓰다보면 명령어 자체가 길다고 느껴질 때가 있습니다. 예를 들어 git commit -m ""라는 명령어가 있습니다. git add 와 함께 많이 사용하는 명령어지요. 이 명령어를 commit 하고싶을때 마다 풀로 입력한다면 귀찮다고 생각되어질 수 있습니다. 이때 alias 명령어를 사용한다면 좀 더 줄여서 사용할 수 있습.. 2020. 4. 10. [UML] 클래스 다이어그램 이해하기 [UML] 클래스 다이어그램 이해하기[UML] 시퀀스 다이어그램 이해하기안녕하세요. 오늘은 클래스 다이어그램에 대해서 이야기 해보고자 합니다. 최근 레거시 시스템의 구조개선을 조금씩 하고 있습니다. 그러면서 객체의 구성 및 도메인 모델을 어떻게 가져가야할지 고민을 하게 되었습니다. DDD 관련된 책이라던지 찾아보는데 이때 기본이 되는게 UML, 특히 클래스 다이어그램 이라는 것을 알 수 있었습니다. 지끔까지는 막연한 지식은 있지만 이번 기회에 명확하게 이를 이해하고자 UML, 그 중에서도 클래스 다이어그램에 대해서 정리해보고자 합니다.UML 이란먼저 UML이란 Unified Modeling Language의 약자로 도메인(해결하고자 하는 목표, ex) 결재시스템 등)을 모델로 표현해주는 대표적인 모델링 .. 2020. 3. 29. [git] git을 이용한 버전관리 - 기본편(add, commit, status, log, reset) work-flow git은 3가지의 컴포넌트를 가지고 있습니다. work-tree work-tree는 working diredtory라고도 불리며 현재 작업중인 디렉토리에 들어있는 수정가능하며 읽을 수 있는 모든 파일이 들어있는 컴포넌트라고 생각하시면 됩니다. index index는 staging area라고 불리며 commit 되기전 준비단계가 보존되는 컴포넌트입니다. index는 work-tree에 있는 file중 변경되어져 commit 되어질 파일들이 모여있는 컴포넌트입니다. work-tree에 있는 file중 한 파일을 변경 한다면 index 컴포넌트에서 수정되었다는 마크처리를 해둡니다. repository 레포지토리는 컨테이너라고도 불립니다. 해당 컴포넌트는 프로젝트 파일들의 변화를 축적합니다... 2020. 3. 26. [Unit-Test] 하고 계신가요? 개발자 단위 테스트 안녕하세요. 많은 개발자들이 중요성은 알지만 하지 않거나 못하는 것이 있습니다. 바로 단위 테스트입니다. 하지 않는 이유로는 많은 이유를 듭니다. 비즈니스 로직에 집중하는 시간도 부족한데 무슨 테스트를 작성하는가? 이것도 나중에 유지보수가 되어져야하니 부담스럽다 귀찮다 저 또한 마찬가지로 막연하게 테스트를 작성하라고 했을 때는 귀찮음을 많이 느꼈습니다. 하지만 요즘은 스스로 테스트 코드 작성의 룰을 세우고 테스트 코드를 작성하고 있습니다. 오늘은 단위 테스트를 해야하는 이유에 대해서 공유드리도록하겠습니다. 테스트의 범위 테스트는 위의 이미지와 같이 5개의 범위로 나눌 수 있습니다. 단위 테스트를 제외한 나머지는 아래와 같이 정의되어집니다. 통합 테스트 : 여러 작업 단위가 연계된 워크플로우를 테스트 하기.. 2020. 3. 3. [자료구조] 코드로 알아보는 java의 HashSet 안녕하세요. Java의 자료구조를 알아보는 시간을 가지고 있습니다. 지금까지 List, Map에 대해서는 한종류씩 알아보았지만 아직 Set에 대해서는 알아본적이 없습니다. 그래서 오늘은 Set의 구현체 중 하나인 HashSet을 코드로 한번 알아보는 시간을 가지도록 하겠습니다. Set Set은 List와 다르게 중복을 허용하지 않는 자료구조입니다. 어떻게 중복을 허용하지 않을 수 있는지 코드와 함께 살펴보도록 하겠습니다. 상속과 멤버변수 public class HashSet extends AbstractSet implements Set, Cloneable, java.io.Serializable private transient HashMap map; // Dummy value to associate wit.. 2020. 2. 17. [자료구조] 코드로 알아보는 java의 LinkedList Java에서 List를 구현하는 구현체는 대표적으로 ArrayList, LinkedList, Vector가 있습니다. 저희는 저번 포스팅에서 ArrayList에 대해서 코드를 보며 내부 구조와 실질적인 시간복잡도를 파악해 보았습니다. 오늘은 LinkedList에 대해서 코드를 보며 ArrayList와는 어떻게 다른지 그 구조와 시간복잡도를 파악해보도록 하겠습니다. ArrayList와 LinkedList 우리가 일반적으로 알고 있는 ArrayList의 이미지는 위와 같습니다. String 형태의 "Hello Wo" char 배열에 저장한다고 하면 위와같은 형태가 될 것입니다. index를 가지고 있으며 index에 값을 저장하고 있는 형태입니다. 이런형태를 가짐으로써 RandomAccess가 가능하고 군집.. 2020. 2. 14. [자료구조] 코드로 알아보는 java의 ArrayList 안녕하세요. 오늘은 우리가 잘 사용하는 ArrayList에 대해 코드를 들여다 보고 내부는 어떻게 구성되어 있는지 확인해보도록 하겠습니다. 그리고 주요한 메서드 들은 어떤 로직으로 구현되어 있는지 알아보도록 하겠습니다. ArrayList ArrayList는 배열을 좀 더 편하게 쓸수있도록 Java에서 제공해주는 Class입니다. 일반 배열과는 다르게 메모리가 가능한한 추가할 수 있고 삭제에 대해서도 해당 index를 비워두기만 하는게 아니라 재정렬해주는 기능을 기본으로 제공해주고 있습니다. interface와 내부 변수 확인 public class ArrayList extends AbstractList implements List, RandomAccess, Cloneable, java.io.Seriali.. 2020. 2. 12. [Design Pattern] Decorator Pattern과 Proxy Pattern의 비교 안녕하세요. 지금까지 같이 알아본 디자인 패턴 중 데코레이터 패턴과 프록시 패턴은 유사한 구조를 가지고 있으며 사용하는 방법도 유사하다라는 걸 눈치채신 분들이 있을 것 같습니다. 2개 패턴의 구조는 유사하지만 해결하고자 하는 문제와 방법이 다릅니다. 오늘은 데코레이터 패턴과 프록시 패턴을 비교해보도록 하겠습니다. 데코레이터 패턴과 프록시 패턴 프록시 패턴 먼저 프록시 패턴은 위와 같은 아키텍처로 되어있습니다. Real Object에 대해서 실제로 필요할 때 instance가 생성되고 실제 작업이 진행될 수 있도록 하기 위해 적용되는 패턴입니다. 프록시 패턴에서 Real Object는 Proxy가 감싸고 있으며, Proxy를 통해서 처음 접근 또는 요청이 있을 때 생성이 되어집니다. Proxy는 Clien.. 2020. 1. 31. [Design Pattern] Java에서 발견한 디자인패턴_Decorator Pattern 안녕하세요. 오늘은 Decorator Pattern에 대해서 알아보도록 하겠습니다. Decorator Design Pattern 데코레이터 패턴에 대해서는 토비의 스프링 3.1 Vol. 1 책에 아래와 같이 서술합니다. 데코레이터 패턴은 Target Class에 부가적인 기능을 런타임 시 다이나믹하게 부여해주기 위해 Proxy를 사용하는 패턴 다이내믹하게 기능을 부가한다는 의미는 컴파일 시점, 즉 코드상에서는 어떤 방법과 순서로 프록시와 타깃이 연결되어 사용되는지 정해져 있지 않다는 뜻 즉, 데코레이터 패턴은 런타임중 다양하게 기능을 추가 할 수 있다라는 뜻입니다. 그럼 바로 한번 예제의 아키텍처와 코드를 확인해보도록 하겠습니다. 예제 윈도우 시스템을 만든다고 가정해보겠습니다. 세로스크롤, 가로스크롤, .. 2020. 1. 30. [자료구조] 코드로 알아보는 java의 Hashmap HashMap이란 HashMap은 Key, Value를 저장하는 Map의 구현체 중 하나입니다. 자료구조에 Key를 넣으면 Value를 반환하도록 합니다. 그리고 HashMap은 Key를 Hashing을 하여 저장하여 빠르게 처리 그리하여 HashMap이란 입력과 삭제에 대해 시간복잡도가 O(1)인 자료구조라고 합니다. initialize 우리가 Java를 사용할때 HashMap을 사용한다고 한다면 가장먼저 초기화를 해야합니다. (Key, Value는 모두 String이라고 하겠습니다.) 그러면 아래와같이 초기화 할 것입니다. Map map = new HashMap(); 이때 내부에서는 어떤일이 일어나는지 보겠습니다. /** * Constructs an empty HashMap with the defau.. 2020. 1. 25. 이전 1 ··· 4 5 6 7 8 9 10 다음