Java 예외(Exception) 처리에 대한 작은 생각 일상생활에서도 기본적인 것은 고민하지 않고 습관처럼 사용하는 경우가 있다. 초급 개발자인 나에게 ‘예외(Exception)’이 바로 그런 것이었다. 처음 JAVA수업 때 강사님께 "왜 로직을 try문으로 감싸고, 또 catch(e)는 무엇인가요?"라는 질문을 한 적이 있다. 돌아온 대답은 "이렇게 안하면 에러가
설계 노하우: 복잡한 체크로직 처리 프로젝트를 진행 중 여러 조건을 체크하여 프로세스를 수행해야 하는 상황이 있었다. 조건을 체크하기 위한 로직(본문에서는 ‘CheckeLogic’로 명명) 들이 적게는 10개에서 수십 개까지 늘어날 수도 있다. 문제는 이 CheckLogic만이 아니었다. 한가지의 대상에게만 적용하여 체크하는 것이 아니라 CheckLogic이 적용되는 항목의 수가 100여개, 중복까지 합하면
플러그인으로 Maven 버전문제를 해결하다. 현재 운영중인 시스템이 메이븐1 기반이지만 메이븐2.x 로 버전업을 효율적으로 하기 위해 메이븐 플러그인을 구현하여 적용하는 방법에 대해서 알아보겠습니다. 1. 메이븐 버전업이 필요한 배경 얼마전 제가 참여했던 프로젝트의 사이트(이하 S사)는 코어시스템을 비롯하여 관련된 많은 시스템들이 메이븐1 기반으로 구현및 운영되고 있었습니다. 하지만 메이븐1.
AngularJS를 소개합니다. 앞선 프로젝트에서는 자바스크립트를 이용한 클라이언트 개발을 많이 하게 되었다. 따라서, 화면에서 데이터를 입력하고 입력한 값을 이용하여 서버측으로 요청하기 위한 데이터를 파싱하는 작업이 필요하고 반대로 서버측에서 응답받은 데이터를 이용하여 화면을 구성하는 작업이 대부분이다. 이러한 작업을 하기위해 최초에 화면을 구성하기 위해서는 서버측에 요청을 보내고, 서버로부터 응답받은
프로젝트이야기 1: 보험분야 프로젝트 명 : 부가서비스 관리 시스템 개선 에필로그 2013년 길고 길었던 겨울의 추위가 누그러지고 있는 2월 어느 날 유병헌 부장에게 한 통의 전화가 걸려 왔다. 고객사 PMO에게 제안서 한 부 받아와서 전달해 달라는 것이었다. 당시 진행 중인 프로젝트는 최종 검수가 완료되었고, 프로젝트 참여한 인력들이 그대로
MyBatis: 데이터 접근 프레임워크 기존에 많은 프로젝트에서 퍼시스턴스 프래임워크 사용시 IBATIS를 사용하였다. IBATIS 2.x 버전을 주로 사용했었으며 잠시 3.0버전을 사용했었다. 이후 이번 프로젝트에서 MyBatis를 적용하게 되었다.MyBatis는 IBATIS의 후속버전이며 IBATIS는 2010년 자바와 닷넷 주요개발자들을 포함한 팀전원이 아파치 소프트웨어 재단에서 구글 코드로 이전하기로 결정했다고 공표한 후 중단되었다.
JSDT(Javascript Debug Toolkit) in Eclipse 다양한 웹 브라우저를 지원하는 Javascript Debugger Javascript를 디버깅하는 방법을 생각해 보면, 해당 소스의 포인트에 alert, console.log와 같은 기능을 사용해서 데이터, 기능수행여부 등을 확인하는 고전적인 방법이나, 각종 웹브라우저(Chrome, Firefox, IE…)의 개발자 도구에서 제공하는 다양하고 편리한 디버깅 기능을 사용하는 것이 대표적인 방법일 것이다.
SonarQube를 이용한 지속적인 품질 관리 소프트웨어 개발은 크게 기능과 비기능 요건을 충족하도록 구현하는 대전제가 있는데, 왜냐하면 이 두가지 모두를 충족하지 못하면 어떤 형태로든 문제가 발생되기 때문입니다. 기능은 충족했지만, 성능, 보안, 확장성, 변화가능성 등의 수많은 비기능 요건을 충족하지 못해서 결국 재작업이라는 추가 비용이 발생되는 경우도 많이 있습니다. 비기능 요건이 기능
빅데이터: RDB Capacity 테스트 프로젝트를 수행하다 보면 고객의 요구사항을 최대한 수용해주고 싶지만 그럴 수 없는 상황을 만나곤 한다. 이번 프로젝트에서도 그러한 상황이 발생했는데 바로 빅데이터를 오라클에 저장하고 싶은 고객의 요청이 그러했다. 빅데이터 분석 프로젝트를 진행하면서 여러가지 상황을 접해 보았고 여러가지 기술들을 비교해보고 다양한 방법으로 빅데이터를 분석해 보았다. 그렇게
Oracle Explain Plan 사용 Oracle Explain Plan 프로젝트를 진행하면서 다양한 문제에 경험하게 되고 그 문제를 해결하는 일을 반복하는데 그 중 하나가 Oracle 성능 문제다. 개발을 하면서 많이 만들었던 기능 중 하나가 통계였다. 각종 데이터들의 통계를 결과를 갖는 SQL문을 작성하다 보면 비교적 많은 Table을 Join 관계를 갖도록 하고 복잡한
Fitnesse 통합테스트 1.배경 프로젝트 초창기 PMO와 QAO팀은 프로젝트의 품질을 높이기 위한 방안에 대하여 논의를 진행했다. 단위 기능에 대한 검증은 기존에 사용하던 바와 같이 Junit 을 통해 해결을 할 수 있었으나 각 비즈니스 도메인 사이의 연계에 대한 검증은 아직 정확한 솔루션을 결정하지 못한 상태였다. 프로젝트의 도메인
jqPlot으로 그래프 그리기! 글을 쓰기 전에.. 입사 후 처음으로 참여한 프로젝트도 어느덧 마무리를 향하고 있고, 프로젝트를 진행하면서 여러 가지 기술들을 접해보고 배웠습니다. 그 중에서 가장 의미 있는 기술에 대해 글을 쓰려고 하는데, 처음으로 내가 알고 있는 기술을 다른 사람들에게 소개를 하게 되어 매우 설레는 마음으로 조심스레 글을
빅데이터: 플럼(Flume) 토폴로지 설계 1. About Flume 플럼은 인공수로, 용수로 등의 사전적 의미를 가진다. 여러 서비스 제공 서버에 산재해 있는 로그들을 하나의 로그 수집서버로 모으는 역활을 수행해야하는 수집기로서 어울리는 이름이다. 전형적인 Converging Flow 의 구조로 구성되는 Flume은 스트림 지향의 데이터 플로우를 기반으로 하며 지정된 모든 서버로 부터 로그를
디자인 패턴: Abstract Factory와 코드 중복 없애기 C 언어로 작성한 프로그램을 Java 언어로 바꾸는 프로젝트에 참여하였다. 단순히 옮겨 적는 일이라 생각했었으나, 실제로는 언어사이의 차이가 있어서 생각만큼 쉽지는 않았다. 그중 가장 큰 작업은 C 프로그램에서 많이 나타난 중복코드 처리였다. 중복 코드를 그대로 옮겨 적어야 할지, 아니면 Java 언어의 특성을 살려 제거를 할
SW 릴리스를 간편하게 - Maven plugin + Jenkins 다양한 형태의 소프트웨어들(OS, 응용프로그램, WAS, DB, 오픈소스, 3rd party 프레임워크, 라이브러리 등)은 공통점을 가지고 있습니다. 소프트웨어의 버전(Version) 입니다. 그리고 대부분 Release Note 라는 문서 파일이 같이 포함되어 어떤 버그가 수정되었는지, 어떤 기능이 추가되었는지, 또는 어떤 개선이 이루어져있는지 등의 정보를 소프트웨어를 사용하는
내겐 너무 이쁜 Fusion Chart 들어가며.. 새로운 프로젝트를 들어가면서 처음 접해본 기술은 차트를 그릴 수 있는 Fusion Chart라는 스크립트 API였습니다. 프로젝트에서의 요구사항은 계획과 실적을 비교하여 볼 수 있도록 화면에 표시할 수 있고, 추세선을 선택하여 보여줄 수 있는 그래프를 만드는 것 이였습니다. 그래서 스크립트로 화면에 차트를 그릴 수 있고 잘
CI와 Execute Shell을 이용한 자동배포 부터 서버 실행까지….. 프로젝트 초반에 CI를 도입하기 전, 배포를 했었을 때 매우 불편한 점이 많았다. 로컬에서 개발한 소스코드를 개발계 서버에서 테스트, 검증을 하기위해 나는 * 매번 빌드를 해야 했으며, * 개발용 서버에 접속하여 파일을 옮겨야 했으며, * WAS를 재실행 해야 하는 불편을 느꼈다. 기존에는 CI툴은 지속적인 빌드, unit 테스트를 해주는
디자인패턴: AOM 프로젝트 일등공신은 바로 A.O.M 지난 2년 반이라는 기간 동안 유럽, 인도네시아, 베트남, 중국의 총 4개의 해외법인 시스템을 오픈 하였습니다. 2년 반이라는 짧은 시간 동안 어떻게 4개의 시스템을 오픈 할 수 있었을까요? 이의 가장 큰 일등공신을 상품 시스템에 적용 된 A.O.M
정보시스템 운영 및 유지보수 프로세스 구축 소프트웨어 공학에서 ‘60/60 법칙’이 있습니다. 즉, 소프트웨어를 유지보수하는데 드는 비용은 40~80% 정도 발생하며 (평균 60% 정도), 유지보수 비용 중에 60%가 새로운 기능으로 고도화시키거나 강화하는데 드는 비용이 든다는 것입니다. [1] [2] 따라서, 많은 기업이나 공공기관에서는 정보시스템 유지보수를 위해 운영 및 유지보수
디자인패턴: Chain of Responsibility를 이용한 디멘션 검증 Chain of Responsibility 패턴이란. 어떤 프로세스가 일어났을때 그 프로세스를 처리할 책임을 적당한 대상한테 넘겨주게 됩니다. Exception을 throw하는것도 비슷한 원리인데, Chain of responsibility pattern은 예외 만이 아니라 사건에 대한 처리역할을 적당한 대상에게 가도록 해주는 기법입니다. 이에 더하여 발생한 이벤트를 체인에 속한 여러 처리자에 걸쳐 처리할
JET를 이용한 소스코드 생성 코딩을 하다 보면 특정 패턴에 의해 반복적인 코드생성이 일어나며 대부분의 경우 Copy and Paste로 작업이 이루어진다. 이를 개선할 수 있는 쉽고 효율적인 작업 방법은 없을까?.. 여기 하나의 대안으로 JET를 소개한다. JET(java Emitter Templates) 란 JSP 문법을 사용하여 생성하려는 코드 템플릿을 쉽게 작성할 수