가지고 있던 북마크를 정리하다가 보인 이 녀석을 기록으로 남긴다.

JDK 1.3 이나 1.4 버전 등을 찾으러 다니기 귀찮았는데, 이렇게 정리가 되어 있는 페이지를 찾고서 북마크해둔다.
자바와 관련된 내용들을 정리해두고 필요할때마다 찾자.

package system.tunning;

public class StopWatch {
	private long startTime;
	private long elapsedTime = 0;
	private StringBuffer currentName;
	private boolean threadFlag = false;
	

	public StopWatch() {
		currentName = new StringBuffer();
		startTime = System.nanoTime();
	}
	
	public StopWatch(boolean threadFlag) {
		changeMessage("", threadFlag, true);		
	}
	
	public StopWatch(String message) {
		changeMessage(message, false, true);
	}
	
	public StopWatch(String message, boolean threadFlag) {
		changeMessage(message, threadFlag, true);
	}
	
	public void start() {
		startTime = System.nanoTime();
		elapsedTime = 0;		
	}
	
	public void stop() {
		elapsedTime = System.nanoTime() - startTime;
	}
	
	public void changeMessage(String message, boolean threadFlag, boolean resetFlag) {
		StringBuffer threadName = new StringBuffer();
		this.threadFlag = threadFlag;
		
		if(threadFlag) {
			threadName.append("ThreadName = ").append(Thread.currentThread().getName());
		}
		
		this.currentName.append("[").append(message).append(threadName).append("] ");
		
		if(resetFlag) {
			start();
		}
	}
	
	public double getElapsedMS() {
		if (elapsedTime == 0 ) 
			stop();
		return elapsedTime/1000000.0;
	}
	
	public double getElapsedNano() {
		if (elapsedTime == 0 )
			stop();
		return elapsedTime;
	}
	
	public String toString() {
		if (elapsedTime == 0) 
			stop();
		currentName.append("elapsed Time : ").append(elapsedTime/1000000.0).append("ms");
		return currentName.toString();
	}
}

is(6) 메소드에서 오류가 나는 이유를 몰랐다!

package springbook.learningtest.jdk;

import org.junit.Test;
import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;


public class ReflectionTest {
	@Test
	public void invokeMethod() throws Exception {
		String name = "Spring";
		
		//length()
		assertThat(name.length(), is(6));
		
	}
}


이클립스 환경을 보면, 
에서 보는 것처럼 hamcrest 가 추가되어 있는데 말이다. ㅡ_-);; 저걸로 부족했던건가?

그래서 인터넷을 뒤지다보니 
두 개의 글을 보고서 무언가가 빠졌다는 것을 느꼈다. 그래서 급히 인터넷을 검색
구글 검색 : hamcrest library eclipse
hamcrest 위키를 발견했다. 
그곳에서 hamcrest-all-1.2.jar  받아서 java lib/ext에 추가했다.
그리고 이클립스를 재가동 한 후에
import static org.hamcrest.CoreMatchers.*;
을 추가하고 나니 별 이상없이 정상적으로 수행된다.

Junit(4.8) 에 기본포함되어 있는 hamcrest core 에 존재하는 Matcher 클래스와는 다른 별도의 패키지에 is(int) 형 메소드가 존재하는 것으로 보인다!? 맞나?
이건 어디까지나 나의 섯부른 추측일 뿐이다. ㅡ_-);

클린코드
카테고리 미분류
지은이 로버트 C. 마틴 (케이앤피IT, 2010년)
상세보기


public class SetupTeardownIncluder {

	private PageData pageData;
	private boolean isSuite;
	private WikiPage testPage;
	private StringBuffer	newPageContent;
	private PageCrawler pageCrawler;
	
	public static String render(PageData pageData) throws Exception {
		return render(pageData, false);
	}
	
	public static String render(PageData pageData, boolean isSuite) throws Exception {
		return new SetupTeardownIncluder(pageData).render(isSuite);
	}
	
	private SetupTeardownIncluder(PageData pageData) {
		this.pageData = pageData;
		testPage = pageData.getWikiPage();
		pageCrawler = testPage.getPageCrawler();
		newPageContent = new StringBuffer();
	}
	
	private String render(boolean isSuite) throws Exception {
		this.isSuite = isSuite;
		if (isTestPage())
			includeSetupAndTeardownPages();
		return pageData.getHtml();
	}
	
	private boolean isTestPage() throws Exception {
		return pageData.hasAttribute("Test");
	}
	
	private void includeSetupAndTeardownPages() throws Exception {
		includeSetupPages();
		includePageContent();
		includeTeardownPages();
		updatePageContent();
	}
	
	private void includeSuiteSetupPage() throws Exception {
		include(SuiteResponder.SUITE_SETUP_NAME, "-setup");		
	}
	
	private void includeSetupPage() throws Exception {
		include("Setup", "-setup");		
	}
	
	private void includePageContent() throws Exception {
		newPageContent.append(pageData.getContent());
	}
	
	private void includeTeardownPages() throws Excepton {
		includeTeardownPage();
		if (isSuite)
			includeSuiteTeardownPage();
	}
	
	private void includeTeardownPage() throws Exception {
		include("TearDown", "-teardown");
	}
	
	private void includeSuiteTeardownPage() throws Exception {
		include(SuiteResponder.SUITE_TEARDOWN_NAME, "-teardown");
	}
	
	private void updatePageContent() throws Exception {
		pageData.setContent(newPageContent.toString());
	}
	
	private void include(String pageName, String arg) throws Exception {
		WikiPage inheritedPage = findInheritedPage(pageName);
		if ( inheritedPage != null ) {
			String pagePathName = getPathNameForPage(inheritedPage);
			buildIncludeDirective(pagePathName, arg);
		}
	}
	
	private WikiPage findInheritedPage(String pageName) throws Exception {
		return PageCrawlerImpl.getInheritedPage(pageName, testPage);
	}
	
	private String getPathNameForPage(WikiPage page) throws Exception {
		WikiPagePath pagePath = pageCrawler.getFullPath(page);
		return PathParser.render(pagePath);
	}
	
	private void buildIncludeDirective(String pagePathName, String arg) {
		newPageContent
			.append("\n!include ")
			.append(arg)
			.append(" .")
			.append(pagePathName)
			.append("\n");
	}
}
오늘 불현듯 '나를 위해서, 다른 이들을 위해서' 할 수 있는 것이 뭘까 고민해봤다.

OpenSource Project를 진행해보자.

내가 유용하게 사용하여 왔던 것들에 대한 보답을 할 때가 된 것 같다.

흠... 그런데 뭘 하면 좋을까??

'Programming' 카테고리의 다른 글

내가 짰던 코드를 회상하며,  (0) 2011.03.09
에디터에 대해서  (0) 2011.03.09
Types of software architects  (0) 2011.01.01
What dows 'PMD' mean?  (0) 2010.12.31
[Velocity] velocity.properties  (0) 2010.03.13

+ Recent posts