JUnit 이 무엇인가?


간단하게 테스트를 위한 클래스를 만들고 테스트 하는거..


메소드 몇개 정리하고 갑니다.


Methods

 - assertEquals(A, B)

   A와 B가 일치하는지를 조사한다. A, B에는 Object, int, float, long, char, boolean등 모든 자료형이 들어갈 수 있다. 단 A, B의 타입은 언제나 같아야만 한다.

 - assertTrue(K)

   K가 참인지를 조사한다.

   K는 boolean형태의 값이어야 한다.

 - assertFalse(K)

   K가 거짓인지를 조사한다. assertTrue와 반대

   K는 boolean형태의 값이어야 한다.

 - assertNotNull(Object A)

   A가 Null이 아닌지를 확인한다.

   Null이라면 assertionFailedError가 발생

 - assertNull(Object A)

   A가 Null인지를 확인한다.

   Null이 아니라면 assertionFailedError가 발생

 - assertSame(Object A, Object B)

   A와 B가 같은 객체인지를 조사한다.



물론 목객체 라든지 다른 방법들도 있는데 작은단위에서 널리 활용될 메소드들이다.


버퍼 같은것도 많이 사용되는듯 하고..


퍼트려도 될런진 몰르지만.. 배포는 아니니.. 오래 되었지만 참고할 만한 동영상 링크도 걸어 보겠..;;


http://xper.org/LineReaderTdd/

동영상이다 걍 보쟈..


(문제가 된다면 삭제 하겠습니다.)


글고 메소드나 사용법등이 자세히 되어있는 블로그다

http://netrance.blog.me/110169530575

자바 가상 머신(영어: Java Virtual MachineJVM)은 자바 바이트코드를 실행할 수 있는 주체이다. 일반적으로 인터프리터나 JIT 컴파일 방식으로 다른 컴퓨터 위에서 바이트코드를 실행할 수 있도록 구현되나 자바 프로세서처럼 하드웨어와 소프트웨어를 혼합해 구현하는 경우도 있다. (이론적으로는 100% 하드웨어 구현도 가능하나 비효율적이다) 자바 바이트코드는 플랫폼에 독립적이며 모든 자바 가상 머신은 자바 가상 머신 규격에 정의된 대로 자바 바이트코드를 실행한다. 따라서 표준 자바 API까지 동일한 동작을 하도록 구현한 상태에서는 이론적으로 모든 자바 프로그램은 CPU나 운영 체제의 종류와 무관하게 동일하게 동작할 것을 보장한다.


위키 

http://ko.wikipedia.org/




JDK, JRE, JVM

출처: http://arabiannight.tistory.com/302

JDK : Java Development Kit

말 그대로 자바 개발을 위한 도구(Kit) 입니다. 자바 컴파일러(Javac), 자바가상머신(JVM), 각종 Java Libary 등을 포함하고 있어서 자바 개발을 위한 필수 도구(Kit) 입니다. JDK는 JRE를 포함하고 있습니다. (JDK 설치시 JRE도 설치됨)


JRE : Java Run Environment

역시 말 그대로 자바 실행 환경 이라고 보면 됩니다. Java 파일 실행을 위한 환경이며 JVM이 실행되도록 도와 주는 역할을 합니다. 만약 자바 개발이 필요없고 실행만을 원한다면 JRE만 설치하고 Java 파일을 실행하면 됩니다.


JVM : Java Virtual Machine

사용자가 Java 파일을 생성한 후 JDK의 컴파일을 거쳐 바이트코드(.class)가 되어 JVM을 거치면 컴퓨터가 사용할 수 있는 기계언어로 변경해주는 역할을 합니다.


자바 실행 흐름 : 사용자 Java 코드 생성 -> JDK 컴파일 (.class 파일 생성) ->  JVM -> 실행



JVM이란?


출처 : http://romenz.tistory.com/2


 Java Virtual Machine 를 줄인 것으로 자바를 실행하기 위한 기계라고 할 수 있다.

