본문 바로가기

분류 전체보기264

[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.
[java] exception 처리하기 - 이론편 코딩을 하다보면 꼼꼼함의 중요성을 간과할 때가 많습니다. 새로운 기능, 새로운 기술은 정말 재미있고 시간가는 줄 모르고 할 때가 많습니다. 하지만 이러한 새로운 것들을 실제로 시스템에 적용하기 위해서는 기본이 탄탄해야 합니다. 해야함을 알면서도 프로그래밍을 하다보면 까먹게 되는 게 있습니다. 재미가 없어서지요. 재미가 없더라도 반드시 해야하는 것이 2가지 있습니다. 바로 validation과 exception 처리입니다. 반드시 이 2개는 코딩을 하면서 습관으로 가지시는걸 추천드립니다. :) 오늘은 exception에 대해서 알아보도록 하겠습니다. exception exception은 로직이 실행되는 중(Runtime)에 원하지 않는 이벤트가 발생하거나 예상하지 않은 이벤트가 일어났을때의 처리를 말합니다.. 2020. 4. 7.
[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.
[Spring] Spring의 IoC/DI Container 안녕하세요. 저번 포스팅에서 IoC와 DI의 개념에 대해서 알아보았습니다. IoC 개념을 설명하며 Spring의 IoC는 일반적인 IoC 개념에 DI를 의 개념을 추가한 IoC/DI Container라고 설명을 드렸습니다. 오늘은 구체적으로 일반적인 IoC에 어떤 개념이 추가 된것인지 한번 보도록 하겠습니다. 본편에 들어가기 전에 먼저 Spring에 대한 용어를 정리한 후 Spring Container의 구조에 대해서 알아보도록 하겠습니다. 용어 정리 Spring IoC를 공부하다보면 생소하지만 한번쯤은 흘려 들어본 용어들이 많이 나옵니다. 이러한 용어를 정리하는 시간을 가지도록 하겠습니다. 빈(Bean) 빈 또는 빈 오브젝트는 Spring이 IoC 방식으로 관리하는 오브젝트라는 뜻. 즉, 우리가 일반적.. 2020. 3. 21.
[java] java Enum의 개념과 기본 메서드 안녕하세요. 오늘은 java의 enum에 대해서 알아보도록 하겠습니다. java에서 정보를 나열할 때 enum class를 많이 사용합니다. enum은 java7에서 부터 등장하기 시작했는데요. 그거 아셨나요 ? enum은 Object Class를 상속 받은 class입니다. 우리가 기본적으로 사용하는 enum 이라고 선언하는 것은 사실 enum class를 상속받아 사용하는 것입니다. Enum 기본 enum을 기본적으로 선언하면 아래와 같습니다. public enum CompanyType { KAKAO, Naver, Coupang } 그리고 사용한다면 아래와 같이 사용할 수 있습니다. 아래 enum Type에는 KAKAO, Naver, Coupuang을 set하고 사용할 수 있습니다. public cl.. 2020. 3. 11.
[Unit-Test] 하고 계신가요? 개발자 단위 테스트 안녕하세요. 많은 개발자들이 중요성은 알지만 하지 않거나 못하는 것이 있습니다. 바로 단위 테스트입니다. 하지 않는 이유로는 많은 이유를 듭니다. 비즈니스 로직에 집중하는 시간도 부족한데 무슨 테스트를 작성하는가? 이것도 나중에 유지보수가 되어져야하니 부담스럽다 귀찮다 저 또한 마찬가지로 막연하게 테스트를 작성하라고 했을 때는 귀찮음을 많이 느꼈습니다. 하지만 요즘은 스스로 테스트 코드 작성의 룰을 세우고 테스트 코드를 작성하고 있습니다. 오늘은 단위 테스트를 해야하는 이유에 대해서 공유드리도록하겠습니다. 테스트의 범위 테스트는 위의 이미지와 같이 5개의 범위로 나눌 수 있습니다. 단위 테스트를 제외한 나머지는 아래와 같이 정의되어집니다. 통합 테스트 : 여러 작업 단위가 연계된 워크플로우를 테스트 하기.. 2020. 3. 3.
[Spring] Spring의 핵심 기술 IoC / DI 안녕하세요. 요즘 코로나로 이슈가 많습니다. 다들 몸관리 잘 하시기 바랍니다. 오늘은 이전 포스팅에 이어서 Spring의 핵심 기술중 DI와 IoC에 데해서 알아보도록 하겠습니다. IoC (Inversion of Control) IoC는 영어 그대로 해석하면 제어의 역전이라고 말합니다. A라는 class가 B라는 클래스의 메서드를 사용하기로 했습니다. 그러면 아래와 같은 코드를 작성해야 합니다. 이런 관계를 A가 B를 의존하고 있다고 합니다. 왜냐하면 B의 로직에 따라 A가 영향을 받기 때문입니다. public class A { private B b; public A() { b = new B_1(); } public void useB() { b.method_1(); b.method_2(); } } int.. 2020. 3. 2.
[Spring] Spring의 정의와 기본 개념 안녕하세요. 대다수의 Java를 주 언어로 사용하는 분들이 사용하는 Web Framework가 바로 Spring FrameWork입니다. 오늘은 Spring정의와 기본 개념, 그리고 Spring의 목표에 대해서 알아보도록 하겠습니다. 정의 토비의 스프링을 보면 Spring은 아래와 같이 정의되어 있습니다. 자바 엔터프라이즈 애플리케이션 개발에 사용되는 애플리케이션 프레임워크 엔터프라이즈 서비스이라는 것은 실제 기업에서 사용할 수 있을 정도의 시스템으로 UI, 서비스 로직을 포함하여 있는 것이 아니라 보안, 트랜잭션과 같은 엔터프라이즈 시스템에서 요구되는 기술을 포함하는 서비스입니다. 목적 어떤 기술이든 그 자체로는 도구에 불과하며 용도에 맞게 잘 활용해서 궁극적으로 이루고자 하는 목표를 이루는 것이 중요.. 2020. 2. 21.
[자료구조] 코드로 알아보는 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.