2014년 11월 21일 금요일

[Java]if문 예제(점수가 90이상이면 문자열을 출력)

  1. public class test1 {
  2.     public static void main(String[] args){
  3.         int score = 30;
  4.         if(score >= 90){
  5.             System.out.println("당신은 우등생입니다.");
  6.         }
  7.     }
  8. }

2014년 11월 18일 화요일

[Java]형 변환

자바에서 기본적으로 변수에 값을 할당할 때 좌측 변수 데이터 타입과 우측 변수 데이터 타입이 일치해야 한다. 때론 일치 하지 않아도 되는 경우가 있는데 좌측 변수의 데이터 타입이 우측 변수의 데이터 타입을 포함하는 큰 타입일 때에는 문제가 없으나 그 반대의 경우에는 컴파일 오류가 발생한다.

  1. byte var_byte = 10;
  2. int result = var_byte;
자동으로 형 변환이 되면서 문법적으로 성공

  1. int var_int = 100;
  2. byte result = var_int;
우측 값의 데이터 타입이 int 형이고 좌측 변수의 데이터 타입이 byte 타입이므로
우측 값의 데이터 타입이 좌측 변수의 데이터 타입보다 크다.
결국 자동으로 형 변환 되지않아 컴파일 오류가 발생한다.

[Java]변수의 데이터 타입

변수의 데이터 타입

*기본형 데이터 타입


  • byte : 8비트
  • short : 16비트
  • char : 16비트, 유니코드
  • int : 32비트
  • long : 64비트
  • float : 32비트
  • double : 64비트
  • boolean : true, false
*참조형 데이터 타입

자바에서 제공하는 기본형 데이터 타입 이외에 클래스로 정의해서 사용하는 데이터 타입을 의미한다.


2014년 11월 17일 월요일

[Java]식별자(Identifier) 그리고 주석

자바 코드에서 사용되는 변수, 메소드, 클래스, 배열 등의 이름을 뜻한다.

식별자 규칙

  1. 대소문자를 구분 된다.
  2. 숫자는 두번째 문자부터 나올수 있다.
  3. 키워드는 식별자로 사용 안된다.
식별자 이름 규칙(코딩 관습상의 룰)
  • 클래스 : 첫 문자를 대문자로 시작한다. 두 단어가 합쳐질 경우 두 번째 단어의 첫 문자도 대문자로 작성한다. (HelloTest)
  • 메소드 : 소문자로 시작하는 동사로 작성한다. 두단어가 합쳐질 경우에는 두 번째 단어의 첫 문자는 대문자로 작성한다. (getAge())
  • 변수 : 소문자로 시작하는 명사로 작성한다. 두 단어가 합쳐질 때는 두 번째 단어의 첫 문자는 대문자로 작성한다. (int maxCount;)
  • 상수 : 모든 문자를 대문자로 작성한다. 두단어가 합쳐질 경우에는 두 단어 사이에 _문자를 사용한다. (int MAX_ANGLE = 100;)
주석이란 컴파일 되지 않는 부분을 정의하는 부분이다. 
  • // : 한 줄 주석
  • /* */ : 여러 줄 주석
  • /** */ : 여러 줄 주석 자바 도큐먼트를 생성할 때 자주 사용됨

2014년 11월 14일 금요일

[Java]Java Programming Execution

자바 프로그램의 실행 단계

1. 소스 코드 작성

편집기에 자바 코드를 작성한 후 확장자를 *.java로 저장한다.

2. 소스 코드 컴파일

javac.exe 컴파일러를 실행해서 소스 코드를 컴파일한다.

3. 실행

컴파일을 통해서 생성된 class파일을 java.exe 파일을 이용해서 실행한다.
각 플랫폼에 설치되어 있는 JVM을 이용해서 실행한다.

클래스파일을 JVM에서 실행하면 다음 단계를 거치면서 실행된다.

[Class File Loader] - [Verifier] - [Interpreter] - [Runtime]

2014년 11월 12일 수요일

[Java] Armstrong Number 구하기

Armstrong number  란? 수의 각 자릿수의 숫자 값을 ^3을 한뒤 더한값이 원래의 수와 같은 수를 말한다.
ex)
153 은 (1*1*1)+(5*5*5)+(3*3*3) = 153
371 은 (3*3*3)+(7*7*7)+(1*1*1) = 371
 
입력한 값이 Armstrong number 인지 아닌지 판별하기 위한 프로그램 구현하시오.

  1. public class Armstrong {
  2.     public boolean isArmstrong(int number){
  3.     }
  4.    
  5.     public static void main(String[] args){
  6.         Armstrong armstrong = new Armstrong();
  7.         // 코드 구현
  8.     }
  9. }

  1. public class Armstrong {
  2. public boolean isArmstrong(int number){
  3.  
  4. int result = 0;
  5. int x = number;
  6. while(number != 0){
  7. int y = number%10;
  8. result = result + y*y*y;
  9. number = number/10;
  10. }
  11. //number is Armstrong return true
  12. if(x == result){
  13. return true;
  14. }
  15.  
  16. return false;
  17. }
  18.  
  19. }
세제곱 이상의 함수일때 다음의 제곱 함수를 사용한다.

  1. while(number != 0){
  2. int y = number%10;
  3. result = result+(int)Math.pow(y, 3);
  4. number = number/10;
  5. }

2014년 11월 11일 화요일