가상머신은 소프트웨어로 구현된 하드웨어를 뜻하는 넓은 의미의 용어로, 마찬가지로 가상컴퓨터라는 것은 컴퓨터 안에 소프트웨어로 구성된 가상의 컴퓨터 즉 컴퓨터 속에 컴퓨터라고 생각하면 된다.


자바로 작성된 것은 모두 JVM을 통해 실행되기 때문에, 자바를 코딩하고 실행하기 위해서는 컴퓨터기기에 반드시 JVM이 설치되어 있어야 한다.


일반 윈도우나 리눅스 응용프로그램들은 OS를 통해 하드웨어나 기타 제어를 하게 되는데 Java의 경우 가상머신(JVM)을 한 번 더 거치기 때문에 실행시 속도가 약간 느리다는 단점이 있다. 그러나 향상된 컴파일러 기술이 적용되어 속도의 격차는 현재도 줄어들고 있다.


JVM은 OS에 맞는 것이 필요하기 때문에 자신의 컴퓨터에 깔려있는 OS에 맞는 JVM을 설치해야 한다.


Java 가 뭔지 궁금해 시작한 포스팅


책을 봐도 읽히지가 않고

고3 이 된듯한 착각을 했다.


분명 그림도 많은데.. 문제가 뭘까? 


이유가 있었다 그림을 못읽은것;; 


