반응형
제품 : JDBC

작성날짜 :

FILE을 CLOB에 INSERT하고, 반대로 컬럼을 읽어 FILE로 WRITE하는 JDBC PROGRAM 예제 (JDBC 8.1 이상)



PURPOSE

text file을 읽어서 CLOB column 에 저장하는 방법과, CLOB column의 데이타를
읽어서 file로 write하는 방법을 예제를 통해서 살펴본다.


Explanation



oracle.sql package에서 제공하는 CLOB class를 이용한다.
file의 내용을 읽어 CLOB type에 저장할 때는 CLOB.getCharacterOutputStream을
이용하고, 반대로 file에 write를 위해 CLOB type을 읽을 때는
clob.getCharacterStream() 를 이용한다.

Oracle JDBC driver 8.1.x 이상 version의 classes12.zip file이 CLASSPATH에
지정되어 있어야 한다. JDK는 1.2 이상을 사용한다.

[참고] 화일을 이용하지 않고 직접 text를 CLOB에 입력하고, 입력된 CLOB
데이타를 화면에 display하기 위해서는 아래 bulletin을 참고한다.
<Bulletin No: 19360>: Subject: ORACLE.SQL.CLOB CLASS를 이용하여
4000 BYTES이상의 CLOB TEXT 데이타를 저장하고, 조회하는 예제

Example


1. 테이블의 생성과 데이타 입력

미리 다음 작업이 수행되어 있어야 하며, 이 작업도 java application내에
statement.execute를 통해 포함시킬 수 있다.

sqlplus scott/tiger
SQL> create table test_clob(id number, c clob);
SQL> insert into test_clob values (1, empty_clob());

2. ClobFile.java

다음 내용을 ClobFile.java라는 이름으로 생성한 후,

os>javac ClobFile.java
os>java ClobFile
후 out.txt file내용을 확인하고, scott.TEST_CLOB table의 데이타도 조회하여
수해이 잘 되었는지 확인한다.

import java.sql.*;
import java.io.*;
import java.util.*;
import oracle.jdbc.driver.*;

import oracle.sql.*;

public class ClobFile {

public static void main (String args []) throws Exception {

try {
Connection conn;

DriverManager.registerDriver( new oracle.jdbc.driver.OracleDriver() );
conn = DriverManager.getConnection( "jdbc:oracle:thin:@krint-5:1521:ORA920"

, "scott","tiger" );

conn.setAutoCommit (false);

CLOB clob = null;

Statement stmt = conn.createStatement ();

String cmd = "select * from test_clob for update";
ResultSet rset = stmt.executeQuery(cmd);
while (rset.next())
clob = ((OracleResultSet)rset).getCLOB(2);

// 아랫부분에 file로 부터 데이타를 읽어 CLOB column에 저장하는
// readFromFile()이 작성되어 있다.

readFromFile(clob);
stmt.execute("commit");

rset = stmt.executeQuery ("select * from test_clob where id=1");

if (rset.next ())
{
clob = ((OracleResultSet)rset).getCLOB(2);
String st = rset.getString(2);

if (clob != null)
System.out.println ("clob length = "+clob.length ());
}

// 아랫부분의 CLOB 컬럼의 데이타를 읽어 다시 다른 file로 write하는
// writeToFile()을 호출한다.

writeToFile(clob);
}

catch (SQLException sqle) {
System.out.println("SQL Exception occured: " + sqle.getMessage());
sqle.printStackTrace();
}

catch(FileNotFoundException e) {
System.out.println("File Not Found");
}

catch (IOException ioe) {
System.out.println("IO Exception" + ioe.getMessage());
}
}

//


// test.txt file을 읽어 test_clob.c column에 저장한다.

static void readFromFile (CLOB clob) throws Exception {
File file = new File("/home/ora920/eykim/test.txt");
FileReader in = new FileReader(file);
Writer out = clob.getCharacterOutputStream();

int chunk = clob.getChunkSize();
System.out.print("The chunk size is " + chunk);
char[] buffer = new char[chunk];
int length;

while ((length = in.read(buffer,0,chunk)) != -1)
out.write(buffer, 0, length);

in.close();
out.close();
}

//------------------------------------------------------------------
// test.clob.c column의 데이타를 읽어 out.txt file로 write한다.

static void writeToFile (CLOB clob) throws Exception {
int chunk = clob.getChunkSize();

int length;
char[] buffer = new char[chunk];
FileWriter outFile = null;
outFile = new FileWriter("/home/ora920/eykim/out.txt");
Reader instream = clob.getCharacterStream();

while ((length = instream.read(buffer)) != -1) {
outFile.write(buffer, 0, length);
}

instream.close();
outFile.close();
}

}


Reference Documents


SCR #998


반응형
반응형

 

[vi 1단계]

1. 명령행에서 vi test.txt 해서 vi를 시작합니다.

2. vi 에는 3가지 모드가 있습니다.한번씩 눌러보세요.이거눌렀다,저것 눌렀다→

(1)명령모드: ESC 키 vi 화면 좌측하단에 아무표시도 없습니다.

(2)입력모드: i 키 vi 화면 좌측하단에 -INSERT- 표시가 나타납니다.

(3)ex모드: Shift + : 키 vi 화면 좌측하단에 : 표시가 나타납니다. → (#!!!-ESC 키를 꼭 눌러서 명령모드로 바꾼후 해야합니다.)

3. i 키를 누르고(입력모드) 아무거나 2~3줄 입력합니다.

4. 방향키를 눌러 상하좌우로 커서를 움직여 보세요.

5. ESC 키(명령모드)를 누르고, Shift + : 키(ex모드)를 누르고 wq를 입력해 보세요.

6. 자판의 키를 누르면서 어떤일이 벌어지는지 감이 쬐금 올때까지만 계속해보시기 바랍니다.

## 1단계에서 여러분이 알게된 명령어 ##

명령모드( ESC )

화살표 방향키

커서 이동하기

입력모드( i )

 

 

ex모드( Shift + : )

wq

저장하고 종료하기

  

[vi 2단계]

1. 명령행에서 vi test.txt 해서 1단계서 만든것을 다시 엽니다.

2. 첫번째 라인에 커서를 위치시킵니다.

3. yy 를 누릅니다.(y를 두번 누르면 됩니다)-복사하기 명령입니다.

4. p 를 누릅니다.(3번이상 눌러봅니다)-복사한것 붙혀넣기 명령입니다.

5. x 를 누릅니다.(3번이상 눌러봅니다)-삭제명령입니다.그것도 한글자씩 삭제하기 명령.

6. u 를 누릅니다.(3번이상 눌러봅니다)-되살리기 명령입니다.

7. ESC 키(명령모드)를 누르고, Shift + : 키(ex모드)를 누르고 wq를 입력합니다.

## 2단계에서 여러분이 알게된 명령어 ##

명령모드( ESC )

화살표 방향키

커서 이동

yy

복사(한줄)

p

붙히기(커서아래에)

x

삭제(한글자)

u

되살리기

입력모드( i )

 

 

ex모드( Shift + : )

wq

저장하고 종료하기

[vi 3단계]

1. 명령행에서 vi test.txt 해서 2단계까지 작업한것을 다시 엽니다.

2. 첫번째 라인에 커서를 위치시킵니다.(화살표 방향키 이용)

3. i를 누르고 windows라고 입력합니다.enter키를 두세번 누른후 다시 windows라고 입력, 3번정도 이과정을 반복합니다.

4. ESC 키를 눌러 명령모드로 바꾼후 커서를 windows라는 문구 맨앞에 위치시킨후 Shift + r 을 누릅니다.

(vi 화면 하단에 -REPLACE-라는 문구가 나타날 것입니다.)

5. linuxvi 라고 입력해보세요.(기존 windows가 linuxvi라고 교체되는 것을 볼수 있을 것입니다.)

6. Shift + : 키(ex모드)를 눌러 명령모드로 바꾼후 set nu 라고 입력합니다.(라인에 번호가 매겨집니다.)

7. ESC 키(명령모드)를 누르고, Shift + : 키(ex모드)를 누르고 wq를 입력합니다.

## 3단계에서 여러분이 알게된 명령어 ##

명령모드( ESC )

화살표 방향키

커서 이동

yy

복사(한줄)

p

붙히기(커서아래에)

x

삭제(한글자)

u

되살리기

R

교체

입력모드( i )

 

 

ex모드( Shift + : )

wq

저장하고 종료

set nu

라인에 번호매기기

 

[vi 4단계]

1. 명령행에서 vi test.txt 해서 3단계까지 작업한것을 다시 엽니다.

2. linuxvi 문구중 v자에 커서를 위치시킵니다.(화살표 방향키 이용)

3. i를 누르고 space bar 를 눌러 linux 와 vi 를 구분합니다. → 다시 ESC 키를 누른후 linux 맨앞에 커서를 위치시킵니다.

4. yw 를 누른후 p 를 두세번 천천히 눌러봅니다. (linux라는 단어가 계속 붙혀넣기 될것입니다.)

5. 자 이제 dw 를 눌러보세요.붙혀넣기 되었던 linux 단어가 삭제 될것입니다.)

6. 아무라인에나 커서를 위치시킵니다.

7. dd를 눌러보세요.(한라인통째로 삭제가 될것입니다. → 이것이 바로 한줄 통째 복사 명령어인 .yy의 반대명령어입니다.)

8. ESC 키(명령모드)를 누르고, Shift + : 키(ex모드)를 누르고 q!를 입력하세요. → (이명령을 주고 vi 를 빠져 나오면 방금했던 작업들이 저장되지 않습니다.)

 

 

 

## 4단계에서 여러분이 알게된 명령어 ##

명령모드( ESC )

화살표 방향키

커서 이동

yy

복사(한줄)

yw

복사(한단어)

p

붙히기(커서아래에)

x

삭제(한글자)

dw

삭제(한단어)

dd

삭제(한라인)

u

되살리기

R

교체

입력모드( i )

 

 

ex모드( Shift + : )

wq

저장하고 종료

q!

저장않고 종료

set nu

라인에 번호매기기

 

[vi 5단계]

1. 명령행에서 vi test.txt 해서 4단계까지 작업한것을 다시 엽니다.