[Java] JDK, JRE, JVM


  • JDK (Java Software Developer's Kit)
JRE와 개발을 위해 필요한 도구를 가진 개발 가능한 프로그램이다.
  • JRE (Java Runtime Environment)
JVM이 자바 프로그램을 동작시킬 때 필요한 라이브러리 파일 및 기타 파일들을 가진다.
JRE는 JVM의 실행환경을 가지고 있다고 말할 수 있다.
  • JVM (Java Virtual Machine)
자바 소스코드로부터 만들어지는 바이너리 파일(클래스 파일)을 실행할 수 있다. 
리눅스의 JVM과 윈도우의 JVM은 다름으로써 플랫폼에 의존적임을 알 수 있다.
하지만 컴파일이 된 바이너리 코드는 어떤 JVM에서도 동작이 가능하다. 

프로그램(Game)이 실행 되지 않을때 : 코드

[핵쉴드 설치 오류]

1. [ErrorCode: 0x00000101] 핵쉴드 파일 설치 실패

■ 증상

 - 게임을 시작하면 에러코드 0x00000101를 핵쉴드 에러 메시지라 출력되며, 게임이 실행되지 않는다.

■ 원인

 - 핵쉴드 파일들의 설치가 제대로 되지 않은 상태일 가능성이 있다.

 - 핵쉴드 파일들이 위/변조 되었을 가능성이 있다.

■ 해결방법

 1. 핵쉴드 파일을 다시 패치받기 위해서 게임을 다시 시작하여 게임 패치가 다시 진행되도록 한다.

 2. 핵쉴드 파일을 다시 설치하기 위해서 게임 클라이언트를 다시 설치한다.

 3. 핵쉴드 업데이트가 적용되었을 경우, 게임을 처음부터 다시 시작하여 핵쉴드 업데이트가 다시 진행되도록 한다.



[핵쉴드 드라이버 오류]

1. [ErrorCode: 0x00000102] 핵쉴드 드라이버 초기화 실패

■ 증상

 - 게임을 시작하면 에러코드가 0x00000102인 핵쉴드 에러 메시지가 나타나면서 게임이 실행되지 않는다.

■ 원인

 - 핵쉴드의 해킹차단 드라이버를 초기화하는 과정에서 오류가 발생한 것이다.

 - 핵쉴드의 해킹차단 드라이버를 초기화하는데 장애를 발생시키는 프로그램이 동작 중일 가능성이 있다.

■ 해결 방법

1. 일시적으로 오류가 발생한 것일 수 있으므로, 게임을 다시 시작한다.

2. 드라이버를 초기화하는데 장애를 발생시키는 프로그램이 있을 수도 있으니, PC를 재부팅하고 게임을 다시 시작한다.



2. [ErrorCode: 0x00000203 ~ 4] 핵쉴드 드라이버 시작 실패

■ 증상

 - 게임을 시작하면 에러코드가 0x00000203 또는 0x00000204인 핵쉴드 에러 메시지가 나타나면서 게임이 실행되지 않는다.

■ 원인

 - 핵쉴드의 해킹차단 드라이버를 시작하는 과정에서 오류가 발생한 것이다.

 - 핵쉴드의 해킹차단 드라이버를 시작하는데 장애를 발생시키는 프로그램이 동작 중일 가능성이 있다.

■ 해결 방법

1. 일시적으로 오류가 발생한 것일 수 있으므로, 게임을 다시 시작한다.

2. 드라이버를 초기화하는데 장애를 발생시키는 프로그램이 있을 수도 있으니, PC를 재부팅하고 게임을 다시 시작한다.



3. [ErrorCode: 0x00010302] 핵쉴드 드라이버 로딩 실패

■ 증상

 - 게임을 시작하면 에러코드가 0x00010302인 핵쉴드 에러 메시지가 나타나면서 게임이 종료된다.

■ 원인

 - 핵쉴드의 해킹차단 드라이버가 정상적으로 로딩되지 않아서 오류가 발생한 것이다.

 - 핵쉴드의 해킹차단 드라이버를 로딩하는데 장애를 발생시키는 프로그램이 동작 중일 가능성이 있다.

■ 해결 방법

1. 일시적으로 오류가 발생한 것일 수 있으므로, 게임을 다시 시작한다.

2. 드라이버를 초기화하는데 장애를 발생시키는 프로그램이 있을 수도 있으니, PC를 재부팅하고 게임을 다시 시작한다.



[핵쉴드 실행 권한 오류]

1. [ErrorCode: 0x00000107] Administrator 권한 획득 실패

■ 증상

 - 게임을 시작하면 에러코드가 0x00000107인 핵쉴드 에러 메시지가 나타나면서 게임이 실행되지 않는다.

■ 원인

 - 게임이 Administrator 권한으로 실행되지 않았을 가능성이 있다.

■ 해결 방법

 ▶ 다음과 같이 Administrator권한으로 게임을 실행한다.

  A. [시작] -> [제어판] -> [사용자 계정] 으로 이동한다.

  B. 현재 사용하고 있는 계정 이름 아래 '컴퓨터 관리자'로 되어 있는지 확인한다.

  C. 관리자로 되어 있지 않을 경우 해당 계정을 클릭하고 '내 계정 유형 변경'에서

     컴퓨터 관리자로 유형을 변경한다.



2. [ErrorCode: 0x00000200] 엔진 초기화 실패

■ 증상

 - 게임을 시작하면 에러코드가 0x00000200인 핵쉴드 에러 메시지가 나타나면서 게임이 실행되지 않는다.

■ 원인

 - 핵쉴드의 엔진파일이 정상적으로 설치되지 않았을 가능성이 있다.

 - 핵쉴드의 엔진파일이 악성코드에 의해 변조되었을 가능성이 있다.

■ 해결 방법

 ▶ 정상적인 엔진파일이 설치되도록 다음과 같이 핵쉴드의 엔진파일을 다시 패치한다.

  A. 게임이 설치된 폴더의 하위폴더인 HShield 또는 HackShield 폴더에서 V3WARPDS.V3D 와 V3WARPNX.V3D 파일을 삭제한다.

  B. 게임을 다시 시작하여 게임 패치를 통해 핵쉴드 엔진파일을 다시 패치한다.



 ▶ 핵쉴드 업데이트가 적용되었을 경우, 정상적인 엔진파일이 설치되도록 다음과 같이 핵쉴드의 엔진파일을 다시 패치한다.

  A. 게임이 설치된 폴더의 하위폴더인 HShield 또는 HackShield 폴더에서 V3WARPDS.V3D 와 V3WARPNX.V3D 파일을 삭제한다.

  B. 게임을 다시 시작하여 핵쉴드 업데이트를 통해 핵쉴드 엔진파일을 다시 패치한다.



3. 게임 시작 또는 진행 중 Blue Screen 발생 오류

■ 증상

 - 게임을 시작하거나 게임 진행 중에 Blue Screen 이 발생한다.

■ 원인

 - 핵쉴드 기능 중 커널모드 방어 기능에서 오류가 발생했을 가능성이 있다.

 - 타 보안제품과 핵쉴드가 충돌이 발생했을 가능성이 있다.

■ 해결 방법

  1. 일시적으로 오류가 발생한 것일 수 있으므로, 게임을 다시 시작한다.

  2. 드라이버를 초기화하는데 장애를 발생시키는 프로그램이 있을 수도 있으니, PC를 재부팅하고 게임을 다시 시작한다.

  3. 타 보안제품 특히 키보드 보안제품과 충돌이 발생했을 가능성이 다음의 내용을 확인한다.

   A. 인터넷뱅킹과 게임을 동시에 진행했다면, 인터넷뱅킹의 보안 제품(특히. 키보드 보안 제품)과

      충돌이 발생했을 수 있으니, 인터넷 뱅킹과 게임을 동시에 하지 않도록 한다.

   B. 타사의 게임보안 제품이 설치된 게임을 동시에 진행했다면, 타사의 게임보안 제품과 충돌이

      발생할 수 있으니, 타 게임을 동시에 하지 않도록 한다.



[해킹 감지 해결]

1. [ErrorCode: 0x00000105] 디버거 프로그램 감지

■ 증상

 - 게임을 시작하면 에러코드가 0x00000105인 핵쉴드 에러 메시지가 나타나면서 게임이 실행되지 않는다.

■ 원인

 - 개발에 사용되는 디버거 프로그램이 실행되고 있을 가능성이 있다.

 - 인터넷뱅킹과 게임을 함께 진행하여 인터넷뱅킹에서 사용하는 프로그램으로 인한 오류일 가능성이 있다.

 - 디버거 프로그램과 유사한 기능을 수행하는 프로그램이 실행되고 있을 가능성이 있다.

■ 해결 방법

 1. 디버거 프로그램이 실행되어 있을 경우 디버거 프로그램을 종료하고 게임을 다시 시작한다.

  A. Administrator 권한으로 PC를 로그인한다.

  B. 게임을 다시 시작한다.

 2. 인터넷뱅킹의 보안제품으로 인한 충돌 가능성이 있을 수 있으므로, 인터넷뱅킹과 게임을 함께

    진행했다면 인터넷뱅킹을 종료하고 게임을 다시 시작한다.



2. [ErrorCode: 0x00010307 ~ 8] 디버깅 시도 감지

■ 증상

 - 게임 진행 중에 에러코드가 0x00010307 또는 0x00010308인 핵쉴드 에러 메시지가 나타나면서 게임이 종료 된다.

■ 원인

 - 개발에 사용되는 디버거 프로그램으로 게임 프로그램에 대한 디버깅 시도일 가능성이 있다.

 - 인터넷뱅킹과 게임을 함께 진행하여 인터넷뱅킹에서 사용하는 프로그램으로 인한 오류일 가능성이 있다.

 - 디버거 프로그램과 유사한 기능을 수행하는 프로그램이 실행되고 있을 가능성이 있다.

■ 해결 방법

  1. 디버거 프로그램이 실행되어 있을 경우 디버거 프로그램을 종료하고 게임을 다시 시작한다.

   A. Administrator 권한으로 PC를 로그인한다.

   B. 게임을 다시 시작한다.

  2. 인터넷뱅킹의 보안제품으로 인한 충돌 가능성이 있을 수 있으므로, 인터넷뱅킹과 게임을

     함께 진행했다면 인터넷뱅킹을 종료하고 게임을 다시 시작한다.



[핵쉴드 파일 조작 감지]

1. [ErrorCode: 0x010701 ~ 3] 핵쉴드 파일 조작 감지

■ 증상

 - 게임을 시작하면 에러코드가 0x00010701 또는 0x00010702, 0x00010703인 핵쉴드 에러 메시지가 나타나면서 게임이 종료된다.

■ 원인

 - 핵쉴드 파일이 변조되었거나 삭제되었을 가능성이 있다.

 - 핵쉴드 파일명이 변경되었을 가능성이 있다.

 - 악성코드에 의해서 핵쉴드 파일이 감염되었을 가능성이 있다.

■ 해결 방법

 1. 핵쉴드 파일을 다시 패치 받기 위해서 게임을 다시 시작하여 게임 패치가 다시 진행되도록 한다.

 2. 핵쉴드 파일을 다시 설치하기 위해서 게임 클라이언트를 다시 설치한다.

 3. 핵쉴드 업데이트가 적용되었을 경우, 게임을 처음부터 다시 시작하여 핵쉴드 업데이트가 다시 진행되도록 한다.



[오토플레이 감지]



1. [ErrorCode: 0x010104] 오토플레이 감지

■ 증상

 - 게임을 진행 중에 에러코드가 0x0010104인 핵쉴드 에러 메시지가 나타나면서 게임이 종료된다.

 - 게임을 진행 중에 “오토마우스(오토플레이, 오토플레이)행위가 감지되었습니다.”라는 메시지가

   나타나면서 게임이 종료된다.

■ 원인

 - 매크로, 오토마우스, 자동사냥 등 오토플레이 프로그램이 실행 중이다.

 - 특정 키보드 또는 마우스의 동작과 충돌이 발생했을 가능성이 있다.



■ 해결 방법

  1. 오토플레이 프로그램을 종료하고 게임을 다시 시작한다.

  2. 사용자가 오토마우스류의 프로그램을 사용하지 않았으며, 충돌이나 오진으로 인한 것으로

     판단될 경우 시스템 정보를 수집하여 안철수연구소에 전달한다.





[스피드핵 감지]



1. [ErrorCode: 0x010303 ~ 4] 스피드핵 감지

■ 증상

 - 게임을 진행 중에 에러코드가 0x010303 또는 0x010304인 핵쉴드 에러 메시지가 나타나면서 게임이 종료된다.

 - 게임을 진행 중에 “스피드핵 행위가 감지되었습니다.”라는 메시지가 나타나면서 게임이 종료된다.

■ 원인

 - 스피드핵류의 프로그램이 실행 중이다.

 - 저사양 PC나 노트북 등에서 시스템 클럭이 불안정하여 일시적으로 오진이 발생할 가능성이 있다.

■ 해결 방법

 1. 스피드핵류의 프로그램을 종료하고 게임을 다시 시작한다.

  A. 스피드핵류의 프로그램은 속도를 조절하기 위해 UI를 가지고 있기 때문에,

     대부분의 경우 사용자가 프로그램의 동작상황을 알수 있다.

2. 사용자가 스피드핵류의 프로그램을 사용하지 않았으며, 오진으로 인한 것으로 판단될 경우 시스템 정보를

   수집하여 안철수연구소에 전달한다.



[시그너처 기반 해킹 프로그램 감지]



1. [ErrorCode: 0x010501] 해킹 프로그램 감지

■ 증상

1. 게임을 진행 중에 에러코드가 0x010501인 핵쉴드 에러 메시지와 해킹 프로그램의 경로가 나타나면서 게임이 종료된다.

2. 게임을 진행 중에 “다음 위치에서 해킹 행위가 감지되었습니다.”라는 메시지와 함께 해킹

   프로그램의 경로가 나타나면서 해킹 게임이 종료된다.

■ 원인

 - 핵쉴드 시그너처 엔진에 포함된 해킹 프로그램이 실행 중이다.

■ 해결 방법

 1. 에러 메시지에 나타난 경로의 프로그램을 종료하고 게임을 다시 시작한다.

 2. 사용자가 해킹 프로그램을 찾지 못할 경우 프로그램 종료 방법을 참고하여 해킹 프로그램의 동작을 중지한다.



[메모리 해킹 감지]



1. [ErrorCode: 0x010601] 메모리 해킹 감지

■ 증상

 - 게임을 진행 중에 에러코드가 0x010601인 핵쉴드 에러 메시지와 해킹 프로그램의 경로가 나타나면서 게임이 종료된다.

 - 게임을 진행 중에 “다음 위치에서 해킹 행위가 감지되었습니다.”라는 메시지와 함께 해킹 프로그램의

   경로가 나타나면서 해킹 게임이 종료된다.

■ 원인

 - 에러 메시지에 나타난 경로의 프로그램으로부터 메모리 해킹 시도가 감지되었다.

 - 게임 프로그램이 악성코드에 감염되었을 가능성이 있다.

 - 악성코드가 게임 프로그램에 대한 메모리 조작을 시도했을 가능성이 있다.

■ 해결 방법

 1. 에러 메시지에 나타난 경로의 프로그램을 종료하고 게임을 다시 시작한다.

 2. 사용자가 해킹 프로그램을 찾지 못할 경우 프로그램 종료 방법을 참고하여 해킹 프로그램의 동작을 중지한다.

 3. AV(Anti-Virus) 제품을 이용하여 악성코드 검색/치료를 진행한 후 게임을 다시 시작한다.



[메모리 휴리스틱 기반 해킹 프로그램 감지]



1. [ErrorCode: 0x10000001 ~ 0x10000035]

■ 증상

 - 게임을 진행 중에 에러코드가 0x10000001 ~ 0x10000035인 핵쉴드 에러 메시지가 나타나면서 게임이 종료된다.

 - 게임을 진행 중에 에러코드가 Unknown Error : 0x10000001 ~ 0x10000035인 핵쉴드 에러 메시지가 나타나면서 게임이 종료된다.

■원인

 - 핵쉴드 메모리 휴리스틱 엔진에서 각각의 에러코드에 해당하는 해킹 프로그램을 감지한 것이다.

■해결 방법

 1. 각각의 에러코드에 해당하는 해킹 프로그램을 종료하고 게임을 다시 시작한다.

  A. 각각의 해킹툴은 UI를 가지고 있기 때문에, 사용자가 동작상황을 모르고 있을 가능성이 없습니다만 사용자가

     해킹툴명을 모를 경우, 아래의 에러코드를 참조하여 각각의 에러코드에 해당하는 프로그램을 종료합니다.

 2. 사용자가 각각의 에러코드에 해당하는 해킹 프로그램을 사용하지 않았거나, 프로그램을 찾지 못한다면,

    시스템 정보를 수집하여 안철수연구소에 전달한다.



2. [ErrorCode: 0x10000036] Proxy Dll 해킹 프로그램 감지

■ 증상

 - 게임을 진행 중에 에러코드가 0x10000036인 핵쉴드 에러 메시지가 나타나면서 게임이 종료된다.

 - 게임을 진행 중에 에러코드가 Unknown Error : 0x10000036인 핵쉴드 에러 메시지가 나타나면서 게임이 종료된다.

■ 원인

 - 핵쉴드 메모리 휴리스틱 엔진에서 Proxy dll(dinput8.dll) 을 감지한 것이다.

■ 해결 방법

1. 시스템 정보를 수집하여 안철수연구소에 전달한다.



3. [ErrorCode: 0x10000037] Proxy Dll 해킹 프로그램 감지

■ 증상

 - 게임을 진행 중에 에러코드가 0x10000037인 핵쉴드 에러 메시지가 나타나면서 게임이 종료된다.

 - 게임을 진행 중에 에러코드가 Unknown Error : 0x10000037인 핵쉴드 에러 메시지가 나타나면서 게임이 종료된다.

■ 원인

 - 핵쉴드 메모리 휴리스틱 엔진에서 Proxy dll(d3d9d.dll) 을 감지한 것이다.

■ 해결 방법

 1. 사용자가 설치한 Microsoft DirectX SDK내에 설치된 DirerxtX Control Panel을 통해서

    'Use Debug Version of Direct3D 9' 항목이 설정되어 있을 경우, 'Direct3D 9의 Debug Version'을 사용해야 할 필요가

    없다면 'Retail Version'을 사용하도록 설정한다.

  A. 설정 방법 시작->프로그램->Microsoft DirectX SDK (August 2007)->DirectX Utilities->DirectX Control Panel 을

     차례로 선택한 후, 'Direct3D 9'탭에서 'Use Retail Version of Direct3D 9' 항목 선택



4. [ErrorCode: 0x10000038] Proxy Dll 해킹 프로그램 감지

■ 증상

 - 게임을 진행 중에 에러코드가 0x10000038인 핵쉴드 에러 메시지가 나타나면서 게임이 종료된다.

 - 게임을 진행 중에 에러코드가 Unknown Error : 0x10000038인 핵쉴드 에러 메시지가 나타나면서 게임이 종료된다.

■ 원인

 - 핵쉴드 메모리 휴리스틱 엔진에서 Proxy dll(d3d8d.dll) 을 감지한 것이다.

■ 해결 방법

 1. 사용자가 설치한 Microsoft DirectX SDK내에 설치된 DirerxtX Control Panel을 통해서 'Use Debug Version of Direct3D 8'

    항목이 설정되어 있을 경우, 'Direct3D 8의 Debug Version'을 사용해야 할 필요가 없다면 'Retail Version'을 사용하도록 설정한다.

  A. 설정 방법 시작->프로그램->Microsoft DirectX SDK ->DirectX Utilities->DirectX Control Panel 을 차례로 선택한 후,

     'Direct3D 8'탭에서 'Use Retail Version of Direct3D 8' 항목 선택



5. [ErrorCode: 0x10000039] Proxy Dll 해킹 프로그램 감지

■ 증상

 - 게임을 진행 중에 에러코드가 0x10000039인 핵쉴드 에러 메시지가 나타나면서 게임이 종료된다.

 - 게임을 진행 중에 에러코드가 Unknown Error : 0x10000039인 핵쉴드 에러 메시지가 나타나면서 게임이 종료된다.

■ 원인

 - 핵쉴드 메모리 휴리스틱 엔진에서 Proxy dll(ws2_32.dll) 을 감지한 것이다.

■ 해결 방법

1. 시스템 정보를 수집하여 안철수연구소에 전달한다.



6. [ErrorCode: 0x10000044]

■ 증상

 - 게임을 진행 중에 에러코드가 0x10000044인 핵쉴드 에러 메시지가 나타나면서 게임이 종료된다.

 - 게임을 진행 중에 에러코드가 Unknown Error : 0x10000044인 핵쉴드 에러 메시지가 나타나면서 게임이 종료된다.

■ 원인

 - 핵쉴드 메모리 휴리스틱 엔진에서 Neo_Auto 프로그램을 감지한 것이다.

■ 해결 방법

 1. 정상적으로 Neo_Auto Uninstall 파일을 실행하여 삭제한다. Neo_Auto Uninstall 파일이 없다면 수동으로 삭제한다.

 2. 수동으로 삭제하는 방법은 다음 아래의 순서와 같다.

  A. C:\\Windows\\system32\\drivers 에 neoautokbd, neoautomou 2개의 파일을 삭제한다.

  B. HKEY_LOCAL_MACHINE -> SYSTEM -> CurrentControlSet -> Enum -> ACPI ->PNP0303 ->

     4&14c67d85&0에 있는 neoautokbd 키를 삭제한다.

    I. 만약 삭제가 안될 경우 파일에 대한 권한이 없는 경우이므로 [편집] -> [사용권한]을 클릭하여 Everyone에 모든 권한을 허용하고 삭제한다.

  C. HKEY_LOCAL_MACHINE -> SYSTEM -> CurrentControlSet -> Enum -> ACPI -> PNP0F03 -> 4&14c67d85&0에 있는 neoautomou 키를 삭제한다.

    I. 만약 삭제가 안될 경우 파일에 대한 권한이 없는 경우이므로 [편집] -> [사용권한]을 클릭하여 Everyone에 모든 권한을 허용하고 삭제한다.

  D. HKEY_LOCAL_MACHINE -> SYSTEM -> CurrentControlSet ->Service에 neoautokbd에 있는 모든 키 값을 삭제한다.

  E. HKEY_LOCAL_MACHINE -> SYSTEM -> CurrentControlSet ->Service에 neoautomou에 있는 모든 키 값을 삭제한다.

  F. 재부팅을 한다.

 3. 사용자가 Neo_Auto 프로그램을 사용하지 않았다면, 시스템 정보를 수집하여 안철수연구소에 전달한다.



7. [ErrorCode: 0x10000045 ~ 0x10000047]

■ 증상

 - 게임을 진행 중에 에러코드가 0x10000045 ~ 0x10000047인 핵쉴드 에러 메시지가 나타나면서 게임이 종료된다.

 - 게임을 진행 중에 에러코드가 Unknown Error : 0x10000045 ~ 0x10000047인 핵쉴드 에러 메시지가 나타나면서 게임이 종료된다.

■ 원인

 - 핵쉴드 메모리 휴리스틱 엔진에서 각각의 에러코드에 해당하는 해킹 프로그램을 감지한 것이다.

■ 해결 방법

1. 각각의 에러코드에 해당하는 해킹 프로그램을 종료하고 게임을 다시 시작한다.

A. 각각의 해킹툴은 UI를 가지고 있기 때문에, 사용자가 동작상황을 모르고 있을 가능성이 없습니다만 사용자가 해킹툴명을

   모를 경우, 아래의 에러코드를 참조하여 각각의 에러코드에 해당하는 프로그램을 종료합니다.

에러 코드  // 해킹 툴 정보 //

0x10000045 // VISATDR.SYS  //

0x10000047 // DBGV.SYS     //

0x10000046 // REVNEO.SYS   //



8. [ErrorCode: 0x10000048]

■ 증상

 - 게임을 진행 중에 에러코드가 0x10000048인 핵쉴드 에러 메시지가 나타나면서 게임이 종료된다.

 - 게임을 진행 중에 에러코드가 Unknown Error : 0x10000048인 핵쉴드 에러 메시지가 나타나면서 게임이 종료된다.

■ 원인

 - 핵쉴드 메모리 휴리스틱 엔진에서 WINIO.sys 오진을 감지한 것이다.

■ 해결 방법

1. 게임에서 5.1.24.1(Build 461)보다 이전 버전의 SDK를 사용하고 있을 경우, 5.1.24.1(Build 461) 이후의 버전으로 패치한다.



9. [ErrorCode: 0x100001d3]

■ 증상

 - 게임을 진행 중에 에러코드가 0x100001d3인 핵쉴드 에러 메시지가 나타나면서 게임이 종료된다.

 - 게임을 진행 중에 에러코드가 Unknown Error : 0x100001d3인 핵쉴드 에러 메시지가 나타나면서 게임이 종료된다.

■ 원인

 - 핵쉴드 메모리 휴리스틱 엔진에서 ProcessGuard 프로그램을 감지한 것이다.

■ 해결 방법

1. ProcessGuard 프로그램을 종료하고, Uninstall 후 재부팅한 다음, 게임을 다시 시작한다





10. [ErrorCode: 0x100001d4 ~ 0x100001f7]

■ 증상

 - 게임을 진행 중에 에러코드가 0x100001d4 ~ 0x100001f7인 핵쉴드 에러 메시지가 나타나면서 게임이 종료된다.

 - 게임을 진행 중에 에러코드가 Unknown Error : 0x100001d4 ~ 0x100001f7인 핵쉴드 에러 메시지가 나타나면서 게임이 종료된다.

■ 원인

 - 핵쉴드 메모리 휴리스틱 엔진에서 각각의 에러코드에 해당하는 해킹 프로그램을 감지한 것이다.

■ 해결 방법

 1. 각각의 에러코드에 해당하는 해킹 프로그램을 종료하고 게임을 다시 시작한다.

  A. 각각의 해킹툴은 UI를 가지고 있기 때문에, 사용자가 동작상황을 모르고 있을 가능성이 없습니다만 사용자가

     해킹툴명을 모를 경우, 아래의 에러코드를 참조하여 각각의 에러코드에 해당하는 프로그램을 종료합니다.





11. [ErrorCode: 0x40000001] 오토 플레이 해킹 프로그램 감지

■ 증상

 - 게임을 진행 중에 에러코드가 0x40000001 인 핵쉴드 에러 메시지가 나타나면서 게임이 종료된다.

 - 게임을 진행 중에 에러코드가 Unknown Error : 0x40000001인 핵쉴드 에러 메시지가 나타나면서 게임이 종료된다.

■ 원인

 - 핵쉴드 메모리 휴리스틱 엔진에서 Neo_Audition 의 오토플레이 USB 하드웨어 장치를 감지한 것이다.

■ 해결 방법

 1. Neo_Audition 오토플레이 USB 를 제거한 이후에 게임을 시작한다..

  A. 본 해킹툴은 USB를 사용을 하기 때문에 , 사용자가 동작상황을 모르고 있을 가능성이 없습니다.





12. [ErrorCode: 0x40000003] 오토 플레이 해킹 프로그램 감지

■ 증상

 - 게임을 진행 중에 에러코드가 0x40000003 인 핵쉴드 에러 메시지가 나타나면서 게임이 종료된다.

 - 게임을 진행 중에 에러코드가 Unknown Error : 0x40000003인 핵쉴드 에러 메시지가 나타나면서 게임이 종료된다.

■ 원인

 - 핵쉴드 메모리 휴리스틱 엔진에서 아이로봇 1의 오토플레이 USB 하드웨어 장치를 감지한 것이다.

■ 해결 방법

 1. 아이로봇 오토플레이 USB 를 제거한 이후에 게임을 시작한다.

  A. 본 해킹툴은 USB를 사용을 하기 때문에 , 사용자가 동작상황을 모르고 있을 가능성이 없습니다.





13. [ErrorCode: 0x40000004 ~ 0x40000005] 오토 플레이 해킹 프로그램 감지

■ 증상

 - 게임을 진행 중에 에러코드가 0x40000004 ~ 0x40000005인 핵쉴드 에러 메시지가 나타나면서 게임이 종료된다.

 - 게임을 진행 중에 에러코드가 Unknown Error : 0x40000004 ~ 0x40000005인 핵쉴드 에러 메시지가 나타나면서 게임이 종료된다.

■ 원인

 - 핵쉴드 메모리 휴리스틱 엔진에서 Neo_audition의 오토플레이 USB 하드웨어 장치를 감지한 것이다.

■ 해결 방법

 1. Neo_audition 오토플레이 USB 를 제거한 이후에 게임을 시작한다.

  A. 본 해킹툴은 USB를 사용을 하기 때문에 , 사용자가 동작상황을 모르고 있을 가능성이 없습니다.





14. [ErrorCode: 0x40000006] 오토 플레이 해킹 프로그램 감지

■ 증상

 - 게임을 진행 중에 에러코드가 0x40000006 인 핵쉴드 에러 메시지가 나타나면서 게임이 종료된다.

 - 게임을 진행 중에 에러코드가 Unknown Error : 0x40000006인 핵쉴드 에러 메시지가 나타나면서 게임이 종료된다.

■ 원인

 - 핵쉴드 메모리 휴리스틱 엔진에서 오토스틱2의 오토플레이 USB 하드웨어 장치를 감지한 것이다.

■ 해결 방법

 1. 오토스틱 오토플레이 USB 를 제거한 이후에 게임을 시작한다..

  A. 본 해킹툴은 USB를 사용을 하기 때문에 , 사용자가 동작상황을 모르고 있을 가능성이 없습니다.





[핵쉴드 업데이트 오류 해결]



1. [ErrorCode: 0x30000010 ~ 20] 환경설정 파일 에러

■ 증상

 - 핵쉴드 업데이트를 시작하면 에러코드가 0x30000010 또는 0x30000010인 핵쉴드 에러 메시지가 나타나면서 게임이 종료된다.

■ 원인

 - 핵쉴드 업데이트에 필요한 환경설정(HShield.env) 파일이 없을 가능성이 있다.

 - 환경설정 파일의 권한 설정이 잘못 되어 있을 가능성이 있다.

 - 환경설정 파일이 알 수 없는 이유로 인해 손상되었을 가능성이 있다.

■ 해결 방법

 1. 게임 설치폴더\HShield 또는 게임 설치폴더\HackShield 폴더에 HShield.env 파일이 있는지 확인한다.

  A. 파일이 없으면 게임을 다시 설치한다.

 2. HShield.env파일을 오른쪽 마우스로 클릭하여 속성정보를 확인한다.

  A. 속성정보에서 특성이 보관으로 체크 되어 있는지 확인한다.

  B. 읽기 전용으로 체크되어 있다면 보관으로 설정을 변경한다.



2. [ErrorCode: 0x30000030] 네트워크 연결 에러

■ 증상

 - 핵쉴드 업데이트를 시작하거나 진행 중에 에러코드가 0x30000030인 핵쉴드 에러 메시지가 나타나면서 게임이 종료된다.

■ 원인

 - 네트워크 장애로 인해 서버와의 접속이 안되었을 가능성이 있다.

 - 방화벽에 의해 서버와의 연결이 차단되어 접속이 안되었을 가능성이 있다.

■ 해결 방법

 1. 방화벽 프로그램이 설치되어 있는지 확인하고, 방화벽 프로그램의 설정 정보를 확인한다.

  A. 핵쉴드 업데이트를 허용하도록 설정한다.





3. [ErrorCode: 0x30000090] 타임아웃 에러

■ 증상

 - 핵쉴드 업데이트가 진행 중에 에러코드가 0x30000090인 핵쉴드 에러 메시지가 나타나면서 게임이 종료된다.

■ 원인

 - 트워크 장애로 인해 서버와의 접속이 안되었을 가능성이 있다.

 - 일시적인 서버부하로 인해 다운로드 시간이 설정 시간을 초과했을 가능성이 있다.

 - 네트워크 문제로 인해 다운로드 시간이 설정 시간을 초과했을 가능성이 있다.

 - 핵쉴드 업데이트 내부 오류로 인해 다운로드 시간이 설정 시간을 초과했을 가능성이 있다.

 - 사용자 PC의 인터넷 옵션 설정으로 인해 장애가 발생했을 가능성이 있다.

■ 해결 방법

 1. 일시적인 장애일 수 있으니, 게임을 다시 시작한다.

 2. 사용자 PC의 인터넷 옵션 설정을 확인한다.

  A. 인터넷 브라우저를 실행하여, [도구] > [인터넷 옵션] > [연결] > [LAN 설정] 을 확인한다.

  B. 자동으로 설정 검색에 체크되어 있으면 체크를 해제한다.

2014년 6월 19일 목요일

비동기요청 그리고 동기요청


  • 비동기요청
요청에 대한 응답 처리 중에도 다른 요청이나 일을 하면서 그 전 요청에 대한 응답을 받을 수있는 방식

  • 동기요청
요청에 대한 응답 처리 중에 다른 요청이나 일을 할 수 없는 방식

[Java]JAXB(Java Architecture for XML Binding)

  • JAXB(Java Architecture for XML Binding)
자바 클래스를 XML로 표현하는 자바 API이다. JAXB는 주로 2가지 기능이 있다. 자바 객체를 XML로 직렬화하는 것이고 반대로 XML에서 자바 객체로 역직렬화하는 것이다. 즉, JAXB는 메모리의 데이터를 XML 형식으로 변환하여 저장할 수 있고, 이 과정을 위해 프로그램의 각 클래스에서 XML을 읽고 저장하는 일을 구현해야 한다.

[Java]MVC란

  • MVC
모델,뷰,컨트롤 영역으로 코드 구현 시에 화면, 제어로직 및 데이터를 분리 하여 중앙 집중적인 제어 및 처리가 가능하도록 패턴화 하여 개발자와 디자이너의 분업이 더 잘되고 재사용성이 좋게 제공하는 것을 말함

[SPRING]DI(Dependency Injection) and Decoupling

  • DI(Dependency Injection)
Spring 프레임워크에서 지원하는 IoC의 형태이다. DI는 클래스 사이의 의존관계를 빈 설정 정보를 바탕으로 컨테이너가 자동적으로 연결해주는 것
  • Decoupling
클래스 간의 연결 고리를 없애고 클래스간의 연결은 인터패이스로 구성하여 클래스간의 의존성을 떨어트려 유지보수에 용이하게 하는 것

[Framework]전자정부프레임워크


  • 전자정부프레임워크
대한민국의 공공부문 정보화 사업 시 플랫폼별 표준화된 개발 프레임워크를 뜻하며
기업에서 워낙에 많은 자체 프레임워크기술로 개발을 하다보니 결과의 수준과 질이 차이가 많이 나게 되었습니다. 때문에자바 플렛폼 기반의 공공기관, 정보화 산업에 기업 자체 프레임워크를 사용하게 되면 유지 보수등의 문제가 있어 이를 스프링을 기반으로 한 프레임워크를 출시하게 되었으며 이를 전자 정부 표준 프레임워크라고 함

[JavaScript]JSON이란


  • JSON

자바스크립트 객체의 형식을 따르며 데이터를 쉽게 저장하고 사용하기 위한 객체
자바에 비유하자면 map과 유사 
Key와 value가 맵핑됨
선언 방법은 var json ={ key : "helloJamo"}; 처럼 선언 및 저장이되며 

json.key 같이 변수면에 key값을 입력하면 helloJamo 라는 데이터가 튀어나오게 되는 원리


본래는 서버에서 xml파일을 받아서 필요한 데이터를 분리하여 사용하엿으나 
분리작업이 복잡하기때문에 요즘은 json을 많이 이용하며 jquery 등 라이브러리에서 
셋팅값을 설정시에도 이 json객체를 많이 이용을 하고 있습니다

[Java]Library and Framework

  • 라이브러리
A클래스가 객체를 만들어 메서드를 사용할때에 해당 객체를 라이브러리의 것으로부터 사용
  • 프레임워크
A클래스의 라이프사이클이 프레임워크에 종속되는것을 의미(제어의 역전, IoC)


라이브러리 = 대여, 프레임워크 = 귀속 의 개념같다. 

[Framework]서버사이드 언어와 Framwork


  • PHP
    • 장점
      1. 빠르다
      2. 쉽다
      3. C와 비슷하다(C사용자들에겐 편하다)
      4. 계속 발전한다
    • 단점
      • 기술지원 불가능
    • 비용
      • 공짜
    • 대표 Framework
      • CodeIgniter
    • DBMS
      • MySQL(Oracle, MSSQL)

  • JSP
    • 장점
      1. 인력이 많다(고용되는 입장에선 단점)
      2. 자바로 되어있어 이식성이 좋다
    • 단점
      1. 느리다
      2. 서버속성을 많이 탄다
      3. 인건비가 싸다(고용하는 입장에는 장점)
    • 비용
      • 처음에는 공짜이나 나중에는 많이 비쌈
    • 대표 Framework
      • Spring
    • DBMS
      • MySQL, Oracle, MSSQL
  • ASP.NET
    • 장점
      1. MS의 지원
      2. 쉽다
      3. 안정성
    • 단점
      1. MS의 기술종속
      2. 사용자가 많아지면 느려짐(비싼데...)
    • 비용
      • 비쌈
    • 대표 Framework
      • ASP.NET MVC
    • DBMS
      • Oracle, MSSQL
PHP의 단점만 완화시킬수 있다면 좋을듯
실제로 Facebook은 PHP를 개조해서 사용하고 있다고하니....

2014년 6월 10일 화요일

[SPRING]스프링을 통해 게시판(DB설계)

http://java-school.net/jsp-pjt/01.php

SYS 계정으로 새로운 사용자를 만든다.
kim@kim-android:~$ sqlplus scott/tiger

다음에 접속됨:
Oracle Database 10g

SQL> connect sys as sysdba
암호 입력: 
연결되었습니다.
SQL> show user
USER은 "SYS"입니다
SQL> create user javaschool 
     identified by jspproject default tablespace users;

SQL> grant connect,resource to javaschool;

javaschool 계정에 접속한 후 아래 내용으로 테이블과 시퀀스를 만든다.
-- 회원테이블 
create table member (
 email varchar2(60) primary key,
 passwd varchar2(20) NOT NULL,
 name varchar2(20) NOT NULL,
 mobile varchar2(20)
);

-- 게시판 종류
create table board (
 boardcd varchar2(20),
 boardnm varchar2(40) not null,
 constraint board_boardcd_pk primary key(boardcd)
);

-- 게시글
create table article (
 articleno number,
 boardcd varchar2(20),
 title varchar2(200) not null,
 content1 varchar2(4000),
 content2 varchar2(4000),
 content3 varchar2(4000),
 content4 varchar2(4000),
 content5 varchar2(4000),
 email varchar2(60),
 hit number, 
 regdate date,
 constraint article_articleno_pk primary key(articleno),
 constraint article_boardcd_fk foreign key(boardcd) references board(boardcd)
);

-- 게시글 번호 생성기 
create sequence article_articleno_seq
increment by 1
start with 1;


-- 덧글
create table comments (
 commentno number,
 articleno number, 
 email varchar2(60), 
 memo varchar2(4000),
 regdate date, 
 constraint comment_commentno_pk primary key(commentno)
);

-- 덧글 번호 생성기
create sequence comments_commentno_seq
increment by 1
start with 1;


-- 첨부파일 
create table attachfile (
 attachfileno number,
 filename varchar2(50) not null,
 filetype varchar2(30),
 filesize number,
 articleno number,
 constraint attachfile_attachfileno_pk primary key(attachfileno)
);

-- 첨부파일 번호 생성기
create sequence attachfile_attachfileno_seq
increment by 1
start with 1;

insert into board values ('free','자유게시판');
insert into board values ('qna','QnA게시판');
insert into board values ('data','자료실');
commit;                                       

톰캣 DataSource 설정

JSPProject.xml 수정

CATALINA_HOME/conf/Catalina/localhost/JSPProject.xml 을 열고 아래와 같이 추가한다.
<?xml version="1.0" encoding="UTF-8"?>
<Context
 path="/JSPProject"
 docBase="C:/www/JSPProject/WebContent"
 reloadable="true">
 
 <Resource
  name="jdbc/javaschool"
  auth="Container"
  type="javax.sql.DataSource"
  username="javaschool"
  password="jspproject"
  driverClassName="oracle.jdbc.driver.OracleDriver"
  url="jdbc:oracle:thin:@127.0.0.1:1521:orcl" />
 
</Context>

WEB-INF/web.xml 편집

/WEB-INF/web.xml 파일에 아래를 추가한다.
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
 Licensed to the Apache Software Foundation (ASF) under one or more
  contributor license agreements.  See the NOTICE file distributed with
  this work for additional information regarding copyright ownership.
  The ASF licenses this file to You under the Apache License, Version 2.0
  (the "License"); you may not use this file except in compliance with
  the License.  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->

<web-app xmlns="http://java.sun.com/xml/ns/javaee"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
  version="3.0"
  metadata-complete="true">
 
 <session-config>
  <session-timeout>-1</session-timeout>
 </session-config>
 
 <welcome-file-list>
  <welcome-file>index.html</welcome-file>
  <welcome-file>index.htm</welcome-file>
  <welcome-file>index.jsp</welcome-file>
  <welcome-file>default.html</welcome-file>
  <welcome-file>default.htm</welcome-file>
  <welcome-file>default.jsp</welcome-file>
 </welcome-file-list>
  
 <resource-ref>
  <description>ConnectionPool for JSP Mini Project</description> 
  <res-ref-name>jdbc/javaschool</res-ref-name>
  <res-type>javax.sql.DataSource</res-type>
  <res-auth>Container</res-auth>
 </resource-ref>

</web-app>

CATALINA_HOME/common/lib/ 에 오라클 JDBC 드라이버 파일 ojdbc14.jar 복사

CATALINA_HOME/common/lib/ 에 오라클 JDBC 드라이버 파일인 ojdbc14.jar 을 복사한다.
톰캣 7인 경우 CATALINA_HOME/lib 에 복사한다.

테스트

Tomcat을 재시작한 후 아래 내용으로 test.jsp 파일을 WebContent 디렉토리에 생성한다.
test.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" 
 pageEncoding="UTF-8"%>
<%@ page import="java.sql.*,javax.sql.*,javax.naming.*" %>
<%
 Connection con = null;
 PreparedStatement pstmt = null;
 ResultSet rs = null;
 
 DataSource ds = null;
 
 int totalRecord = 0;
  
 try {
  Context ic = new InitialContext();
  Context envCtx = (Context) ic.lookup("java:comp/env");
  ds = (DataSource) envCtx.lookup("jdbc/javaschool");
 } catch (NamingException e) {
  System.out.println(e.getMessage());
 }
 
 try {
  con = ds.getConnection();
  
  String sql = "SELECT count(*) FROM board";
  
  pstmt = con.prepareStatement(sql);
  rs = pstmt.executeQuery();
  rs.next();
  totalRecord = rs.getInt(1);
 } catch (SQLException e) {
  System.out.println(e.getMessage());
 } finally {
  try {
   rs.close();
  } catch (SQLException e) {
   e.printStackTrace();
  }
  try {
   pstmt.close();
  } catch (SQLException e) {
   e.printStackTrace();
  }
  try {
   con.close();
  } catch (SQLException e) {
   e.printStackTrace();
  }
 }
%> 
<!DOCTYPE html 
     PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head>
    <title>DataSource 테스트</title>
 <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
</head>
<body>
<p>
<%=totalRecord %>
</p>
</body>
</html>
웹브라우저에서 http://localhost:8080/JSPProject/test.jsp 방문하여 3이 나오면 테스트가 성공한 것이다.