UML 클래스 다이어그램 기본상식 ( C# )

 ↑링크를 눌러서 보고 옵시다!!


위 제목의 글이 나에겐 도움이 되었다.


뭔지 본적 있다. 하지만 자세히 보려 한적이 없었다.

ERD 비스므리 하다 생각했다.


맞는것도 같다.


여튼 참 많은 도움이 되었다 UML 클래스 다이어그램 +_+


근데 기억을 해야 하느니라.. 


위에 링크도 멋지지만 아래 링크들도 한번 보고 갑시다!!

UML 기본 표기법  http://hyeonstorage.tistory.com/trackback/13

UML Diagram의 종류 http://hyeonstorage.tistory.com/trackback/14

UML 모델링 사례  http://hyeonstorage.tistory.com/trackback/15



들어가는말.


난 전산 개발자로써 장장 7년을 일했고, 8년차를 채워가고 있다.

그 와중에 이러저러한 이직, 툴 변경 으로 인해 많은 혼란을 겪어왔다.


이제는 Java 개발자다.

해봤다. 경험해 봤다. 실제 그렇다.


하지만 모르겠다. 

따로 공부한건 기억도 안나는 학교에서가 마지막인걸로 기억한다.


다시 공부하는 맘으로

문법부터 다시 적어 볼 요량으로 이것저것 적어본다.

물론 나도 모르니 인터넷 뒤져서 남에꺼도 훔쳐오고 그럴꺼다.


늦었다 생각 되면 늦은거라지만,

지금 시작하지 않으면 나중엔 더 늦은 시작일 테니까....


들어가는말 끝.







오늘의 주제. Java 가 뭐에요?

구글을 안쓰고 네이버를 쓰면 웬지 뭔가 그... 

애플왕국의 지배를 받는 (미안 애플빠들~ 펌하 아님!! 갠적 견해일뿐;; ) 그런 느낌인가 싶어 구글링함

걍 구글링 이라기도 민망한 구글 검색창에 타이핑 해 봄 java 라고



딴데서 얻기보단 JAVA라고 처음뜬 실제 java 사이트를 들어가 보쟈고 링크를 눌러봄.


헐. 내가 궁금해 하던게 딱 있었음.



http://www.java.com/ko/download/whatis_java.jsp


하지만 지들자랑임.. 

내가 정작 원했던 그런 대답은 뭐지? 


난 이제 나름 웹 개발자 이며, 자바 개발자 라고도 불리우니까

java 개발 에 대해 더 알아야 하지 않을까?

http://www.java.com/ko/about/


꼬리에 꼬리를 물고.. 화면캡쳐도 지겹고...

여튼 결론으론 오라클사에서 자바를 잡아먹었고, 그로인해

오라클이라고 붙은 자바에서 개발자를 위한 사이트를 열어 주셨다. 이전부터 있었는진 난 모른다.

여튼 주소..

http://www.oracle.com/technetwork/java/index.html


참조 하시길 바란다.

제길 영어울렁증 ㅠㅠ 다 영어다. 꼭 반드시 맘이 평온할때 천천히 보리라...

후우.....



많이들 java의 역사로 시작들 많이 하시던데..

걍 창시자 정도만 알고 가쟈.. 제임스 고슬링 아즈씨

 

자바 프로그램을 최초 개발하여 `자바의 아버지`라 불리며 세계적으로 가장 영향력 있는 프로그래머 가운데 한 사람 자바 이외에도 다중 프로세서용 유닉스와 컴파일러 / 메일 시스템 / 데이터 인식 시스템 등을 개발하였다.

 

개발자에게는 마이크로 소프트의 빌 게이츠만큼이나 유명하지만 정통 개발자 특유의 은둔 덕후 성향 때문에 세상에 널리 알려지지는 않았다.

 

그는 자바 커피를 하루에도 10잔 이상 마시는 자바 예찬론자로도 유명함 자바(Java)라는 프로그램 명칭은 인도네시아에서 유명한 커피 재배지 Java에서 따왔다고 한다


소녀시대 덕후라는 소문도 있다;; (걍 닮은 사람이라고 하드라;;)



결론.


제임스 아저씨 고마워요~

덕분에 공부할께 한트럭이네요..


덕분에 먹고도 살아요.


캐나다에서 은둔하며사는 가장 영향력 있는 프로그래머들 가운데 한 사람인 제임스 고슬링 아즈씨(자바 애비) + 몇몇 개발자 가  처음에는 가전제품 내에 탑재해 동작하는 프로그램을 위해 개발했지만 현재 웹 애플리케이션 개발에 가장 많이 사용하는 언어 가운데 하나이고, 모바일 기기용 소프트웨어 개발에도 널리 사용하고 있는 객체 지향적 프로그래밍 언어이며, 썬 마이크로시스템즈에서 무료로 제공하고 있다.


+ 그래서 그게 뭔데?? 라는 의문을 남기며.


이번 포스팅 끝!!






Javadoc 생성시 다음과 같이 인코딩 에러가 발생할 경우에는..

: unmappable character for encoding MS949

 

다음과 같이 "-encoding UTF-8" 옵션을 설정하면 된다. J

 


참고로 나는 다음과 같이 3가지 옵션을 모두 사용한다.

-encoding UTF-8 -docencoding UTF-8 -charset UTF-8


http://docs.oracle.com/javase/6/docs/technotes/tools/solaris/javadoc.html#options


서버를 이용하지 않고 JavaScript만을 이용해서 화면 캡쳐하는 방법.

http://html2canvas.hertzen.com/

 

 

Java에서 unsigned short 가 없나 보구나? 업무상 간단한 알고리즘 만들어 보려다가 안되서 찾아보니 정말 인 것 같다. 아.. 어렵다. 언어도 어렵고 알고리즘도 어려워 ㅜㅜ

 

http://en.wikipedia.org/wiki/Integer_(computer_science)#Short_integer

 

spring 으로 개발하다보면 인코딩을 설정해줄 필요가 있는데 이때 각각 모든 뷰에 설정할 수도 있지만 web.xml에 filter를 등록함으로써 한번에 할 수도 있다.



  springCharacterEncodingFilter
  org.springframework.web.filter.CharacterEncodingFilter
  
    encoding
    UTF-8
  
  
    forceEncoding
    true
  



  springCharacterEncodingFilter
  /*

위는 spring 설정이고 tomcat에서도 할 수 있는듯한데 나는 잘 안되더라. 위에 springframework 의 filter-class대시 org.apache.catalina.filters.SetCharacterEncodingFilter 를 쓰면 톰켓에서 헨들링하는 것 같다.

이클립스에서 톰캣으로 개발할 때 js, css처럼 정적 파일을 수정할 때도 꽤 오래 기다리거나 이를 못 참을 경우 서버를 재 시작 해야 할 때가 있다. 아마 톰켓 디렉터리로 publish 하기 때문인 것 같다. (틀린다면 댓글 남겨주세요) 하지만 이를 빠르게 하는 방법이 있다. 즉 톰켓 폴더로 publish 하지 않고 바로 workspace를 참조하여 실행하는 방법이다. 아래 화면처럼 따라해보자.

 

Tomcat 더블 클릭

 

Serve modules without publishing 옵션 체크

 

한 페이지짜리 레퍼런스 문서 링크

http://static.springsource.org/spring-security/site/docs/3.2.x/reference/springsecurity-single.html


구 버전을 보고 싶으면...

http://static.springsource.org/spring-security/site/docs/


자바.. 참 재미있으면서 골치아프다. 설정의 묘미란.. -_-



Spring에서 interface를 만들어야 하는 이유가 뭘까? 일주일 전 쯤 처음 spring 을 접할때 이런 의문을 가졌었고 그 후 일주일 후 개발을 진행해 가면서 이 의문이 풀리게 되었다. 토비의 책에도 나와있는 내용이지만 실제 경험을 통해 느끼게 되었다. 그 이유는 다음 3가지이다.


  1. 변하지 않는 소프트웨어는 없다.
  2. 객체지향 개념에 더 맞는다.
  3. 테스트를 위해서 이다.


이 중 마지막 테스트를 위해서 만든 다는 것이 진리인 것 같다. 보통 Junit 을 이용해 테스트 케이스를 만드는데 이 경우 약한 결합의 구현이 없다면 유연한 테스트가 불가능하다. 하지만 이 경우도 아니고 절대 never never 변할지 않을 부분이라면 성능 저하를 가져오면서 까지 concrete 하지 않은 구현체를 만들지 않을 필요는 없다고 생각한다. 하지만 테스트는 왠만해서는 필수다. 테스트 없는 개발은... 너무 눈가리고 뛰어가는 것과 같다고나 할까? 어디로 가고있는지 언제 넘어질 지 모르는 것 같다.


 

이클립스가 갈 수록 느려지는 것 같다. 아니면 내 pc성능이 시대에 뒤떨어지던가 둘 중에 하나이다. 그래서 이클립스 성능을 향상시킬 수 있는 간단한 팁을 하나 알려드려 고자 한다. 이건 사실 이클립스의 성능향상이라기 보다는 많은 리소스를 사용하지 않도록 제한해서 속도가 느려지는 것을 미연에 방지하는 팁이다. 설정 창에 가서 아래와 같이 옵션을 설정해보자.

 

 

Close editors automatically 옵션을 설정하고 나는 4로 했는데 이처럼 해놓으면 창이 열리는 개수를 제한한 수 있다. 만약 4개 이상 열리면 자동으로 이전 창이 닫히고 4개로 유지된다. 프로젝트를 탐색하다 보면 나도 모르는 사이에 창이 많이 열려서 이클립스가 느려지는 경우가 자주 있었고 그럴 때마다 나는 close all로 닫곤 했는데 상당히 귀찮았다. 이 옵션으로 좀 더 편하게 개발할 수 있게 된 것 같다. 이클립스 참 좋다.. 설정이 너무 많아서.. ㅎㅎ (그래도 느리면 다른 튜닝을~ J)

 

그래 난 이게 궁금했다... 

**라고 쓰는 설정이 뭔지, 찾아보니 *는 원 뎁스만을 의미하고 **는 다중 뎁스까지 포괄한다.

 

예를들면 아래와 같다.

<patternset id="non.test.sources">

  <include name="**/*.java"/>

</patternset>


http://bytes.com/topic/java/answers/18590-double

'**' will match multiple directory levels, '*' only one level.

 

Junit에서 Exception이 발생할 경우 성공으로 확인하고 싶을 때는 다음과 같이 excepted를 추가해주면 된다.

 

@Test(expected=UnsupportedOperationException.class)

public void renameFolder() {

    this.obj.renameFolder("", "");

}

 

파란막대 좋아~ ^^*

 

assertThat(result, is(true));

 

위 코드에서 이클립스에서 Junit에서 지원하는 버전을 추가했는데도 assertThat구문에 x표가 뜰 때가 있다. 해결방법은 다음 두 import를 수동으로 추가하면 된다.

 

import static org.junit.Assert.*;

import static org.hamcrest.CoreMatchers.*;

 

ctrl+shift+o 로 하면 지워진다. 왜 그런지.. 잘 모르겠다.


http://whiteship.tistory.com/1739 참고

 

혹시나 해서 검색해봤는데 역시 자바도 decompile이 아주 쉽게 되는군, .net 과 마찬가지로 VM을 가지고 있기 때문에 컴파일 된 코드는 중간 언어인 byte코드로 변환될 테고 그 바이트 코드는 하나씩 해석하면 역시 원래 코드로 변환도 가능하다. Java Decompiler 프로그램은 http://java.decompiler.free.fr/?q=jdgui 여기서 받을 수 있었다. 물론 이것 말고도 많은 프로그램들이 있다. .class 파일이나 .jar 파일을 이 프로그램에서 로드 하면 다음과 같이 decompile 된 코드를 볼 수 있다. 소스를 참고해 보고 싶은 컴파일 된 결과물이 있을 때 아주 유용할 것 같다. 윈두우, MAC, 리눅스 모두 지원하고 무료로 이용할 수 있다.

 

http://java.decompiler.free.fr

최근 일주일 사이 회사 업무 플래폼을 자바로 변경하고 여러가지 해보고 있다. 기존에 잠깐 안드로이드도 개발도 맛보기도 했고 학부때 자바 수업도 들었고 해서 언어적으로 어려운점은 없었다. (자바가 사실 언어는 어렵지 않다는 것이 개인적인 생각이다.) 하지만 설정에서 여러가지 문제들이 생기기 시작했다. 


현재 나는 Java, Spring, Mybatis을 기본으로 해보려고 하고 있는데 처음 접해본 나로서는 이게 무슨.... 무슨설정이 이렇게 복잡한지 정신이 혼미한 상태가 되었다. 다른 서비스도 잠깐 해봤던 경헝으로 오픈소스 플랫폼은 이미 워낙 많은 유틸리티들이 개발되어 있기 때문에 어떻게 이런것들을 잘 조합하는 것들이 결국 개발능력이 되고 마는것 같다. 또 문제가 생겼을때 오픈소스 들에서 문제가 발생되는 경우도 많기 때문에 이런 문제도 개발자가 직접 해결할 수 밖에 없는 단점도 있다. 개발자는 더 알고리즘에 집중해야 하는게 맞지 않나 생각해보며... 오늘 이 씁쓸한 마음으로 이번 포스트를 마친다.


http://opensource.org


이 사이트 꽤 유용하다.

 

이클립스 + 톰캣 + 스프링 MVC + maven 개발환경 구축 - 1장

http://springmvc.egloos.com/429363

 

이클립스 + 톰캣 + 스프링 MVC + maven 개발환경 구축 - 2장

http://springmvc.egloos.com/429779

 

이클립스 + 톰캣 + 스프링 MVC + maven 개발환경 구축 - 3장

http://springmvc.egloos.com/429779

 

이클립스에서 SpringMVC 테스트(JUnit) 환경 구축하기

http://springmvc.egloos.com/438345

+ Recent posts