2. 첫번째 라인에 커서를 위치시키고 3yy를 누릅니다(3줄이 한꺼번에 복사되어집니다.).

3. p를 3번이상 눌러보세요.

4. 3dd 를 누릅니다.(3줄씩 한꺼번에 지워지는 것을 볼수 있습니다.)

5. / (Slash) 를 누른후 (검색모드입니다.vi 화면하단에 / 표시가 나타납니다.) → linux라고 입력한후 enter 를 치세요다.그러면 linux 라는 단어가 있는곳으로 이동합니다. → 그다음 linux라는 단어로 이동하고자 할때는 n 을 누르면 됩니다. → 다시 역으로 올라가고자 하려면 Shift + n 을 누르면됩니다. → (#!!! - / 대신 ? 을 누르면 현재 커서위치부터 위쪽으로 검색해 올갑니다.

6. ESC 키(명령모드)를 누르고, Shift + : 키(ex모드)를 누르고 w test2.tst를 입력합니다.

7. vi 에서 빠져나온후 ls 명령을 내려보면 test2.txt 라는 파일이q 새로생긴것을 알 수있습니다.

## 5단계에서 여러분이 알게된 명령어 ##

명령모드( ESC )

화살표 방향키

커서 이동

yy

복사(한줄)

nyy

복사(n 라인만큼)

yw

복사(한단어)

p

붙히기(커서아래에)

x

삭제(한글자)

dw

삭제(한단어)

dd

삭제(한라인)

ndd

삭제(n 라인만큼)

u

되살리기

R

교체

/

검색

입력모드( i )

 

 

ex모드( Shift + : )

wq

저장하고 종료

wq test2.txt

test2.txt 파일명으로 저장

q!

저장않고 종료

set nu

라인에 번호매기기

 

1단계부터 5단계 까지 나온 명령들만 여러분이 익히면 vi 명령어의 99%를 배운것입니다.나머지 1%는 지금까지 분류된 범위에서 조금씩 첨가되는 명령이라 보면 됩니다.조금더 상황에 맞게 세분화 시킨 명령어들이면서,더 작업을 빨리 할 수 있게끔 하는 명령어들 말입니다. 방향키 만으로도 얼마든지 이동이 가능하지만 라인의 끝으로 단번에 이동하거나 한 페이지씩 이동하거나 범위를 설정한 만큼만 복사합니다 거나..등등..이 있다고 보면 됩니다.물론 앞으로 지금까지 해온 것에 조금씩 하나하나씩 첨가해 나간다면 어느새 vi 에 익숙해진 여러분의 빠른 손놀림을 보게 될 것입니다 :)

 

[vi PowerUP 6단계]

1. 명령행에서 vi powerupvi.txt 해서 세로운 파일을 여세요.

2. 첫번째 라인에 커서를 위치시키고 입력모드( i )에서 linuxvi linuxvi linuxvi linuxvi linuxvi 라고 → 입력하고 명령모드로 전환(ESC)후 이것을 복사(yy)하여 붙혀넣기(p)해서 5줄을 만듭니다.

3. j,k,h,l 순으로 마구마구 눌러보면서 커서가 어떻게 움직이나 잘 보세요.

4. w를 한번 두번 세번 마구마구 눌러보세요. 한 단어씩 이동하죠.

→ 자.그럼 이젠 b를 한번 두번 세번 마구마구 눌러보세요.역시 한단어씩 이동하는데 아까와 반대로 움직이죠. 지금은 한칸씩 이동이나 단어단위 이동이나 별차이 없이 느껴지실지도 모르지만 라인 수 많아지고 한 라인이 무진장 긴문장을 접하고 그 가운데 있는 문자를 수정해야 할 경우 큰 도움을 볼 것입니다

5. ex모드로 ( shift + : ) 전환후 : w linuxvi.txt 라고 명령해 보세요.

6. 명령모드(ESC)로 전환후 커서를 마지막라인으로 이동시킨후 o(알파벳입니다.숫자 0 가 아니고,,)를 누르고, windows windows windows windows windows 라고 입력하고 명령모드로 전환(ESC)후 이것을 복사(yy)하여 붙혀넣기(p)해서 5줄을 만듭니다.

7. ex모드로( shift + : ) 전환후 : w linux-windows.txt 라고 명령해 보세요.

8. :wq 하고 저장후 나와서 ls 해 보시면 powerupvi.txt 이외에 linuxvi.txt 와 linux-windows.txt 파일이 추가로 생긴것을 볼 수 있으실 겁니다.

## powerup 6단계에서 여러분이 알게 된 명령어 ##

명령모드( ESC )

j

아래로 이동

k

위로 이동

h

좌로 이동

l

우로 이동

w

한단어씩 정방향으로 이동

b

한단어씩 역방향으로 이동

입력모드( o )

현재라인 아래 입력모드

 

ex모드( Shift + : )

w

새로운 이름으로 파일저장하기

 

[vi PowerUP 7단계]

1. 명령행에서 vi linux-windows.txt 해서 세로운 파일을 여세요.

2. linuxvi 의 마지막 라인의 끝으로 이동후 J (대문자)를 눌러 봅니다.라인 붙히기 입니다.

3. 이제 0(아라비아 숫자)를 눌러 보세요.라인 맨 앞으로 이동 할 것입니다. 이젠 $ 를 눌러보세요.

→ 라인의 맨 끝으로 이동 할 것입니다. 이 두가지 명령역시 w,b와 잘 사용하면 프로그램 코딩시 한 라인이 엄청길 때 원하는 위치로 방향키나 ,j.k.h.l 보다 신속히 원하는 위치로 이동시켜 주기때문에 무척 편리하게 쓰실 수 있을 것입니다.

4. 이젠 다시 1G를 눌러 보세요.글구 $G를 눌러 보세요.계속 번갈아 가면서 눌러 보세요.. → 어떤 변화가 있나..이것은 파일의 처음과 끝으로의 이동입니다.

→ 라인수가 작을때나 별쓰임새가 없지만 http.conf와 같이 라인수가 1000라인 이상 넘어가는 파일등에서 간혹 마지막 부분의 설정파일을 보면서 고쳐야 할경우이나 마지막 부분에 뭔가 작업을 해야 할 경우 매우 유용합니다..pageup/pagedown 보다 빠르죠.단칼이니까..-_-''

5. 자 위에서 pageup/pagedown키로 한 화면씩 이동한다고 했죠. 근데 제가 모시고 있는 심사부님말로는 진정한 vi의 고수는 옆에서 봤을때 키보드에서 손이 움직이는 모습이 보이지 않아야 한 다라는 가르침을 주시더군요.. 결국 vi의 고수들은 자판의 오른쪽에 위치하여 손의 움직임이 보이게 하는 방향키나 pageup/pagedown 키를 만지지 않아야 한다는 것이죠.. 따라서 손의 움직임을 보이게 하는 pageup/pagedown키 대신 손의 움직임을 최소화 시켜줄 단축키를 알아보죠.

6. ex모드( shift + : )로 전환후 : set nu 해서 라인수가 나오게 합니다. → 그리고 : 5 라고 명령후 커서위치를 확인합니다. : 1 이라고 명령 후 커서위치를 확인합니다.

→ 이 명령어 쓰임은 보통은 http.conf등과 같은 설정 화일을 변경 후 데몬을 다시 구동시킬 때 잘못된 구문이 있을시 엔 문제가 있는 라인수가 나오게 됩니다. 이 때 바로 이 명령어를 유용하게 쓰는 겁니다.

→ 파일을 열고 : 에러라인수를 입력하면 바로 그곳으로 커서가 이동하죠 → 유용하게 활용하시고 벌레 많이 잡으세요 .:)

7. 저장하고 종료합니다.

## powerup 7단계에서 여러분이 알게된 명령어 ##

명령모드( ESC )

j

아래로 이동

k

위로 이동

h

좌로 이동

l

우로 이동

w

한단어씩 정방향으로 이동

b

한단어씩 역방향으로 이동

J

라인 붙히기

0(아라비아 숫자)

라인 맨앞으로 이동

$

라인 맨끝으로 이동

1G

파일의 첫라인으로 이동

$G 또는 G

파일의 끝라인으로 이동

pageup키

한화면 위로 이동

pagedown키

한화면 아래로 이동

입력모드( o )

현재라인 아래 입력모드

 

ex모드( Shift + : )

w

새로운 이름으로 파일저장하기

n(원하는 아라비아 숫자)

이동하고자 하는 라인위치로 이동

 

[vi PowerUP 8단계]

1. 명령행에서 cp /etc/httpd/conf/httpd.conf ./testsample.txt 라고 명령주시고요,

2. vi testsample.txt 해서 파일을 여시구요.

3. 전단계에서 파일의 라인수가 적어서 제대로 확인 못한 $G,1G,pageup키, pagedown키를 눌러보세요. → 마음껏..원본파일이 아니니까.. 막 지워도 보구요.. 지금까지 기억나는 명령어 다 써보세요.. → 100라인씩 막 지워도 보고 복사도 해보고 ~ 마구마구 ~

4. 이제 다시 마음을 가다듬고. Ctrl + f 해보시고 이번엔 Ctrl + b 해보세요. → 이두가지가 손의 움직임을 최소화 시켜 줄 pagedown/pageup 를 대치합니다→:)

5. 근데 Ctrl + f 후엔 커서가 화면의 첫라인에 위치하고 Ctrl + b 후엔 화면의 마지막 라인에 위치하죠. → 이때 H,L,M(모두 대문자입니다.)을 눌러보세요. 여러번 눌러보세요..감이 잡히시죠.. → [H]move to Home - top line on screen,[L]move to Last line on screen, → [M]move to Middle line on screen의 약자인 것

6. O(대문자 알파벳)를 눌러보세요. 입력 커서가 현재라인의 위로 이동하는 것을 볼 수 있습니다.

7. 다시 명령모드로 변경 후 이번엔 a를 눌러보자. i를 눌렀을 때와는 틀리게 커서 뒤에서 입력모드가 시작됨을 알 수 있을 것입니다.

8. 다시 명령모드로 변경후 커서의 위치를 라인의 중간에 위치시키고, I(알파벳 대문자)를 눌러보고, 다시 명령모드로 전환 후 A(알파벳 대문자)를 눌러 보세요.

