URL : http://jakarta.apache.org/

위키 : http://ko.wikipedia.org/wiki/자카르타프로젝트

설명 : The Apache Jakarta™ Project offers a diverse set of open source Java solutions

자카르타 프로젝트는 자바에 대한 개방형 오픈소스 자바 솔루션을 제공한다.

개인적으로 Ant, Commons, Logging, Maven, Struts, Taglibs, Tomcat, Velocity)는 조금 사용해본 것 같다. 아주 조금...

제공 솔루션

 

이 글은 스프링노트에서 작성되었습니다.

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

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();
	}
}

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


import java.io.BufferedReader;
import java.io.File;
import java.util.List;
import java.util.Set;

public class CodeAnalyzer {
	private int lineCount;
	private int maxLineWidth;
	private int widestLineNumber;
	private LineWidthHistogram lineWidthHistogram;
	private int totalChars;

	public CodeAnalyzer() {
		lineWidthHistogram = new LineWidthHistogram();
	}
	
	public static List<File> findJavaFiles(File parentDirectory) {
		List<File> files = new ArrayList<File>();
		findJavaFiles(parentDirectory, files);
		return files;
	}
	
	public static void findJavaFiles(File parentDirectory, List<File> files) {
		for(File file : parentDirectory.listFiles()) {
			if (file.getName().endsWith(".java"))
				files.add(file);
			else if (file.isDirectory())
				findJavaFiles(file, files);
		}
	}
	
	public vvoid analyzeFile(File javaFile) throws Exception {
		BufferedReader br = new BufferedReader(new FileReader(javaFile));
		String line;
		while ((line = br.readLine()) != null)
			measureLine(line);
	}
	
	private void measureLine(String line) {
		lineCount++;
		int lineSize = line.length();
		totalChars += lineSize;
		lineWidthHistogram.addLine(lineSize, lineCount);
		recordWidestLine(lineSize);
	}
	
	private void recordWidestLine(int lineSize) {
		if (lineSize > maxLineWidth) {
			maxLineWidth = lineSize;
			widestLineNumber = lineCount;
		}
	}
	
	public int getLineCount() {
		return lineCount;
	}
	
	public int getMaxLineWidth() {
		return maxLineWidth;
	}
	
	public int getWidestLineNumber() {
		return widestLineNumber;
	}
	
	public LineWidthHistogram getLineWidthHistogram() {
		return lineWidthHistogram;
	}
	
	public double getMeanLineWidth() {
		return (double)totalChars/lineCount;
	}
	
	public int getMedianLineWidth() {
		Integer[] sortedWidths = getSortedWidths();
		int cumulativeLineCount = 0;
		for (int width : sortedWidths) {
			cumulativeLineCount += lineCountForWidth(width);
			if (cumulativeLineCount > lineCount)
				return width;			
		}
		throws new Error("Cannot get here");
	}
	
	private int lineCountForWidth(int width) {
		return lineWidthHistogram.getLinesforWidth(width).size();
	}
	
	private Integer[] getSortedWidth() {
		Set<Integer> widths = lineWidthHistogram.getWidths();
		Integer[] sortedWidths = (widths.toArray(new Integer[0]));
		Arrays.sort(sortedWidths);
		return sortedWidths;
	}
	
}


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) 형 메소드가 존재하는 것으로 보인다!? 맞나?
이건 어디까지나 나의 섯부른 추측일 뿐이다. ㅡ_-);

+ Recent posts