JAVA

Hagi 2011. 4. 10. 18:17

Hudson이란?

 

http://java.net/projects/hudson/

 

 Hudson은 지금은 Oracle의 일부분인 Sun micro systems의 엔지니어인 Kohsuke Kawaguchi라는 사람이 2005년부터 만들기 시작했다. 앞장에서 간단히 설명했지만 Hudson은 java.net에 포함된 프로젝트 중 하나로 최근 사용되는 CI툴 중 많이 사용되는 것중 하나다. Hudson의 장점 중 하나는 플러그인 형태로 지원되는 높은 확장성이다. 지금도 여러 종류의 플러그인이 개발되고 있는데 여러분이 Hudson을 설치한 서버에서 인터넷 연결만 가능하다면 별도로 다운로드하고, 압축을 푸는 작업 없이 Hudson플러그인 관리 화면에서 몇 번의 클릭만으로 다양한 플러그인을 추가할 수 있다. 필자가 이 책을 집필할 당시 Hudson에서 지원하는 플러그인의 개수가 이미 153개인데 앞으로도 그 수는 더욱 증가될 것으로 보인다.
 또 Hudson은 CI 툴로써 지원하는 형상관리 툴의 종류도 많은데, 기본적인 CVS와 Subversion 외에도 지원하는 형상관리 툴이 10개가 넘는다.
 게다가 Hudson의 가장 큰 장점은 클라우드 컴퓨팅을 제공한다는 것이다. 즉 200kb도 되지 않는 jar 파일을 전송하여, 여러 장비에서 Hudson의 각종 작업을 수행할 수 있다. Hudson과 클라우드에 대한 자세한 내용은 Hudson 커미터인 Kohsuke Kawaguchi와 Jesse Glick가 2009년 SunOne 컨퍼런스에서 발표한 'Continuous Integration in the Cloud with Hudson'이라는 자료에 자세하게 나와있다. 해당 문서는 인터넷에서 검색해보면 쉽게 찾을 수 있을 것이다.
  Hudson을 다운로드하고, 설치하는 방법을 알아보기 전에 Tomcat과 Subversion을 설치하고 사용하는 방법을 정리해 놓은 부록(웹 테스트 준비 및 Subversion 관련 부분)을 먼저 읽어봐야 한다. 이후의 설명은 부록을 읽고, Hudson을 설치할수 있는 기본 환경이 구축되어 있다는 것을 전제로 작성되었기 때문이다. 게다가 Ant를 이용하여 작업하기 때문에 부록을 읽어 본 후에 학습하면 한결 내용을 이해하기 쉬울 것이다. 
(참고 : 자바 개발자도 쉽고 즐겁게 배우는 테스팅 이야기/ p201~p202 / 이상민 / 한빛미디어 / 2009년)

 

 
 
 

JAVA

Hagi 2011. 2. 28. 14:49

아래와 같은 문제점이 발생하여 조사하게되었다.


long amt = 60000;

float feeRate = 13;

 (amt * feeRate * 0.01) => 7800.0

(amt * feeRate / 100) => 7800.0

(amt * (feeRate * 0.01)) => 7800.0


(feeRate/ 100) => 0.13

(amt * (feeRate/ 100)) => 7799.9995


이것은 자바의 문제만이 아니라 프로그래밍 언어의 전반적인 문제이다.


부동소수점(浮動小數點)[1] 방식은 실수를 표현할 때 소수점의 위치를 고정하지 않고 그 위치를 나타내는 수를 따로 적는 것으로, 유효숫자를 나타내는 가수(假數)와 소수점의 위치를 풀이하는 지수(指數)로 나누어 표현한다.


(가수)×(밑수)(지수)


참고 :  http://ko.wikipedia.org/wiki/%EB%B6%80%EB%8F%99%EC%86%8C%EC%88%98%EC%A0%90




http://www.h-schmidt.net/FloatApplet/IEEE754.html 에서 13/100 을 계산해본 결과이다. 

float보다 더 정확하다는 double에서 조차 값이 정확하게 떨어지지 않는다.


float

1 bit8 bits23 bits
Signexponentsignificand

double 

1 bit1152
Signexponentsignificand
(참고 : http://www.particle.kth.se/~lindsey/JavaCourse/Book/Part1/Tech/Chapter02/floatingPt2.html)


다른 참고 :

http://support.microsoft.com/kb/42980/ko

http://mindprod.com/jgloss/floatingpoint.html

http://download.oracle.com/javase/6/docs/api/java/lang/Float.html#floatToIntBits(float)

http://en.wikipedia.org/wiki/IEEE_754

http://kldp.org/node/82589

http://karmainearth.tistory.com/tag/2%EC%A7%84%EC%88%98%20%EB%B3%80%ED%99%98


이메일로 답변을 주신 navs, Fabrizio Gianneschi , Bruno Souza 님께 감사를 드린다.





 
 
 

JAVA

Hagi 2011. 1. 7. 16:18

<%@ taglib prefix="c" uri="http://java.sun.com/jstl/core" %>
<html>
<head>
<title>JSTL Simple Conditional Execution Example</title>
</head>
<body bgcolor="#FFFFcc">
<h1>For Loop in JSTL</h1>
<c:forEach var="i" begin="1" end="20" step="1" varStatus ="status">
<c:out value="${i}" /> 
</c:forEach>
</body>
</html>


참고 : http://www.roseindia.net/jsp/simple-jsp-example/JSTLForLoop.shtml