→ 아까와는 반대로 라인의 끝에서 입력모드가 시작됨을 알 수 있을 것입니다. 대부분의 단순 입력모드로 i를 많이 이용하고 추가라인 입력 시엔 o를 많이 이용하므로 적어도 i 와 o를 이용한 입력모드는 꼭 익숙하게 사용하실 수 있도록 익혀두시면 좋습니다.

## powerup 8단계에서 여러분이 알게 된 명령어 ##

명령모드( ESC )

j

아래로 이동

k

위로 이동

h

좌로 이동

l

우로 이동

w

한단어씩 정방향으로 이동

b

한단어씩 역방향으로 이동

J

라인 붙히기

0(아라비아 숫자)

라인 맨앞으로 이동

$

라인 맨끝으로 이동

1G

파일의 첫라인으로 이동

$G

파일의 끝라인으로 이동

pageup키

한화면 위로 이동

pagedown키

한화면 아래로 이동

Ctrl + b

한화면 위로 이동

Ctrl + f

한화면 아래로 이동

H

현재화면 첫라인으로 이동

M

현재화면 중간라인으로 이동

L

현재화면 마지막라인으로 이동

입력모드( o )

현재라인 아래 입력모드

 

입력모드( O )

현재라인 입력모드

 

입력모드( a )

커서뒤 입력모드

 

입력모드( I )

현재라인 맨앞 입력모드

 

입력모드( A )

현재라인 맨뒤 입력모드

 

ex모드( Shift + : )

w

새로운 이름으로 파일저장하기

n(원하는 아라비아 숫자)

이동하고자 하는 라인위치로 이동

 

[vi PowerUP 9단계]

1. 명령행에서 vi linux-windows.txt 파일을 여세요,

2. 그 동안 놀고 있었던 마우스를 이용해 첫 번째 라인을 블럭으로 지정 후 휠 마우스가 3버튼이면 가운데 버튼을 2버튼이면 양쪽마우스버튼을 동시에 눌러보세요. 블럭으로 범위가 지정됐던 영역이 붙여넣기가 되는 것을 보실 수 있습니다. 마우스로 원하는 범위지정을 한만큼 복사하기가 진행됨을 볼 수 있을 것입니다. 그러나 vi 고수는 손의 움직임이 보이면 안 되는 법.. -.-

3. vi 의 visual 모드가 바로 고수를 위한 해답입니다.

4. 명령모드로 전환 후 첫 번째 라인 맨앞으로 이동후 v 를 누러보세요. 화면 아래쪽 좌측에 -- VISUAL -- 표시가 나타날 것입니다. 그리고 j.k.h.l을 이용해 커서를 움직여 보세요. 범위가 지정 됨을 알 수 있습니다. k를 눌러 범위를 linux라는 단어까지만 지정되게 한 후 y를 한 번 누른 후 라인맨 끝으로 이동 후 p를 눌러보세요. 마우스를 이용해서 범위 설정 후 copy하는 방법보다 visual 모드를 이용해서 범위 설정 후 copy하는 방법엔 어떤 장점이 있을까요?

1) 마우스의 상태에 따라 다르겠지만 visual 모드를 이용하면 마우스보다 정교하게 범위설정을 할 수 있다는 사실입니다. 제 마우스가 부드럽지 못하다 보니 정확한 범위를 지정하려고 하다보면 속 뒤집어 질때가 많았죠.. 아마 동감하시는 분이 있으실 겁니다..-_-''

2) 마우스를 이용한 copy는 화면에 보여지는 부분만 copy된다는 것입니다. 그러나 visual 모드를 이용하면 그런 제약이 없다는 것이죠.

3) 그리고 가장 중요한 차이점!! visual 모드를 이용하면 vi 고수같아 보인다는 것..

5. visual 모드로 진입하는 방법에는 3가지가 있습니다.

1) v : 일반 visual 입니다.-- VISUAL -- 이라고 표시됩니다.

2) Ctrl + v : 블럭 visual 입니다. -- VISUAL BLOCK -- 이라고 표시됩니다.

3) Shift + v : 라인 visual 입니다. -- VISUAL LINE -- 이라고 표시됩니다.

6. 다시 첫 번째 라인 맨 앞으로 이동후 Ctrl + v 를 이용해 블럭 visual 로 진입 후 j를 눌러 5번째 라인까지 내려간 후 l을 눌러 1~5번째 라인까지 첫 번째 linuxvi 만을 범위 설정 후 y를 눌러보세요. 5 lines yanked 라는 문구가 화면 하단 좌측에 나타날 것입니다. 커서를 라인 맨 마지막으로 이동시킨 후 o 를 눌러 라인아래 입력모드로 만든 후 엔터키를 두 세번 누른 후 명령모드로 다시 바꾸고 p를 눌러보세요.자 이게 바로 visual 모드의 하이라이트입니다. 이것을 잘 이용하면 특정범위를 지정해서 특정부위에 정확하게 넣을 수 있죠. 또한 맨 앞 라인을 모두 대문자로 바꾸고 싶을때 visual block을 이용해 라인들 맨앞자만 범위를 지정후 Shift + u를 눌러보세요..어떠세요.vi 쓸만하죠..:) 소문자는 범위지정 후 u 라고만 함 됩니다. 지정된 범위의 삭제는 d입니다. 지정된 범위의 한줄로의 붙히기는 shift + j 입니다.

7. 저장하고 종료합니다.

 

 

 

 

## powerup 9단계에서 여러분이 알게된 명령어 ##

명령모드( ESC )

j

아래로 이동

k

위로 이동

h

좌로 이동

l

우로 이동

w

한단어씩 정방향으로 이동

b

한단어씩 역방향으로 이동

J

라인 붙히기

0(아라비아 숫자)

라인 맨앞으로 이동

$

라인 맨끝으로 이동

1G

파일의 첫라인으로 이동

$G

파일의 끝라인으로 이동

pageup키

한화면 위로 이동

pagedown키

한화면 아래로 이동

Ctrl + b

한화면 위로 이동

Ctrl + f

한화면 아래로 이동

H

현재화면 첫라인으로 이동

M

현재화면 중간라인으로 이동

L

현재화면 마지막라인으로 이동

입력모드( o )

현재라인 아래 입력모드

 

입력모드( O )

현재라인 위 입력모드

 

입력모드( a )

커서뒤 입력모드

 

입력모드( I )

현재라인 맨앞 입력모드

 

입력모드( A )

현재라인 맨뒤 입력모드

 

ex모드( Shift + : )

w

새로운 이름으로 파일저장하기

n(원하는 아라비아 숫자)

이동하고자 하는 라인위치로 이동

visual( v )

visual line( Shift + v )

visual block( Ctrl + v )

 

y

복사

p

붙혀넣기

d

삭제

U

대문자로

u

소문자로

J

한줄의 라인으로 붙히기

 

[vi PowerUP 10단계]

1. 명령행에서 vi linux-windows.txt 파일을 다시 여세요,

2. ex모드로 전환하세요.그리고 :%s/linuxvi/vimpire/g 라고 명령해 보세요

3. 이번엔 : ! ls 라고 해보시고, : ! vi /etc/httpd/conf/httpd.conf 라고 해보세요. → 빠져나올때는 : q 입니다.대충 감이 잡히시죠→:)

4. 마지막으로 : h 라고 해보세요.자 이제 여러분이 유심히 봐주셔야 할 내용이 나왔습니다.

→ 지금까지 여러분은 많은 vi에 대한 사용법을 배웠다고 생각하실 것입니다. 하지만 저도 아는 것은 여러분게 설명드린 이게 전부고 아직도 vi의 기능은 여러분 앞에 보이는 내용만큼 많이 남아 있습니다. 이제부터는 여러분의 몫 입니다. 그리고 여러분의 도움이 필요합니다. 많은 작업상황과 실전에 많이 적용시켜보시고 유용한 vi의 기능들을 조금씩 모아 좀더 많은 리눅스 사용자들이 좀 더 빠른 시간 안에 프로그램을 코딩하고 효과적인 작업을 함으로써 좀더 유용한 리눅스용 프로그램들을 좀더 빨리 만들고 리눅스를 효율적으로 운영함으로써 우리의 리눅스가 더욱더 가치있는 OS로써 사용되고 발전하는데 여러분의 힘을 모아주세요→:)

5. 도움말에서 빠져 나올땐 : q 입니다.

6. 영원히 저장하고 종료합니다.이제 준비는 끝났습니다. → 이제 vi 고수를 위한 실전 연습만이 남았습니다. 자 이제 실전으로 돌아가서 vi의 내면에 숨겨진 기능들을 마음껏 발휘시켜 사용하시기 바랍니다.

##powerup 10단계에서 여러분이 알게된 명령어#

명령모드( ESC )

j

아래로 이동

k

위로 이동

h

좌로 이동

l

우로 이동

w

한단어씩 정방향으로 이동

b

한단어씩 역방향으로 이동

J

라인 붙히기

0(아라비아 숫자)

라인 맨앞으로 이동

$

라인 맨끝으로 이동

1G

파일의 첫라인으로 이동

$G

파일의 끝라인으로 이동

pageup키

한화면 위로 이동

pagedown키

한화면 아래로 이동

Ctrl + b

한화면 위로 이동

Ctrl + f

한화면 아래로 이동

H

현재화면 첫라인으로 이동

M

현재화면 중간라인으로 이동

L

현재화면 마지막라인으로 이동

입력모드( o )

현재라인 아래 입력모드

 

입력모드( O )

현재라인 위 입력모드

 

입력모드( a )

커서뒤 입력모드

 

입력모드( I )

현재라인 맨앞 입력모드

 

입력모드( A )

현재라인 맨뒤 입력모드

 

ex모드( Shift + : )

w

새로운 이름으로 파일저장하기

n(원하는 아라비아 숫자)

이동하고자 하는 라인위치로 이동

%s/a/b/g

파일 전체에서 a 를 b 로 바꿈

!

외부 명령사용(종료는 q)

h

도움말(종료는 q)

visual( v )

visual line( Shift + v )

visual block( Ctrl + v )

 

y

복사

p

붙혀넣기

d

삭제

U

대문자로

u

소문자로

J

한줄의 라인으로 붙히기

 

