본문 바로가기

공부

[서적 핵심 정리] Maven 설정 파일 (1) settings.xml settings.xml 파일의 역할메이븐 자체/전체 설정을 담당하는 설정 파일중앙/로컬 저장소의 주소/위치 등을 변경 settings.xml 파일의 위치메이븐 전체 : MAVEN_HOME/conf사용자별 설정 파일 : USER_HOME/.m2 settings.xml 각 엘리먼트 : 로컬 저장소의 경로 설정 출처: 자바 세상의 빌드를 이끄는 메이븐 (박재성 저) 더보기
[서적 핵심 정리] 메이븐 개요 메이븐이 지원하는 기능 목록빌드문서화리포팅의존관계소스 코드 관리릴리즈배포 앤트와 메이븐의 주요 차이점중앙 저장소 지원아키 타입(Archetype: 프로젝트의 종류에 따른 템플릿)의존 관계 라이브러리메이븐 플러그인편리한 의존 관계 라이브러리 관리 기능일관된 디렉토리 구조, 빌드 프로세스 유지 가능메이븐이 제공하는 다양한 플러그인 활용 가능아키 타입을 통해 표준화된 프로젝트 템플릿을 제공 가능 출처: 자바 세상의 빌드를 이끄는 메이븐 (박재성 저) 더보기
Refactoring 개요 리팩토링(Refactoring)의 정의소프트웨어를 보다 쉽게 이해할 수 있고, 적은 비용으로 수정할 수 있도록 겉으로 보이는 동작의 변화 없이 내부 구조를 변경하는 것즉, 리펙토링의 목적은 소프트웨어를 이해하기 쉽게 만드는 것 (성능 최적화와 목적이 다름)겉으로 보이는 소프트웨어의 기능을 변경하지 않음 리팩토링을 해야하는 이유?소프트웨어의 디자인 개선단기적인 목적을 이루거나, 전체 디자인을 고려하지 않고 수정된 코드를 정돈함으로서 전체 코드의 디자인을 유지예를 들어 중복된 코드의 제거는 코드의 수정시간이 줄어드는 이점이 있고, 수정할 코드가 한 곳에 모여있다는 것은 좋은 디자인의 필수 조건소프트웨어의 가독성(이해도) 증가리펙토링은 코드의 가독성을 높여 코드를 이해하기 쉽게 만듬디버깅코드의 가독성을 높임으.. 더보기
Iterator 사용 중 ConcurrentModificationException 발생 회피 방법 [문제 증상] Iterator로 맵 등을 순회 중 다른 스레드에 의한 add 등의 연산으로 ConcurrentModificationException 발생 [해결법] 1. Iterator로 순회할 자료 구조를 복사하여 복사 값을 사용 예) List 를 array로 변환, List의 clone() 메소드 사용 즉, 다른 스레드에서 삽입/삭제 등의 작업을 하는 자료 구조를 복사하여 복사 값을 순회함으로써 오류를 회피 * 단점: 자료구조 내의 원소가 많을 경우, 성능상의 부하를 줄 수 있음 2. 해당 자료구조에 대한 연산을 수행하는 부분을 synchronized 블록으로 감싼다. * 단점: 스레드의 장점을 사용할 수 없음 3. 자바 버전 1.5 이상 사용 시, ConcurrentHashMap, CopyOnWri.. 더보기
Mercurial SCM (Source Control Management) 요즘 회사에서 몇 년전 포스팅했던 TOW(Trac On Windows)를 사용하고 있다. 현재는 거의 혼자 일하기 때문에, 이슈 트랙킹은 거의 사용하지 않고 있으며 SVN은 소스 형상 관리 면에서는 이전보다 상당히 편리해졌다는 생각이 든다. SVN과 같은 기존 버전 관리 시스템은 중앙 서버에 소스 수정 이력이 저장되는 구조를 가진다. 이러한 특징은 많은 한계점을 보여주는데, 내가 사용하면서 느꼈던 예를 들다면 다음과 같다. 1) 항상 서버와 연결이 되어야 작업이 가능 본인의 회사는 방화벽때문에 외부 접속이 불가능하다. 따라서 집에서는 작업이 불가능하다. 마찬가지로, 외부로 출장을 나가더라도, 버전 컨트롤 시스템에 접속해서 작업은 불가능하다. 2) 네트워크의 상황이 성능에 많은 영향을 미치고, 전체적으로 .. 더보기
SVN Update Update는 다른 사용자가 Commit한 데이터를 받아오기 위해 사용한다. Commit을 하기 전에는 언제나 Update를 받고 시작하는 것이 좋다. 만약, 다른 사용자가 이미 Commit한 문서를 Update 받지 않고 Commit을 받으면 충돌이 발생할 가능성이 있다. 1. SVN 최상위 디렉토리를 우클릭 한 후, "SVN Update" 메뉴를 선택한다. 2. 창이 하나 뜨게 되고, 업데이트 받는 내용이 표시된 후, Update 완료 메시지가 표시된다. 더보기
SVN Commit 자신이 등록/수정/삭제한 파일이 있다면, 그 파일이 다른 사람에게도 적용될 수 있도록 해당 파일을 commit 해주어야 한다. 1. 파일을 변경하면 다음과 같이 디렉토리에 느낌표가 표시된다. 이 표시는 해당 디렉토리에 변경된 파일이 있다는 것을 의미한다. 2. 느낌표로 표시된 디렉토리, 또는 최상위 디렉토리, 또는 변경된 파일을 우클릭한 후, "Commit" 메뉴를 선택한다. 3. Commit 하기 위한 파일을 선택하고, "OK" 버튼을 누른다. 텍스트 박스에 수정된 내역에 대한 로그를 남기면 차후 소스 등의 관리에 용이하다. 4. 파일 업로드가 수행된다. 이후 디렉토리의 느낌표 표시가 다시 체크 표시로 변경된다. 더보기
SVN Client 초기 설정 1. 앞으로 프로젝트와 관련된 소스, 자료 등을 모아놓을 디렉토리를 하나 생성 2. 디렉토리를 우클릭한 후, 나온 메뉴 중 "SVN Checkout" 을 선택 3. URL of repository를 원하는 주소로 설정하고, "OK" 버튼을 누른다. 4. 해당 디렉토리에 파일이 복사되기 시작한다. 5. 복사가 완료되면 그림과 같이 화면에 체크표시가 나타난다. 더보기
TOW(Trac on Windows) 설치하기 [서문] Trac은 잘 알려진 Project Management 툴이며, 위키, Sub Versioin 등과 연동하여 프로젝트 일정, 상세 내역, 형상 관리 등... 프로젝트를 진행할 때 이거 하나면 프로젝트 관리에 있어서는 더 이상의 부족함이 없을 듯한... 다만 Trac을 사용하기에 가장 치명적인 단점은 설치가 어렵다는 점 나 역시 각종 세팅이나 인스톨이리면 머리를 자연스럽게 흔들게 되는 사람이라... 자연히 좋다는 점을 알면서도 Trac의 설치를 해본 적이 없다. 큰맘 먹고 Trac을 설치해보려고 검색을 시도하다가 TOW(Trac on Windows) 라는 프로그램을 확인하게 되고, 압축만 풀면 바로 돌아가게 할 수 있다는게, 무척이나 제작자에게 고맙게 느껴젔다. [설치과정] 1. TOW 다운로드 .. 더보기
dependancy, association, aggregation, composition 등의 차이점 상당히 잘 설명된 페이지... 읽고 숙지하자... http://geniusduck.tistory.com/entry/UML-%EA%B8%B0%EB%B3%B8%ED%8E%B8-%EA%B8%B0%EB%B3%B8-%ED%91%9C%EA%B8%B0-%ED%98%95%EC%8B%9D-%EB%B0%8F-%EA%B4%80%EA%B3%84%ED%91%9C%ED%98%84%EB%B2%95 더보기