본문 바로가기

분류 전체보기

(664)
[Chapter 3] repository 협업(6) - 브랜치 병합하기 : 충돌(conflict) 지금까지 [feature/detail-page] 브랜치를 [master] 브랜치에 병합을 시도했고, 빨리감기(fast-forward) 병합이 실행된 상태입니다. 이제 마지막으로 [feature/popup] 브랜치에서 작업한 결과물을 병합하면 됩니다. 그런데, 이번에는 이전의 사례처럼 빨리 감기 병합이 아닌 일반 병합이 이뤄지기 때문에, 주의를 기울여야 합니다. 특히, 이번 병합에서는 '충돌'이 예정되어 있기 때문에(?) 이에 대한 처리도 함께 진행할 예정입니다. 차근차근 실습을 진행해 보겠습니다. 일단 이번 병합 과정에 있어서 앞서 진행한 빨리감기 병합과 가장 큰 차이점은, [master] 브랜치에 바로 병합을 진행하지 않는다는 점입니다. 오히려, 먼저 [master] 브랜치의 커밋을 [feature/p..
[CSS] 1. CSS의 기본 개념(2) - 스타일 시트란? CSS라는 단어 자체가 Cascading Style Sheet의 약자입니다. 캐스캐이딩(cascading)의 의미는 이후에 따로 살펴볼 예정이니 차치하고, 여기서 말하는 '스타일 시트'의 의미는 무엇일까요? 사실 어찌 보면 굉장히 간단한 의미입니다. 우리가 앞서 기본 CSS 스타일 지정 양식을 살펴보았는데요, 실제 웹 문서상에 적용되는 CSS 파일을 살펴보면 엄청나게 많은 스타일들이 적용되어 있을 것입니다. 이렇게 스타일 적용 원칙을 한 군데 모아둔 것을 스타일 시트라고 칭하게 됩니다. 웹 문서(html)에 적용하게 되는 스타일 시트에는 몇 가지 유형이 있습니다. 기본적으로 [브라우저 기본 스타일]이 있고, 우리가 앞으로 CSS 포맷으로 직접 작성하게 되는 [사용자 스타일]이 존재하죠. 이 각각의 스타일..
인터페이스(6) - 인터페이스 구현 : 다중 인터페이스 구현 지금까지는 일단 한 개의 인터페이스를 통해, 하나의 객체를 호출하는 형태로 연습해 왔습니다. 하지만, 부동산 거래를 할 때 하나의 매물에 여러 개의 부동산이 중개를 진행하듯이 - 여러 개의 인터페이스가 다중으로 하나의 구현 클래스를 호출하게 되는 경우도 있습니다. 하나의 클래스가 다중의 인터페이스를 구현하게 된다는 의미지요. 만일 하나의 클래스에 두 개의 인터페이스인 '인터페이스1'과 '인터페이스2'가 모두 구현된다고 가정하면, 아래와 같은 형태로 구현 클래스가 선언되어야 합니다. 물론 인터페이스1과 2의 모든 추상 메서드를 구현해야만 합니다. 하나라도 구현이 빠지게 되면 해당 구현 클래스는 추상 클래스로서 선언되어야 하는 것은 기본 구현 클래스에서의 원칙과 동일합니다. public class 구현클래스..
인터페이스(5) - 인터페이스 구현 : 익명 객체의 구현 앞선 아티클에서 우리는 RemoteControl이라는 인터페이스를 생성하고, 이를 구현하는 Television과 Audio라는 구현 클래스를 만들었습니다. 설명했다시피, 이 인터페이스를 구현하는 구현 클래스를 만들고 - 실행 클래스에서 구현 객체 인스턴스를 생성해 실행하는 형태를 취했습니다. 인터페이스(4) - 인터페이스 구현 기본 원리 인터페이스는 앞서 설명했듯이, 개발 코드에서 인터페이스 메서드를 호출하고 그 인터페이스가 객체의 메서드를 호출하는 구조입니다. 인터페이스는 중개자의 역할을 하기 때문에, 실제 구현 nozeroslope.tistory.com public class ExampleMain { public static void main(String[] args) { RemoteControl r..
[Chapter 3] repository 협업(5) - 브랜치 병합하기 : fast-forward 앞서 우리는 병합(merge)의 몇 가지 유형에 대해서 살펴보았습니다. 이제부터 앞선 아티클에서 도식화하여 살펴본 merge 사례를 직접 소스트리에서 수행해 보도록 하겠습니다. 이번에 할 작업은 위의 케이스입니다. [master] 브랜치는 '커밋5' 상태를 가리키고 있고 피처 브랜치인 [feature/detail-page]는 '커밋7'을 가리키고 있는 상태입니다. 여기서 [master] 브랜치에 [feature/detail-page] 브랜치를 병합하는 작업을 수행하겠습니다. 어떤 브랜치가 기준이 되는지가 항상 중요하므로 잘 체크해야 합니다. 현재 소스트리의 상태는 아래와 같습니다. 1. 우선, 병합의 기준이 되는 브랜치로 체크아웃을 진행합니다. 여기서는 [master]가 되겠죠? [master] 브랜치로..
[CSS] 1. CSS의 기본 개념(1) - CSS란? HTML과 마찬가지로, 웹 문서의 스타일을 결정하는 CSS(Cascading Style Sheet) 역시 웹 표준 요소입니다. HTML로 내용을 구성한 후, CSS를 이용해 웹 문서의 디자인과 레이아웃, 배치, 배경 요소 등을 지정해 줄 수 있게 되죠. HTML과 CSS를 분리해 구성하기 때문에 서로 영향을 주지 않고 내용만을 수정하거나, 반대로 디자인 요소만 변경해 주는 것도 가능하게 되죠. 예를 들어, 이러한 속성을 이용해 디바이스나 브라우저에 따라 같은 내용이 다른 디자인으로 보이게 만드는 반응형 웹 디자인을 구현할 수도 있게 되는 것입니다. 우선 이번 아티클부터 CSS를 공부하면서, 기성의 웹 사이트의 CSS 미적용와 CSS 소스 파일을 간단하게 확인할 수 있도록 크롬의 확장 프로그램 중 하나인 ..
인터페이스(4) - 인터페이스 구현 기본 원리 인터페이스는 앞서 설명했듯이, 개발 코드에서 인터페이스 메서드를 호출하고 그 인터페이스가 객체의 메서드를 호출하는 구조입니다. 인터페이스는 중개자의 역할을 하기 때문에, 실제 구현 객체에서는 인터페이스에 정의된 추상 메서드와 동일한 이름과 파라미터와 리턴 타입을 갖는 실체 메서드를 가지고 있어야 하겠죠? 이는 추상 메서드에서도 배운 동일한 개념입니다. 여기서 인터페이스가 선언한 메서드의 실체를 갖고 있는 객체를 인터페이스 구현(implement) 객체라고 칭합니다. 당연히 이 구현 객체를 생성하는 클래스는 구현 클래스로 칭하게 되죠. 특정 인터페이스의 구현 클래스를 선언할 때는 implements 키워드를 추가하고, 인터페이스 명을 명시해야 합니다. public class 구현클래스이름 implement..
[Chapter 3] repository 협업(4) - 브랜치 병합하기 개념 이번 아티클에서는 지난 번 예제에서 [master], [feature/detail-page], [feature/popup] 브랜치로 각각 작업한 결과물을 합쳐서 관리하는 방식을 살펴보겠습니다. 우선 병합(merge) 방식과 원리해 대해서 먼저 살펴보겠습니다. 병합에는 다음과 같이 세 가지 케이스가 존재합니다. 1. 병합 커밋(Merge Commit) 병합 커밋은 위와 같은 경우를 뜻합니다. [모자를 쓴 남자], 그리고 [안경을 쓴 남자]가 각각 있습니다. 이 두 그림을 겹쳐서 합친다고 생각해보면 어떻게 될까요? '모자와 안경을 쓴' 남자가 새롭게 생겨납니다. 이렇게 새로 탄생한 '모자와 안경을 쓴 남자'라는 새로운 병합 커밋이 생성됩니다. 2. 빨리 감기(Fast-Forward) '빨리 감기'라니, 뜬금..