이제 여러분은 vi의 기본적인 메뉴 그룹을 알게되었습니다.그리고 지금까지 알게된 명령어만으로도 vi를 충분히 활용하고도 남습니다.하지만 좀더 다양한 명령들이 추가로 더 있습니다.추가로 더 알아서 혼동되실것 같으면 어느정도 vi 명령이 익숙해지신후에 보셔도 무관합니다.하지만 알게되면 언젠가 사용하실 경우가 있을것입니다.시간있으실때 하나하나 연습해보세요.:)

 

## 추가 명령어 ##

이동

e

단어의 마지막 글자로

E

단어의 마지막 글자로(띄워쓰기 전까지)

^

커서위치 라인의 첫 글자로(라인 처음위치))

$

커서위치 라인의 마지막 글자로(라인 끝위치)

enter

커서위치 다음 라인 첫 글자로

+

커서위치 위 라인 첫 글자로

-

커서위치 아래 라인 첫 글자로

(

이전 문장 첫 글자로

)

다음 문장 첫 글자로

{

이전 문단으로

}

다음 문단으로

수정

r

커서 위치의 한글자 교체

R

커서 위치부터 <ESC>를 누를때까지 다른 글자로 교체

s,cl

커서 위치의 글자를 한개를 여러 글자로 교체

ch

커서 바로 앞의 글자를 한개를 여러글자로 교체

cw

커서위치의 한단어를 교체

c0

커서 위치부터 줄의 처음까지 교체

C,c$

커서 위치부터 줄의 끝까지 교체

cc

커서가 있는 줄을 교체

cj

커서가 있는 줄과 그 다음 줄을 교체

ck

커서가 있는 줄과 그 앞줄을 교체

삭제

x,dl

커서 위치의 글자 삭제

X,dh

커서 바로 앞의 글자 삭제

dw

한 단어를 삭제

d0

커서 위치부터 줄의 처음까지 삭제

D,d$

커서 위치부터 줄의 끝까지 삭제

dd

커서가 있는 줄을 삭제

dj

커서가 있는 줄과 그 다음 줄을 삭제

dk

커서가 있는줄과 그 앞줄을 삭제

복사 &붙히기

yw

커서 위치부터 단어끝까지 복사

y0

커서 위치부터 줄의 처음까지 복사

y$

커서 위치부터 줄의 끝까지 복사

yy

커서가 있는 줄을 복사

yj

커서가 있는 줄과 그 다음줄을 복사

yk

커서가 있는 줄과 그 앞줄을 복사

p

커서의 다음 위치에 붙혀넣기

P

커서가 있는 위치에 붙혀넣기

기타

.

조금전에 했던 명령을 반복(하나만)

~

대문자는 소문자로,,소문자는 대문자로→

Ctrl + l

현재 화면을 지우고 다시그림→

 

이제 vi의 하이라이트 mapping에 대해 배워보는 공간입니다.지금까지 익혀온 명령들과 앞으로 실전에 활용하면서 배우게될 많은 명령어들과 사용법을 앞으로 해볼 mapping과 잘 접목시키면 효율적인 작업에 많은 도움이 될것입니다..

 

 

 

[vi 11단계]-mapping(1)!!!

1. 명령행에서 vi map.txt 해서 파일을 엽니다.

2. 첫번째 라인에 windows notepad라고 입력합니다.

(참고로 vi에서 <F1>key는 도움말로 mapping 되어 있으니,<F2><F3>를 사용하겠습니다. )

3. ex모드로 전환후 :map <F2> :%s/windows/linux/g 까지만 입력후 enter를 치세요.

4. (자 먼저 위의 명령입력은 ex모드에서 map이라는 명령을 입력하고, 한칸띄우고 funtionkey F1을 .. 누르면 <F2> 이라고 입력됩니다. 그리고 다시 한 칸 띄우고 :%s/windows/linux/g라고 입력하면 됩니다.)

5. 자 이제 명령모드 상태니까 <F2>key를 눌러보세요.

6. 좌측하단 입력모드에 아까 입력한 명령이 나옵니다. 이제 enter만 치면 명령이 실행됩니다.

7. 자..근데..<F2>key누르고 명령 확인 후 enter치기 귀찮죠.. 자 이제 이것을 한 번에 해보면..

8. 이번엔 <F3>에 mapping 해서 역으로 linux를 windows로 바꿔보죠.

9. ex모드로 전환후 :map <F3> :%s/linux/windows/g 까지만 입력후 ctrl + v 를 눌러보세요.

( ctrl + v가 명령모드에선 -VISUAL BLOCK- 이지만 ex모드에선 funtion key 입력기능을 합니다.)

10. :map <F3> :%s/linux/windows/g^ 이렇게 되죠→이제 enter를 눌러보세요.

11. :map <F3> :%s/linux/windows/g^M 이렇게 되죠→이제 enter를 쳐서 명령을 입력시키고,

12. 명령모드 상태에서 <F3>를 눌러보세요.바로 바뀌죠.

13. 이제 다시 <F2>key를 눌러보세요. 명령확인후 enter를 쳐야만 바뀌죠.

14. 자이제 어느정도 mapping 활용용도가 머리에 막 떠오르세요?..^^

15. 참고로 여기선 mapping 할 문자로 <F2><F3>등..funtionkey를 사용했는데..

→ 이것만 쓸 수 있는 것이 아니고 vi에서 사용하는 명령과 중복되지 않으면 어떤 문자라도 쓸 수 있습니다. 예를 들어 @,&,qq,등등..자신이 얼마든지 만들어 쓸수 있습니다.

## 11단계에서 여러분이 알게된 명령어 ##

ex모드( Shift + : )

map + 원하는 mapping 문자

매크로만듬.

ctrl + v

funtion key 입력

 

[vi 12단계]-mapping(2)!!!

1. 11단계에서 사용한 파일을 그대로 이용합니다.

2. 모든 라인을 지우고 첫 번째 라인에 notepad 두 번째 라인에 kldp라고 입력합니다.

(현재<F2><F3>가 mapping이 되어있으니→)

3. ex모드로 전환 후 :map <F4> :%s/notepad/vi/g^M까지만 입력 후 enter를 치세요.

4. 다시 ex모드로 전환 후 :map <F5> :%s/kldp/mapping/g^M까지만 입력 후 enter를 치세요.

5. 다시 ex모드로 전환 후 :map <F6> <F4><F5>^M까지만 입력 후 enter를 치세요.

6. <F5><F6>를 차례로 한번 씩 눌러보고 u 키를 이용해 다시 2번 상태로 만든 후,

7. ex모드로 전환후 :map <F7> <F4><F5>owow!!^M라고 mapping 시킵니다.

8.<F7> 한번 눌러보세요.

9. owow!!의 의미는 첫 번째 단어 o는 입력모드(아래라인에 입력명령) wow!!는 입력문자.

10. u 키를 이용해 다시 2번 상태로 만든 후,

