본문 바로가기

[서적 핵심 정리] Maven 설정 파일 (2) pom.xml POM?Project Object Model프로젝트의 메이븐 빌드 정보를 담고 있는 설정 파일프로젝트 빌드를 수행할 때, 해당 설정 파일을 사용한다. POM 파일의 4가지 카테고리프로젝트 관계 설정프로젝트 이름, URL, 개발자 목록, 라이센스 등빌드 설정소스 디렉토리, 리소스 디렉토리 설정, 플러그인 설정 변경 등프로젝트 기본 정보프로젝트/라이브러리 의존관계 관리빌드 환경배포 관련 설정 POM 파일 엘리먼트modelVersion: POM 모델의 버전 (4.0.0)groupId: 프로젝트 생성 조직의 고유 아이디 (일반적으로 도메인 명)artifactId: 프로젝트 식별 아이디 (프로젝트 고유 아이디)packaging: 프로젝트를 어떤 형태로 패키징할지 결정 (jar, war, ear, pom 등)ver.. 더보기
[서적 핵심 정리] 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) 네트워크의 상황이 성능에 많은 영향을 미치고, 전체적으로 .. 더보기
일본 오사카 (2011/01/29) 출장 마지막 날... 다른 날과 마찬가지로 아침 일찍 일어나긴 했지만 귀국행 비행기가 오후 5시였는데 상당히 빠듯한 느낌이 들었다. 일단 숙소 근처의 가게를 돌면서 귀국 선물을 구입하기 시작했다... 오전이라서 가게가 많이 열리지는 않았지만 그럼에도 상당히 활기찬 거리였다... 이것 저것 구입한 후 커피 한잔... 커피 전문점 도토루에서 카페 모카를 하나 시켜 먹는 중... 드디어 공항으로 출발 간사이 공항역 바로 전 지하철 역에서 내려 링쿠 타운 아울렛이란 곳을 들렀다... 아기자기한 건물들... 가격도 세일중이라 그런지 저렴하게 보였다... 이 가게는 아울렛 내에 있는 레스토랑... 점심을 먹어야지... 점심 메뉴는 오무라이스... 뭐... 약간 짠 돈가스이긴 하지만 맛있다 ㅋㅋㅋ 하긴... 내 입에.. 더보기
일본 오사카 (2011/01/28) 일본 출장 3일째... 오전에는 업무가 없다보니 이곳 저것을 돌아다니기 시작... 택시 기사에게 Osaka Castle로 가자고 얘기를 하니까 못알아듣는다 ㅠ_ㅠ 결국 이래저래 도움을 받아서 꾸역꾸역 오사카 성에 도착... 오사카성으로 가는 길... 어딜 다녀봐도 일본 거리는 우리나라 거리보다는 상당히 깨끗하다... 뭐... 우리나라는 적은 거리에 많은 사람이 모여 있으니까 상대적으로 많이 지저분한 듯... 짠~! 오사카성 내의 천수각이라 불리는 건물... 7층짜리 건물이다보니 올라가다보면 면적이 점점 작아진다. 옥상에서는 주변의 전경을 볼 수 있다. 성은 내벽과 외벽이 있으며, 내벽과 외벽의 사이에는 물이 흐르고 있음 뭐... 물이 말라버린 지역도 있긴 한데... 아무튼... 이래서 성을 함락시키기가 .. 더보기
일본 오사카 (2011/01/27) 본격적으로 전시회장으로 출근... 전날 술을 먹었음에도 긴장되는 마음에 7시에 벌떡 일어나서 준비를 시작... 아침은 호텔의 조식으로 해결... 전시회장에서는 높으신 분들의(?) 연설이 시작되고 있었다. 아마도 전시회 주최자들과 축사 연설자 등등등 일듯하다. 안타깝게도 나는 일본어를 전~혀 못하므로, 어떤 얘기를 하는지는 잘 모르겠다... 아무튼... 좋은 말을 하고 있겠지? ㅋㅋ 테이프 커팅 ~~!! 그러면서 행사 시작... 사람들이 관심을 보이기 시작함... 하지만 일어를 못함... 고등학교 때 나에게 제2외국어를 독일어로 반강제로 선택하게 했던 담임선생님을 살짝 원망함... 동시에... 일어 공부하고 싶은 욕구 마구 업그레이드... 다시 호텔로 들어가서 회사 메일을 잠시 처리하고 다시 전시회장으로 .. 더보기
일본 오사카 (2011/01/26) 졸지에 생각지도 못한 일본 출장... 신분이 군인인지라 절차도 상당히 복잡하고 해서 준비하느라 정신이 없었음... 일본 오사카 지도 달랑 하나 출력하고 출장을 시작하게 되었다... 새벽 5시에 일어나서 김포 공항에 7시에 도착했는데도 시간이 빠듯했다... 꾸역꾸역 8시 반 비행기를 잡아 타고 간사이 공항 도착 !!! 공항은 상당히 깔끔하고, 각종 안내판에는 한글이 표기되어 있다. 일본인은 썩 영어를 잘 하는 편이 아니라고 들었었는데 적어도 여기서 그런 걱정은 전혀 하지 않아도 될것 같다. 인포메이션 센터에 안내원의 영어 발음을 듣고 내 발음이 부끄러워졌다 -_-;;; 지하철 노선도... 딱 2개 노선만 표시된 것이라 단순해 보이지만 일본 지하철은... 우리나라보다 상당히 복잡하고 노선이 많다... (사실.. 더보기