11. ex모드로 전환 후 :map <F7> <F4><F5>owow!!^[:w mapping.txt^M라고 mapping 시킵니다.

12. 명령모드 상태에서 <F7>를 다시 눌러보세요.

13. ^[ 이것은 ex모드에서 ctrl + v 하고서 esc를 누르면 됩니다.

→ 즉, ^[은 ESC(명령모드)를 의미합니다.

→ 따라서 owow!!^[:w mapping.txt의 의미는 입력 모드로 가서 wow!!를 입력하고 다시 명령모드로 전환 후 ex모드를 실행시켜 mapping.txt라는 새로운 파일로 저장한다라는 의미입니다.

14. 이제 :wq명령으로 저장하여 빠져나온 후 → 다시 vi map.txt를 열어서 <F2><F3><F4><F5><F6><F7>를 눌러보세요.

15. 명령이 안먹죠..vi 실행시 마다 사용하려면.vimrc파일에 저장 후 사용하시면 됩니다.

16. mapping을 편집상 태에서도 사용하고 싶다면 mapping시 map 뒤에 !를 붙히면 됩니다.

## 12단계에서 여러분이 알게 된 명령어 ##

ex모드( Shift + : )

map + 원하는 mapping 문자

매크로만듬.

ctrl + v

funtion key 입력

map! + 원하는 mapping 문자

편집모드에서도 실행가능 매크로

 

[vi 13단계]-marking!!!

1. vi mark.txt를 하나 만들어 시작합니다.

2. 라인 맨 앞 줄마다 라인번호를 입력합니다. 30줄 이상으로 만드세요.

3. 10번 라인으로 이동 후 명령모드 상태서 ma 즉,m 과 a를 순서대로 누릅니다.

4. 20번 라인으로 이동 후 명령모드 상태서 mb 즉,m 과 b를 순서대로 누릅니다.

5. 30번 라인으로 이동 후 명령모드 상태서 mc 즉,m 과 c를 순서대로 누릅니다.

6. ` 을 누른 후 a를 눌러보세요.

7. ` 을 누른 후 b를 눌러보세요.

8. ` 을 누른 후 c를 눌러보세요.

9. 이렇게 marking을 코딩시 table의 시작이나 끝, 또는 구분하여야 할 영역이나 참조해야할 부분에 시켜놓고 사용하면 됩니다.

##13단계에서 여러분이 알게 된 명령어##

ex모드(Shift + :)

map + 원하는 mapping 문자

매크로만듬.

ctrl + v

funtion key 입력

map! + 원하는 mapping 문자

편집모드에서도 실행가능 매크로

명령모드(ESC)

m + 원하는 marking 문자

marking

 

[출처] VI 편집기 단계별 가이드|작성자 oldpiano


반응형

'UTILITY' 카테고리의 다른 글

TCO Stream 제거  (0) 2011.02.16
파일 또는 폴더의 락 풀기"Unlocker Portable" v1.9.0 포터블  (0) 2011.02.08
vmplayer 3.1.1 개인용  (1) 2010.12.10
VMWARE 속도 튜닝 하기  (1) 2010.12.07
Windows에서 Mac 주소 바꾸기(변경)  (0) 2010.12.06
반응형


뭐... 엑셀로 바로 출력하자고 하니...

깔아야 하는것들이 너무 많고 -_-...

버젼별로 차이도 존재하니.. 귀찮아... 하앍....

그래서 걍.. 수작업 -_-

별도로 설치할 필요는 없고

아래와 같이 실행하여 spool 된 파일을 excel에서 불러

다시 가공처리...

뭐... 짜는 것도 그리 어렵지 않지만 후후.... -_-...


 spool '/oracle/20110106_table.txt'

SET SERVEROUTPUT ON;
set serveroutput on size unlimited;

DECLARE

    L_TABLE_NAME VARCHAR2(2000);   
    M_NO NUMBER(9) := 1;
    L_NO NUMBER(9);
   
    CURSOR TABLE_DEF_LIST IS
    select A.TABLE_NAME, B.COMMENTS from USER_TABLES A, USER_TAB_COMMENTS B WHERE A.TABLE_NAME=B.TABLE_NAME
    order by A.TABLE_NAME;

    CURSOR TABLE_LIST IS
     SELECT
               B.COLUMN_NAME "컬럼ID",
               B.COMMENTS "컬럼명",
               A.DATA_TYPE || '(' || A.DATA_LENGTH || ')' "타입",
               A.DATA_LENGTH "길이",
               A.NULLABLE    "NULLABLE",              
               CASE WHEN TRIM(C.COLUMN_NAME) IS NOT NULL THEN 'Y' ELSE 'N' END "KEY",
               DATA_DEFAULT  "DF"
         FROM USER_TAB_COLS A, USER_COL_COMMENTS B, DBA_CONS_COLUMNS C
        WHERE A.TABLE_NAME  = B.TABLE_NAME
          AND A.COLUMN_NAME = B.COLUMN_NAME
          AND A.TABLE_NAME = C.TABLE_NAME(+)
          AND A.COLUMN_NAME = C.COLUMN_NAME(+)
          AND A.TABLE_NAME = L_TABLE_NAME;
         
    N_DEFAULT VARCHAR2(2000);   
   
    TABLE_LIST_CNT TABLE_LIST%ROWTYPE;
         
BEGIN

    BEGIN
   
        FOR TABLE_DEF_LIST_GET IN TABLE_DEF_LIST LOOP

            L_TABLE_NAME := TABLE_DEF_LIST_GET.TABLE_NAME;
           
            DBMS_OUTPUT.PUT_LINE('순번        : ' || M_NO);
            DBMS_OUTPUT.PUT_LINE('테이블 ID   : ' || TABLE_DEF_LIST_GET.TABLE_NAME);
            DBMS_OUTPUT.PUT_LINE('테이블 설명 : ' || TABLE_DEF_LIST_GET.COMMENTS);
           
            DBMS_OUTPUT.PUT_LINE('No.' || '***' || '컬럼ID' || '***' || '컬럼명' || '***' || '타입' || '***' || '길이' || '***' || 'NULL' || '***'|| 'KEY' || '***' ||'DEFAULT');
           
            M_NO := M_NO + 1;
            L_NO := 1;
           
            BEGIN
           
                FOR TABLE_LIST_CNT IN TABLE_LIST LOOP
               
                    --FETCH TABLE_LIST INTO TABLE_LIST_CNT; -- 한행 씩 읽기
                    EXIT WHEN TABLE_LIST%NOTFOUND;        -- 데이터가 발견되지 않으면 종료
                   
                    N_DEFAULT := '';
                    N_DEFAULT := TABLE_LIST_CNT.DF ;      -- LONG 데이터를 VARCHAR2로 변환
                   
                    DBMS_OUTPUT.PUT_LINE(L_NO || '***' || TABLE_LIST_CNT.컬럼ID || '***' || TABLE_LIST_CNT.컬럼명 || '***' || TABLE_LIST_CNT.타입 || '***' || TABLE_LIST_CNT.길이 || '***' || TABLE_LIST_CNT.NULLABLE || '***'|| TABLE_LIST_CNT.KEY || '***' ||N_DEFAULT);
                   
                    L_NO := L_NO + 1;
                END LOOP;
               
            EXCEPTION WHEN OTHERS THEN
                DBMS_OUTPUT.PUT_LINE('** 테이블 컬럼  내용 조회 오류 발생 ! ** ');   
            END;

            DBMS_OUTPUT.PUT_LINE(' '); 
            DBMS_OUTPUT.PUT_LINE('===========================================================');
            DBMS_OUTPUT.PUT_LINE(' ');
             
        END LOOP;
       
    EXCEPTION WHEN OTHERS THEN
        DBMS_OUTPUT.PUT_LINE('** 테이블 조회 오류 발생 ! ** ');   
    END;
           
END;
/

spool off




반응형
반응형

  SELECT   ROUND (BITAND (s.ownerid, 65535)) parent_session_sid,
           ROUND (BITAND (s.ownerid, 16711680) / 65536) parent_session_instid,
           s.INST_ID,
           s.SADDR,
           s.SID,
           s.SERIAL#,
           s.AUDSID,
           s.PADDR,
           s.USER#,
           s.USERNAME,
           s.COMMAND,
           s.OWNERID,
           s.TADDR,
           s.LOCKWAIT,
           s.STATUS,
           s.SERVER,
           s.SCHEMA#,
           s.SCHEMANAME,
           s.OSUSER,
           s.PROCESS,
           s.MACHINE,
           s.PORT,
           s.TERMINAL,
           UPPER (s.PROGRAM) PROGRAM,
           s.TYPE,
           s.SQL_ADDRESS,
           s.SQL_HASH_VALUE,
           s.SQL_ID,
           s.SQL_CHILD_NUMBER,
           s.PREV_SQL_ADDR,
           s.PREV_HASH_VALUE,
           s.PREV_SQL_ID,
           s.PREV_CHILD_NUMBER,
           s.PLSQL_ENTRY_OBJECT_ID,
           s.PLSQL_ENTRY_SUBPROGRAM_ID,
           s.PLSQL_OBJECT_ID,
           s.PLSQL_SUBPROGRAM_ID,
           s.MODULE,
           s.MODULE_HASH,
           s.ACTION,
           s.ACTION_HASH,
           s.CLIENT_INFO,
           s.FIXED_TABLE_SEQUENCE,
           s.ROW_WAIT_OBJ#,
           s.ROW_WAIT_FILE#,
           s.ROW_WAIT_BLOCK#,
           s.ROW_WAIT_ROW#,
           s.LOGON_TIME,
           s.LAST_CALL_ET,
           s.PDML_ENABLED,
           s.FAILOVER_TYPE,
           s.FAILOVER_METHOD,
           s.FAILED_OVER,
           s.RESOURCE_CONSUMER_GROUP,
           s.PDML_STATUS,
           s.PDDL_STATUS,
           s.PQ_STATUS,
           s.CURRENT_QUEUE_DURATION,
           s.CLIENT_IDENTIFIER,
           s.BLOCKING_SESSION_STATUS,
           s.BLOCKING_INSTANCE,
           s.BLOCKING_SESSION,
           s.SEQ#,
           s.EVENT#,
           s.EVENT,
           s.P1TEXT,
           s.P1,
           s.P1RAW,
           s.P2TEXT,
           s.P2,
           s.P2RAW,
           s.P3TEXT,
           s.P3,
           s.P3RAW,
           s.WAIT_CLASS_ID,
           s.WAIT_CLASS#,
           s.WAIT_CLASS,
           s.WAIT_TIME,
           s.SECONDS_IN_WAIT,
           s.STATE,
           s.SERVICE_NAME,
           s.SQL_TRACE,
           s.SQL_TRACE_WAITS,
           s.SQL_TRACE_BINDS,
           s.ECID,
           stat.cpu - stat.CPU_this_call_start cpu_this_call,
           stat.CPU,
           stat.UGA_memory,
           stat.PGA_memory,
           stat.Commits,
           stat.Rollbacks
    FROM   GV$SESSION S,
           (  SELECT   ss.inst_id stat_inst_id,
                       ss.sid stat_sid,
                       SUM(DECODE (sn.name,
                                   'CPU used when call started', ss.VALUE,
                                   0))
                          CPU_this_call_start,
                       SUM(DECODE (sn.name,
                                   'CPU used by this session', ss.VALUE,
                                   0))
                          CPU,
                       SUM (DECODE (sn.name, 'session uga memory', ss.VALUE, 0))
                          uga_memory,
                       SUM (DECODE (sn.name, 'session pga memory', ss.VALUE, 0))
                          pga_memory,
                       SUM (DECODE (sn.name, 'user commits', ss.VALUE, 0))
                          commits,
                       SUM (DECODE (sn.name, 'user rollbacks', ss.VALUE, 0))
                          rollbacks
                FROM   GV$sesstat ss, GV$statname sn
               WHERE   ss.STATISTIC# = sn.STATISTIC# AND ss.inst_id = sn.inst_id
                       AND (   sn.name = 'CPU used when call started'
                            OR sn.name = 'CPU used by this session'
                            OR sn.name = 'session uga memory'
                            OR sn.name = 'session pga memory'
                            OR sn.name = 'user commits'
                            OR sn.name = 'user rollbacks')
            GROUP BY   ss.inst_id, ss.sid) stat
   WHERE   (    (s.USERNAME IS NOT NULL)
            AND (NVL (s.osuser, 'x') <> 'SYSTEM')
            AND (s.TYPE <> 'BACKGROUND'))
           AND ( (stat.stat_inst_id = s.inst_id) AND (stat.stat_sid = s.sid))
ORDER BY   "PROGRAM", OWNERID
반응형
반응형

1-45렙까지는 에픽을 깨면서 렙별 최대 구간 -4했을 때 자기 렙이여야만 렙업이 좋음

ex) 25-27 구간이라면 -> 23렙이상 이여야만 경험치를 제대로 받을수 있음(27-4 = 23)

45~53 : 브왕가의 수련장 => 킹추천이나 솔풀이면 익스라도 괜찮음

54~58 : 녹색도시 그로즈니 => 54부터는 브왕가 경험이 대폭하락.
           아래의 순서대로 돌면 11방 / 12방 / 풀방으로 돌수 있음
           11방이라면 아래의 지도에서 1부터 10까지 돌고 보스방가면 11방
           12방이라면 아래의 지도에서 1부터 11까지 돌고 보스방가면 12방임 !
        


59~62 : 겐트방어전
지도보는법은 위와 동일

11방 추천!



62~68 : 추격섬멸전
킹추천 장비되면 히어로모드로 ㄱㄱ


※ 66렙 이상부터는 9종 한정 도는 것을 추천


63~70 : 피나비의춤 킹 솔풀 추천

보스방 위의 한방더 도는것을 추천(9방 추천 -> 지도보는 방식은 위의 참조)


   


64~70 : 의혹의 마을 (직보)
마지막 1피로도시 풀로 ㄱㄱ싱


9종 한정 피로도 총 76소모
북문, 방어전 , 야간 습격전, 보급로 차단전, 추격 섬멸전, 피나비의 춤, 의혹의 마을, 열차위에 해적, 서부선탈환 9개


반응형

'Game > 던전앤파이터' 카테고리의 다른 글

던파 광렙업 루트  (4) 2014.12.23
던파 불법 프로그램 목록  (0) 2011.01.22
던전앤 파이터 투 계정 돌리기  (0) 2010.12.16
마도학자 스킬트리  (0) 2010.12.09
트레저 헌터의 팔찌 - 격투가  (0) 2010.11.01
반응형

portnumber 값을 10진수의 변경하고자 하는 포트로 변경 필요

1. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp    PortNumber값을 10진수로 변경후 수정.

 

2. HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp    PortNumber값을 10진수로 변경후 수정.

수정후 시스템 리부팅.  

반응형
반응형
하하하....

외국사이트에서는

본컴 + VMWARE를 사용한게 나왔네요...

아이템 교환할때 유용할듯...

또... 프로그램 고딴거 사용하면

동시에 3-4계정 조작도 가능하지요...

물리적으로는 ... 무선 키보드...

수신기로...

되는 것도잇찌요...


반응형
반응형

출처 : http://logonjava.blogspot.com/2010/04/heap-dump-perm-area-memory-leak.html


Software 특히 Java 언어를 사용하는 Software 개발 조직에 몸담고 있지만, 마흔을 훌쩍 넘긴 나이에 이런 글을 쓰는 것이 적합한지 의심되는데 특히 국내 SW 환경을 고려한다면 몹시 우스꽝스럽다.

이젠 개발팀장도 아니고 개발실장도 아니고 그위의 관리자이지만, 아직 완전히 제품 코드로부터 역할을 분리하지 못했고, 이러한 시간이 많이 걸리고 책임 소재가 불분명한 문제를 해결할 전문 인력을 두고 있지 않기 때문에 결국 직접 하는 경우가 생긴다. 이것은 미흡한 관리 능력의 결과라고 봐도 좋겠다.

개인적으로는 이러한 일이 전혀 나쁘지 않다. 즐거운 Software Life의 하나일 뿐이다.
관리자가 이러한 삽질을 직접 하는 것이 관리 체계를 무너뜨리는 것 아니냐고 묻겠지만...

oh, give me a break.. 나중에 교육교재 만드는 데 도움이 될까해서 하는 관리 행위의 하나라고 봐주기 바람~~ ㅠ_ㅠ;;

perm gen 과 class leak
Permanent Generation 은 young과 old를 구분하는 Generational Collector 방식인 Sun (now, Oracle)의 HotSpot JVM에서 Old generation 중 한 영역이다.
lifetime이 길다고 판단된 object들을 old generation으로 옮겨서 빈번한 gc의 대상이 되지 않도록 하는 것이 generational collector의 기본 아이디어인데 permanent generation은 old 중에서도 거의 gc 대상이 될 일이 없다고 생각되는 object들을 딴 영역에서 관리하겠다는 아이디어의 산물이다.

HotSpot JVM의 Perm Area 에는 주로 자바의 클래스 객체들이나 문자열 상수 풀에 속한 String 객체들이 위치한다.
메모리 leak의 대상이 되는 것은 string constants 보다는 주로 class 객체들이다.

(class 객체는 주로 객체의 타입을 나타내는 클래스나 인터페이스를 표현하는 객체로 타입명 뒤에 .class 라는 literal을 붙임으로써 지칭할 수 있다. 예를 들어 자바 코드에서 String.class 라는 객체는 java.lang.String 이라는 클래스의 타입을 지칭하는 객체이다.)

memory leak이란 보통 reclaim되어야 할 memory space가 reclaim되지 못하고 있는 상황을 뜻하는데 Java와 같이 garbage collector 기능을 내장한 VM에서는 주로 코드 오류로 인해 gc 대상이 되는 객체를 불필요하게 reference(자바에서는 weak reference나 soft reference와 구분하여 strong reference)하는 gc 대상이 아닌 객체들이 존재하기 때문에 발생한다.

perm area 에 위치하는 class 객체들은 classloader에 의해 load 되기 때문에 이 class 객체들이 unload되는 유일한 방법은 classloader가 unload 즉, gc 되는 것이다.

보통 Java VM이 로드될 때 사용되는 classloader들(runtime에 필요한 클래스를 주로 로드하는 system classloader와 classpath에 설정된 클래스들을 로드하는 application classloader 등)은 JVM이 종료할 때까지 gc되지 않기 때문에 여기에서는 관심의 대상이 아니고, 주로 application이 dynamic하게 코드 상에서 만드는 classloader들이 관심의 대상이 된다.

즉, 다시 말해서 "gc되어야 하는 classloader 객체가 어떤 다른 strong object 에 의해 참조되는 것을 찾는 것이 오늘의 주제"이다.

OutOfMemoryError와 heap dump
heap dump 분석은 Java에서 OutOfMemoryError(이하 OOM)가 발생할 경우 원인을 찾기 위해 많이 사용된다.
OOM 시 heap dump를 자동으로 생성하는 HotSpot JVM 옵션이 있는데 이에 관해서는 앞의 다른 blog를 참고하기 바란다.

OOM은 주로 세 가지 경우에 발생한다. 하나는 전체 heap memory 부족, 또하나는 permanent area 부족, 나머지 하나는 native thread를 더 이상 생성할 수 없을 경우이다.

전체 heap memory 부족은 너무 많은 객체를 만들거나 strong reference에 의해 객체 일부가 reclaim 되지 않아서 발생하게 된다. perm area 부족은 앞과 동일한 이유이겠지만 해당 객체가 class 객체인 경우이고 전체 heap 영역 중 perm 영역이 분리되어 있기 때문에 다르게 발생하는 것이다. thread를 생성 못하는 이유는 OS 환경과 상관이 있을 테고, 또 코드 수준에서 thread를 지나치게 많이 만들거나 또 thread 종료가 제대로 안되어 leak이 발생한 때문일 것이다.

세 가지 중 어느 원인으로 OOM이 발생했는지에 대해선 OOM 에러의 메시지를 보면 쉽게 알수 있다.

heap dump 분석에 필요한 소프트웨어
heap dump 분석을 위해 사용하는 소프트웨어는 다음과 같다.
먼저 heap dump 분석 프로그램. HP에서 제공하는 jmeter 가 있고, IBM에서 제공하는 HeapAnalyzer, SAP에서 만들었다가 지금은 eclipse에 donate된 MemoryAnalyzer 등이 있다.

다들 한번씩 try는 해봤지만 지금은 swing 기반으로 된 순수 자바 프로그램인 IBM HeapAnalyzer를 쓴다.
jmeter는 예쁘게 생겼지만 지원하는 heap dump 포맷이 제약이 있었고, SAP MemoryAnalyzer는 적은 메모리로 큰 dump 파일을 읽어들일 수 있긴 하지만, 제공해주는 정보들을 이해하기 좀 어려웠다.
그러다보니 IBM HeapAnalyzer에 익숙해져버렸다.

또, 하나 많이 사용하는 것은 X 서버이다. PC 환경에서 heap analyzer를 돌리기엔 heap dump 파일이 너무 커서 메모리를 많이 사용하기 때문에 대용량 heap을 사용할 수 있는 64비트 JVM 환경(32비트 JVM에서는 max heap size를 1.4기가 정도밖에 줄 수 없다. 정확한 최대값은 모르겠음)에서 heap analyzer를 실행해야 했는데 그러다보니 PC용 X 서버가 필요했다.

요즘 사용하는 PC용 X 서버는 free open source인 cygwin-x 이다. 큰 문제 없이 쓸 수 있다.



HeapAnalyzer 실행
요즘 개발자들은 X 환경을 이해 못하는 경우가 많아서 간단하게 PC용 X 서버에서 원격지의 heap analyzer를 어떻게 실행하는지 절차를 적어본다. (예전에 motif application 개발을 잠깐 했었던 추억이 있음)

유닉스에서 주로 사용되는 윈도우 시스템인 X-Window 시스템은 서버/클라이언트 구조로 되어 있으며 X 서버는 display를 제공하는 쪽을 뜻하고, 실제 애플리케이션 프로세스가 실행되는 쪽이 X 클라이언트가 된다.

1. X 서버인 cygwin-x를 PC에서 실행하고 xterm 프로그램을 하나 실행시킨다.

2. xterm의 shell prompt 에서 "xhost +" 명령을 실행한다. xhost는 X 서버에 접속할 수 있는 X 클라이언트 호스트들에 대한 접근 제어를 하는 명령이다. cygwin-x가 PC에서 실행되고 원격지 유닉스 서버에서 heap analyzer를 띄울 것이므로 PC가 X 서버이고 유닉스 서버가 X 클라이언트 호스트이다. xhost + 다음에 호스트 명을 주지 않으면 모든 호스트에 대해서 allow한다는 뜻이다.
다음과 같이 불평할 것이다.

[mypc]/home/yoonforh 504> xhost +
access control disabled, clients can connect from any host

3. 해당 유닉스 서버로 telnet 등을 통해 접근한다.
해당 유닉스 서버의 셸에서 DISPLAY 환경 변수를 cygwin-x가 실행된 PC로 지정해야 한다.
예를 들면 ksh이나 bash에서 다음과 같이 지정한다.

export DISPLAY=<PC IP 주소>:0

보통의 X용 appliation은 실행시 -display 옵션을 통해서 지정할 수도 있다. DISPLAY 환경변수 값은 ip 주소와 display screen 번호로 구성된다.

보통 기본값인 0 혹은 0.0을 screen number로 사용한다. 윈도우 시스템 위에 실행되는 window manager 프로그램에 따라 CDE나 gnome-desktop, mwm, twm 등은 여러 개의 screen을 가지므로 screen number를 0이 아닌 다른 값으로 지정할 수도 있다. 사실 대부분의 X용 윈도우 매니저들은 multi screen을 지원한다.
사족이 길어졌다. 그냥 0번 스크린을 지정한다. ㅠ_ㅠ

4. DISPLAY가 지정된 환경에서 heap analyzer를 실행한다.
해당 셸에서 다음과 같이 heap analyzer를 실행한다. 현재 사용하고 있는 버전은 3.7이다.

jdk 5이상 가능

jdk 6이상.


java -Xmx5G -jar ha37.jar

큰 heap dump 파일을 분석할 때에는 메모리가 많이 사용되므로 heap 최대값을 5G로 줬다. dump 파일 크기에 따라 더 줘야 할 경우도 있을 것이다. 앞에서 얘기했듯이 이 JVM이 64비트인 경우에 주로 지원된다. OS나 JVM 버전, 비트 수마다 지원하는 최대 heap 크기가 다르므로 이 부분은 알아서들 체크하기 바란다.

사족이 길었지만 이 application을 remote에서 띄워보려고 했다. 매번 연구원들에게 일일이 이런 것 가이드하기 싫어서 교육용으로 부연해보았다. cygwin-x 위에 뜬 heap analyzer 아마도 상당히 촌스럽다고 느낄 것이다. 뭐, 잘생겼다고 일 잘하는 건 아니다.

5. heap dump 파일을 읽어들인다.
보통 HotSpot JVM에서 binary format으로 heap dump를 남기게 하면 heap analyzer는 "HPROF binary"라는 포맷으로 읽어들인다.
perm area 부족으로 인한 OOM인 경우는 전체 heap 부족으로 인한 OOM인 경우보다는 heap size가 작으므로 dump 파일도 상대적으로 작다. (이것도 다행이라고 생각하면 되려나 ㅎㅎ)

dump 파일이 클수록 읽는 데 시간이 많이 걸리므로 open 시켜 놓고 다른 일을 하면 되겠다. 어차피 프로세싱은 원격지 서버에서 일어나는 것이니 PC에 몹쓸 짓은 안한다.

Object Reference 관계와 ClassLoader 간 계층 관계
이제 분석할 준비가 완료되었다. 몇 가지 필요한 사전 지식에 대해 언급해본다.

ClassLoader는 계층 구조를 가진다. 이 계층 구조는 ClassLoader를 생성할 때 반드시 부모 ClassLoader를 지정하도록 되어 있는데, 기본적인 자바의 class 정의 검색 방식은 부모 ClassLoader에 정의된 class 정의를 우선으로 찾고, 그 다음에 자식 ClassLoader에 정의된 class 정의를 찾는 구조이다.

자바의 각 ClassLoader들은 내부적으로 parent 라는 멤버 필드를 가지고 있고, 이 값이 부모 클래스로더 객체가 된다.
(classloader들의 parent/chlid 관계는 class inheritance의 parent class, child class와는 아무 상관이 없다.)

Object Reference 관계는 객체 간의 참조 구조를 나타내며 directed graph 형태이다. 즉, 참조자(Referencer)를 시작점으로 피참조자(Referencee)를 끝점으로 하나의 화살표가 그려지는 단방향 그래프 형태라고 생각할 수 있다.

표준적인 용어인지는 모르겠지만, HeapAnalyzer에서는 참조자를 parent, 피참조자를 child로 표현하고 있다. 그리고, parent가 없이 strong object인 경우를 root 라고 표현하고 있다.

즉, 단방향 그래프로 이루어진 forest 형태이지만 이것을 root node가 여러 개인 tree인 것으로 표현하고 있다. 생각해보면 root node들 위에 공통된 가상의 parent node 하나가 있다고 가정하면 하나의 tree로 볼 수 있다. 이렇게 보면 parent/child 용어는 적합하다고도 볼 수 있다. (엄밀하게 보면 상호 참조나 순환 참조가 가능하기 때문에 forest나 tree라고 볼 수 없다. 하지만, 여기에서 얘기하는 parent/child 관계를 적용하는 데는 큰 무리가 없으므로 child가 parent로도 되는 경우나 descendant가 ancestor의 parent가 되는 경우가 존재한다는 것을 예외로 간주하고 rough하게 metaphor를 적용해보자.)

이제 ClassLoader 간 parent/child 관계가 Object Reference 관계에서 어떤 관계를 가지는지 생각해보자. 이게 아마 이 논의의 핵심일 것이다.

Child ClassLoader 객체는 멤버 필드로 parent를 가지고 있으며 이 parent 필드의 값이 Parent ClassLoader 객체이다.
즉, Object Reference 관계로 보면 child classloader 객체가 parent란 필드를 통하여 parent classloader를 reference하고 있다.

다시 말하면 object reference 관계에서는 child classloader 가 referencer(parent), parent classloader가 referencee(child)로 되어 parent/child 관계가 뒤바뀐다.

용어적인 유사성 때문에 혼란이 오는 것이며 서로 관련없는 관계이지만, 결과적으로는 "일반적으로 classloader 객체 간 parent/child 관계는 객체 참조간 parent/child 관계와 반대가 된다"고 생각해도 되겠다.

분석 예
이제 실 예를 들어 perm leak을 찾아보자. 사실 perm leak 이 발생하려면 ClassLoader를 동적으로 만들어 사용하는 프로그램에서 가능하기 때문에 일반적인 application에서는 이런 경우가 많지 않다. 보통은 그냥 클래스를 많이 사용하는 경우이므로 JVM 옵션으로 perm area 영역을 늘려주면 된다.

하지만, plugin 과 같은 동적 프로그램 기능을 가지고 있는 application에서는 plugin을 위한 ClassLoader를 만들어 사용하기 때문에 이러한 경우가 종종 발생한다.

먼저 heap dump 파일을 HeapAnalyzer로 연 다음 "Analysis/Search Name" 기능을 사용하여 의심이 가는 클래스로더 객체를 찾는다. 클래스 명으로 찾을 수 있는데 dump 상에는 separator가 '.'이 아니라 '/'인 점을 주의하여 찾는다.


검색 결과를 보면 해당하는 타입의 객체와 클래스 객체가 나타난다. 아래 그림에서 클래스로더 객체는 12개가 존재한다. (13개 중 한 개는 클래스로더 타입을 나타내는 class 객체)


위 그림에서 보이듯이 각 클래스로더 객체를 선택하여 오른쪽 마우스 버튼(두번째 마우스 버튼)을 클릭하면 팝업 메뉴가 보이며 이를 통해 해당 객체의 parent 객체들이나 child 객체들을 추적할 수 있다.

클래스로더 객체를 참조하고 있는 객체 즉, object reference 관계에서 parent에 있는 객체들이 클래스로더 객체의 가비지 컬렉션을 막고 있는 상황을 찾아야 하므로, 계속해서 "List parents" 기능을 사용하여 object reference tree를 거슬러 올라가보면 문제가 되는 참조자 객체를 찾을 수 있을 것이다.

경우에 따라서는 parent 객체들이 sun/reflect/DelegatingClassLoader, java/security/ProtectionDomain, java/lang/Package 등만 나타나는 경우가 있는데 이런 객체들은 일시적인 참조이며, 이 경우는 garbage collection되기를 기다리고 있는 경우이기 때문에 leak이 아니다.

각 객체별로 parent를 추적해보면 알 수 있지만, ProtectionDomain 객체와 Package 객체는 ClassLoader 와 상호참조되는 객체들이며 다른 strong reference에 의해 연결되지 않으며 DelegatingClassLoader는 HotSpot JVM 에서 reflection을 사용하여 dynamic proxy 객체를 만들 때마다 일시적으로 사용되는 클래스로더이다.

object reference 상의 parent 추적은 여러 depth에 걸쳐 일어날 것이며 해당 클래스의 소스 코드를 알고 있다면 쉽게 연결하여 이해할 수 있을 것이다.


object reference graph 추적은 perm leak이든 일반적인 memory leak이든 동일하게 사용할 수 있다. 다만 여기에서는 classloader 객체가 leak이 되는 경우에 perm area problem이 발생한다는 것을 중심으로 설명하였다.

누구에게든 이 잡다한 내용이 작은 도움이 되길 바라면서...


출처 : http://logonjava.blogspot.com/2010/04/heap-dump-perm-area-memory-leak.html
반응형
반응형
반응형
반응형

일단 제 스펙은 강맹공+강일격고매미 셋트 13강 고매미 빗자루와 레벨이 70입니다.

스킬가이드에 있어.

마도학자를 키워보지도 않고 인터넷에서 타인의 글을 배끼거나

제대로 키워보지도 않은 분들의 스킬들을 보고 답답해서 공개해드리려고 합니다.

 

<원소>

 

스킬 (Skill)                           갯수                                   이유                                                                   특징

──────────────────────────────────────────────────────────────

 플로레 비비기                      5                       엘레멘탈 번 선행으로 5개 찍어야함.       케릭 주위에 전기가 지지직 생김

──────────────────────────────────────────────────────────────

 랜턴 파이어                        5                       엘레멘탈 번 선행으로 5개 찍어야함.     불타는 호박이 전방으로 날아감

──────────────────────────────────────────────────────────────

 플루토                                   5                       엘레멘탈 번 선행으로 5개 찍어야함.     이상한 검정 채찍이 생기면서 앞에사람 때림
──────────────────────────────────────────────────────────────

 프로스트 헤드                        5                       엘레멘탈 번 선행으로 5개 찍어야함.      얼음 덩어리같은에 통통 굴러가면서 공격.
──────────────────────────────────────────────────────────────

 공중 랜턴 파이어                  0                       찍으면 망케                                                 불타는 호박 발사를 점프하면서 할수있게함

──────────────────────────────────────────────────────────────

 쇼타임                                 18                       사탑.이계에서 필수 입니다. 만땅              스킬빨리 쓸수 있게 해줌.

                                                                                                                                                     (지속시간 20초. 쿨타임 32.4% 캐속 64.8% 증가)

──────────────────────────────────────────────────────────────

 엘레멘탈 번                       17                        마도는 고정뎀케릭이므로 극지능을 위해.   지능이 마구마구 올라간다.

                                                                                                                                               (지속시간 60초. 지능 121>242>363>484 4단계로 증가)

──────────────────────────────────────────────────────────────

 플로레 비비기 강화             0                         찍으면 망케                                              그냥 플로레 비비기 가 강해짐.
──────────────────────────────────────────────────────────────

 엘레멘탈 번 강화             0~3                     극지능을 위한다면 찍지만.                   엘번이 강화된다.

                                                                                   TP스킬 남용이라 생각됨.                  (지속시간 60초. 지능 26>52>77>103 추가 지능 증가)
─────────────────────────────────────────────────────────────

 <소환>

 

소환사 아니죠~ 건드리면 안됩니다.

 

<마법전투>

스킬 (Skill)                           갯수                                   이유                                                                   특징

──────────────────────────────────────────────────────────────

 위상변화                              1                           피하기 위해서                                           방향키로 피할곳을 정할 수 있으며.

                                              퀵스탠딩+위상변화는 던파 케릭의 필수 셋트 스킬

 

<마도>

스킬 (Skill)                           갯수                                   이유                                                                   특징

──────────────────────────────────────────────────────────────

 매직 미사일                        5               고출력 매직 미사일 선행으로 5개 찍음.               별모양 미사일을 발사함. 
──────────────────────────────────────────────────────────────

 캔슬 매직 미사일                 0               매직미사일 마스터가아니므로 비추.                     기본공격을 캔슬하고 매직미사일 발사 

──────────────────────────────────────────────────────────────

 고대도서관                           0               포션물약 하나 사서 더먹는게 낫다.                      MP를 회복시켜 주고 지능을 올려줌
──────────────────────────────────────────────────────────────

 도발 인형 : 슈르르                20             사탑.이계에서 필수 입니다. 만땅                          을 설치해서 몹들은 유인하고. 적의 마방을 감소시킴

                                          (지속시간 10초, 마법 방어력 감소치 8552)
──────────────────────────────────────────────────────────────

 디스인챈트                            0               엘마가 아니다.                                               주변의 버프를 해제시켜 공.이.캐속 감소시킨후 힘과 지능상승
──────────────────────────────────────────────────────────────

 플루토와 친해지기               0               소울도 아니고 암속성을 올릴필요가없음       블망, 데스파우더, 변이파리채, 반중력 기동장치 성공율 향상
──────────────────────────────────────────────────────────────

 블랙망토                               3               변이파리채 선행으로 3개만 찍음                            슈퍼아머 잡을수 있고 암흑상태로 만들고. 이계에서 회피용.
──────────────────────────────────────────────────────────────

 플로레상과 친하게 지내기  10              이건 마스터 안하시면 케릭 삭제가필요.    고출력 매직 미사일과 연관되있어 성공률과 거리를 늘려준다.
──────────────────────────────────────────────────────────────

 잭프로스트와 친하게 지내기 0              수속성역시 효과가 미미함                                        칠링파우더, 애시드 클라우드, 메가드릴 성공율 향상

                                                                         (단, 강일격 메가드릴 풀셋 착용시 필수스킬)

──────────────────────────────────────────────────────────────

 잭오랜턴과 친하게 지내기  10             마스터한 개슈.용암지대.성난불길의 활용도증가      개조슈르르, 용암지대, 성난 불길 가열로 성공율 증가
──────────────────────────────────────────────────────────────

 칠링 파우더                           3               에시드클라우드 선행으로 3개찍었지만                 무기를 수속성으로 바꾸어 준다.

                     극한의제단 6라운드에서 짱임.
──────────────────────────────────────────────────────────────

 데스 파우더                          0               파우더 마도가 아닌이상. 스포 낭비.                 무기를 암속성으로 바꾸어 준다.
──────────────────────────────────────────────────────────────

 고출력 매직 미사일       27            마도학자가 존재하는 이유. 밥줄스킬.             유도미사일을 발사해 이리저리 몹을 정신없이 때린다.
──────────────────────────────────────────────────────────────

 개조 슈르르                         24            사탑 밥줄 스킬. 슈르르+개슈 셋트                         슈르르를 자폭하게 만들어서 큰 다이어마이트 타격을 줌
──────────────────────────────────────────────────────────────

 변이 파리채                        5              대왕파리채 선행으로 5개 찍음.                  파리채로 가끔가다 때리면 이상한 활쏘는 고블린이 소환됨.

                                                                                                                                                    그래서 마도학자인데 소환사라고 착각하는사람이 생김.
──────────────────────────────────────────────────────────────

 스위트 캔디바                     0               시대가바뀌어서 정석스킬이였지만 지금은아님      성공율을 증가해주지만 액티브스킬이라 시전하기가 불편
──────────────────────────────────────────────────────────────

 캔슬 블랙망토                      0             결장하면 찍으라고 하겠지만 사냥에선 티도안남        기본 공격을 캔슬하고 블랙망토를 사용하게함──────────────────────────────────────────────────────────────

 애시드 클라우드                    5               메가드릴 선행으로 5개찍음.                                먹구름을 생성해서 산성비로 몹들을공격하게함.
──────────────────────────────────────────────────────────────

 용암 지대 생성 물약            21               사탑.이계에서 방마다 깔아주면 뿌듯함              화산에 용암같이 땅바닥에 뜨거운물을 뿌림. 몬스터 발디임.
──────────────────────────────────────────────────────────────

 빗자루 스핀                          5                플로래 컬라이더 선행으로 5개 찍음.                  빗자루 들고 360도 회전하면서 공격함                      
──────────────────────────────────────────────────────────────

 캔슬 변이 파리채                 0                결장 및 파우더 마도가 아닌이상 안찍음.               기본 공격을 캔슬하고 변이파리채를 사용하게함
──────────────────────────────────────────────────────────────

 반중력 기동장치                   0                 결장용. 패치후 데미지가 하향되서 엄청 꾸짐.         몹을 공중으로 뛰워서 콤보에 넣을 수 있겠지만 비추.
──────────────────────────────────────────────────────────────

 성난 불길 가열로                  16                무큐 1개 경제성. 무기가없어도 데미지나옴              맵에 무슨 항아리가 생겨나서 항아리가 폭주함.
──────────────────────────────────────────────────────────────

 플로레 컬라이더                   13                이계. 사냥용 필수 스킬. 마도는 이걸로 홀딩한다.      각성기 다음으로 젤귀여운 화면이 보일것──────────────────────────────────────────────────────────────

 메가 드릴                          1~13              심심할때 쓰기위해서 1개 찍음                                 굴삭기가튼거 나와서 몹을 깔아뭉겜.
──────────────────────────────────────────────────────────────

 성공 예감                               9                  스위트 캔디바 신 찍음.                                   성공율을 올려주고 감사하게도 패시브 스킬이다. 

──────────────────────────────────────────────────────────────

 

Tip!) 패시브란?

일종의 자동 스킬이다. 즉, 사냥할때마다 일일이 써줘야되는 액티브 스킬이 아니라. 자동으로 적용이된다.

ex) "패시브 : 용돈받기스킬" 이란것을 습득했다면.

어머니께서는 내가 굳히 말을 안해도 매달 혹은 매주마다 용돈을 자동적으로 알아서 주시는 것이다.

하지만 용돈을 안주실 때가 있다. 그것은 버그이다.

 

──────────────────────────────────────────────────────────────

 퓨전 크래프트                       0                여스핏다음으로 각성기 안찍는 케릭                        각성기가 상당히 나쁘고 스포도 많이 잡아먹는다.
──────────────────────────────────────────────────────────────

 고대의 도서관 강화            0                고대도서관 찍었다면 찍자. 하지만 나는 안찍음  기존 고대도서관보다 MP회복속도와 지능을 향상시킨다.
──────────────────────────────────────────────────────────────

 도발 인형 : 슈르르 강화       0                슈르르는 강화될 필요가 없다.                                 슈르르 지속시간과 범위를 향상시킨다.
──────────────────────────────────────────────────────────────
 스위트 캔디바 강화             0                 스위트캔디바 안찍었음.                                            스위트 캔디바의 성공율을 증가시킴

──────────────────────────────────────────────────────────────

 대왕 파리채                        3                 반퍼뎀스킬인데도. 무기와관계없이 상당히쌔다     땅이 갈라질정도로 파리채로 땅바닥을 내려침
──────────────────────────────────────────────────────────────
 고출력 매직 미사일 강화    3                 안찍어야될 이유를 다른사람에게 듣고싶다.      고출력 매직 미사일의 유도범위와 공격력이 증가

──────────────────────────────────────────────────────────────
 반중력 기동장치 강화         0                 반중력을 안찍었으므로 당연히 패스                           반중력 기동장치의 성공율 향상.
──────────────────────────────────────────────────────────────
 빗자루 바운드 스핀                1                  스킬을 쓰다보면 왜찍었는지를 느낀다.                     케릭터가 통통 튀면서 몹들을 공격. 혼란시 HP회복 
       
<일반>

 

스킬 (Skill)                           갯수                                   이유                                                                   특징

──────────────────────────────────────────────────────────────

 속성공격 숙련                       3                  귀족마도라면 찍어볼만 하다.                   속성공격력을 올려준다.
────────────────────────────────────────────────────────────── 
 고대의 기억                        10                  극지능을 위해서 엘번+고기 셋트스킬          20초 동안 150지능 향상
────────────────────────────────────────────────────────────── 
 지능 발달                             3                   힘 체력 정신력 보단 지능이 좋다.              지능 75 증가.
──────────────────────────────────────────────────────────────
 정신력 고양                      0~3                취향에맞게                                                    정신력 증가는 물론,  마법 방어력과 MP회복이 향상된다.
──────────────────────────────────────────────────────────────
 적중 숙련                          0~3                취향에맞게                                                     적중률을 증가 시킨다.

──────────────────────────────────────────────────────────────

 퀵 스탠딩                             1                   이계 . 고블린왕국 5번방에서 필수.           다운시 번쩍 일어나면서 무적상태로 변신된다.
──────────────────────────────────────────────────────────────



http://blog.naver.com/testcolor?Redirect=Log&logNo=140117298822
반응형

+ Recent posts