티스토리 툴바


달력

01

« 2012/01 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  
  •  
  •  
  •  

NoClassDefFoundError
- 컴파일 시점
에는 존재했으나, 실행 내부적으로 loading 되는 class가 없을 때

예제) 아래와 같은 java 자원들을 컴파일 한 후 B.class 파일을 삭제하고 java C 하면 NoClassDefFoundError 발생

Class A extends B {
}

Class B {


Class C {
    public static void main(String[] args) {
        A a = new A a();
    }


예제)  아래와 같은 java 자원들을 컴파일 한 후 D.class 파일을 삭제하고 java E 하면 NoClassDefFoundError 발생

class D {
}

 Class E {

    public static void main(String[] args) {

        D d = new D();

    }



ClassNotFoundException
해당 class 파일이 없을 때(클래스를 로딩하려는 명시적인 시도가 실패할 경우)

예)  아래와 같은 java 자원들을 컴파일 한 후 C.class 파일을 삭제하고 java C 하면 ClassNotFoundException 발생

Class A extends B {

}


Class B {


Class C {

    public static void main(String[] args) {

        A a = new A a();

    }



정리하면,

ClassNotFoundException
 => ClassLoader가 로딩하려고 하는 class가 존재하지 않을 경우 발생
NoDefFoundClassError
 => 
ClassLoader가 로딩하는 명시적인 class 내부에서 묵시적으로 로딩하고자 하는 class가 존재하지 않을 경우 발생
저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 뽀기

$MAVNE_HOME/conf/settings.xml 파일 수정

   <server>

      <id>RepoID</id>

      <username>admin</username>

      <password>fw1234</password>

   </server>


Remote repository(Nexus) 에 repository 추가하기

Repository ID : RepoID
Repository Name : Repository
Repository Policy : SNAPSHOT 

 
 pom.xml 에 배포 정보 추가하기

<distributionManagement>

<repository>

<id>RepoID</id>

<name>Repository</name>

<url>http://1.0.0.0:8081/nexus/content/repositories/repo-id</url>

</repository>

</distributionManagement>

 
settings.xml 파일의 <id> 값과 pom.xml 파일의 <id> 값을 같도록 설정해줘야 한다.

해당 프로젝트에서 Run As > Run Configuration 에서 "goal" 항목에 deploy 입력하고 Run 하면 된다.

혹시 Uploading 중에 401 오류가 발생하면 settgins.xml 파일의 사용자 정보를 확인해본다.
 
저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 뽀기
2011/10/05 10:24

아이폰 5는 없었다.. 생활/잡담2011/10/05 10:24

한국 시간 새벽 1시 30분경

일본의 애플 홈페이지 관리자(?)의 실수(?)로 아이폰 5는 없으며,

아이폰 4S 를 10월 14일부터 판매할거라는 공지가 잠깐 올라왔었다는..

다들... 2시까지 기다리지 않고,, 자러 갔다는군요. ㅋ
저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

'생활 > 잡담' 카테고리의 다른 글

아이폰 5는 없었다..  (0) 2011/10/05
IE9 에서 플래시 이상하게 나올 때  (0) 2011/06/07
페이스북 합니다. ㅋㅋ  (0) 2011/01/10
우리말.....  (0) 2010/10/15
6월 2일 꼭 투표하세요~  (0) 2010/05/26
중앙일보 논설중에.....  (0) 2010/05/26
Posted by 뽀기

oracle 11g 를 설치해서 쓰던 도중...

"비밀번호가 만료되었습니다." 라고 에러가 나서 확인해보니...

따로 설정을 바꾸지 않는 이상 기본으로 180일의 비밀번호 만료 기간이 설정된다고 하는군요!

SQL> SELECT RESOURCE_NAME, LIMIT FROM DBA_PROFILES WHERE PROFILE='DEFAULT';

RESOURCE_NAME                    LIMIT
-------------------------------- ----------------------------------------
.......

PASSWORD_LIFE_TIME               180

.......

PASSWORD_GRACE_TIME              7
바로 PASSWORD_LIFE_TIME               180 요 부분입니다.

아래와  같이 변경해줍니다.
SQL> ALTER PROFILE DEFAULT LIMIT PASSWORD_LIFE_TIME UNLIMITED;

프로파일이 변경되었습니다.

이미 비밀번호가 만료된 사용자는 다음과 같이 확인할 수 있습니다.
SQL> SELECT USERNAME, ACCOUNT_STATUS, LOCK_DATE, EXPIRY_DATE FROM DBA_USERS WHERE USERNAME='USERNAME';

USERNAME                       ACCOUNT_STATUS                   LOCK_DAT
------------------------------ -------------------------------- --------
EXPIRY_D
--------
USERNAME                       EXPIRED
11/10/04

이 사용자는 아래와 같이 비밀번호를 변경하여 줍니다.
SQL> alter user USERNAME identified by USERNAME;
사용자가 변경되었습니다.

비밀번호 만료가 해제됐는지 확인해봅니다.
SQL> SELECT USERNAME, ACCOUNT_STATUS, LOCK_DATE, EXPIRY_DATE FROM DBA_USERS WHERE USERNAME='USERNAME';

USERNAME                       ACCOUNT_STATUS                   LOCK_DAT
------------------------------ -------------------------------- --------
EXPIRY_D
--------
USERNAME                       OPEN

저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 뽀기
2011/09/30 10:02

Java에서 Cookie 값 꺼내쓰기 유틸.. 그거/Java2011/09/30 10:02


걍.. 만들어 봄 ㅎㅎ

makeCookie.jsp

<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>

<%@ page import="java.util.*" %>

<%@ page import="java.net.*" %>

<%

Cookie cookie1 = new Cookie("CJW1", URLEncoder.encode("cAT=A&cBT=B&cCT=C&cDT=D", "euc-kr"));

Cookie cookie2 = new Cookie("CJW2", URLEncoder.encode("cAT=A&cBT=B&cCT=C&cDT=D", "euc-kr"));

Cookie cookie3 = new Cookie("CJW3", URLEncoder.encode("cAT=A&cBT=B&cCT=C&cDT=D", "euc-kr"));

Cookie cookie4 = new Cookie("CJW4", URLEncoder.encode("cAT=A&cBT=B&cCT=C&cDT=D", "euc-kr"));

response.addCookie(cookie1);

response.addCookie(cookie2);

response.addCookie(cookie3);

response.addCookie(cookie4);


%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

</head>

<body>

<a href="getCookie.jsp">getCookie</a>

</body>

</html>

 
getCookie.jsp 

<%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%>

<%@ page import="java.util.*" %>

<%@ page import="java.net.*" %>

<%!

class CookieBook {

private Cookie[] cookies = null;

private HashMap<String, String> cookiesMap = new HashMap<String, String>();

public CookieBook(Cookie[] cookies) {

this.cookies = cookies;

makeCookiesMap();

}

private void makeCookiesMap() {

for(Cookie cookie : cookies) {

String value = null;

String key = cookie.getName();

try {

value = URLDecoder.decode(cookie.getValue(), "euc-kr");

} catch(Exception e) {

value = cookie.getValue();

}

cookiesMap.put(key, value);

if( value.indexOf("&") > 0 ) {

parseData(key, value);

}

}

}

public String getCookieValue(String key) {

if( cookiesMap.containsKey(key) ) {

return cookiesMap.get(key);

} else {

return null;

}

}

private void parseData(String key, String value) {

System.out.println(value);

String[] datas = value.split("&");

for(String data : datas) {

int idx = data.indexOf("=");

if( idx != -1 ) {

String tmpKey = key + "." + data.substring(0, idx);

String tmpData = data.substring(idx+1);

cookiesMap.put(tmpKey, tmpData);

}

}

}

public HashMap<String, String> getMap() {

return cookiesMap;

}

}

%>

<%

CookieBook cookBook = new CookieBook(request.getCookies());

%>

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<html>

<head>

<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">

<title>Insert title here</title>

</head>

<body>

<table border=1>

<tr>

<th>KEY</th><th>VALUE</th>

</tr>

<%

Iterator<String> keys = cookBook.getMap().keySet().iterator();


while(keys.hasNext()) {

String key = keys.next();

%>

<tr>

<td><%= key %></td><td><%= cookBook.getCookieValue(key) %></td>

</tr>

<%

}

%>

</table>

</body>

</html>

 
CookieBook 이라는 유틸 클래스 만들어서 사용 ㅎ

 KEY  VALUE
CJW4.cCT   C
CJW4  cAT=A&cBT=B&cCT=C&cDT=D
JSESSIONID  HgjlTGnbyRp75pBBPGCXGN3myQgyL7pYVTFvfGgFvBgTpPYhzzTM!-702582978

요딴식으로 보임.
 
저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 뽀기
2011/08/08 14:18

MSSQL의 JDBC 로의 컬럼 타입 매핑 그거/Java2011/08/08 14:18

MSSQL                          : JDBC
-------------------------------+----------------
char, nchar                    : CHAR
varchar, nvarchar              : VARCHAR
text, ntext                    : LONGVARCHAR
binary, timestamp              : BINARY
varbinary                      : VARBINARY
image, udt                     : LONGVARBINARY
bit                            : BIT
tinyint                        : TINYINT
smallint                       : SMALLINT
int                            : INTEGER
bigint                         : BIGINT
numeric                        : NUMERIC
decimal, money, smallmoney     : DECIMAL
real                           : REAL
double, float                  : DOUBLE
datetime, smalldatetime        : TIMESTAMP

저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 뽀기
2011/07/26 15:54

파티션 테이블 조회하기 그거/DB2011/07/26 15:54

SELECT *  FROM TABLE_NAME PARTITION (PARTITION_NAME);

저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 뽀기

1. 찾고자 하는 시간의 기준이 되는 파일을 생성한다.
2. 위에서 생성한 파일보다 최신의 파일을 찾는다.


예) 2011년 07월 25일 18:00 이후에 만들어진 파일을 찾고자 할 경우 

1. 특정 시간(2011년 07월 25일 18:00)에 생성된 파일 만들기
$ touch -t 201107251800 start.lucky

2. 특정 시간(2011년 07월 25일 18:00)에 생성된 파일보다 나중에 만들어진 파일 찾기
$ find ./ -name *.class -type f -newer start.lucky



저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 뽀기
2011/07/12 19:10

String.sprlit() 의 사용.. 그거/Java2011/07/12 19:10


   String str = "SELECT * FROM ( "+

   " SELECT ROWNUM AS RNUM, A.* FROM( SELECT * FROM EX_TABLE WHERE 1=1"+

   "  ) A "+

   ") WHERE RNUM >= 1 AND RNUM < 51";

   

   String[] sss = str.split(" ");

   

   for(String s : sss) {

    System.out.println("#" + s + "#");

   }


위와 같이 한 후 돌려보면
 

#SELECT#

#*#

#FROM#

#(#

##

#SELECT#

#ROWNUM#

#AS#

#RNUM,#

#A.*#

#FROM(#

#SELECT#

#*#

#FROM#

#EX_TABLE#

#WHERE#

#1=1#

##

#)#

#A#

#)#

#WHERE#

#RNUM#

#>=#

#1#

#AND#

#RNUM#

#<#

#51#

 
이런 결과를 얻게된다.

white space 를 기준으로 String을 쪼개고 싶을 때는 아래와 같이 하자!

   String str = "SELECT * FROM ( "+

   " SELECT ROWNUM AS RNUM, A.* FROM( SELECT * FROM EX_TABLE WHERE 1=1"+

   "  ) A "+

   ") WHERE RNUM >= 1 AND RNUM < 51";

   

   String[] sss = str.split("\\s+");

   

   for(String s : sss) {

    System.out.println("#" + s + "#");

   }

 
그러면, 아래와 같이 나온다.

#SELECT#

#*#

#FROM#

#(#

#SELECT#

#ROWNUM#

#AS#

#RNUM,#

#A.*#

#FROM(#

#SELECT#

#*#

#FROM#

#EX_TABLE#

#WHERE#

#1=1#

#)#

#A#

#)#

#WHERE#

#RNUM#

#>=#

#1#

#AND#

#RNUM#

#<#

#51#

 
## 이 놈들이 사라졌다. 
저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License

'그거 > Java' 카테고리의 다른 글

Java에서 Cookie 값 꺼내쓰기 유틸..  (0) 2011/09/30
MSSQL의 JDBC 로의 컬럼 타입 매핑  (0) 2011/08/08
String.sprlit() 의 사용..  (0) 2011/07/12
String.intern() 메소드  (0) 2011/05/02
Use of String in Java  (0) 2011/05/02
Profiling by using NetBeans.  (0) 2011/04/28
Posted by 뽀기

 
XMPP(Extensible Messaging & Presence Protocol)

인스턴트 메신저(IM)를 위한 국제 표준 규격

 
특징
-       XML 기반의 공개형 프로토콜
-       ITEF(Internet Engineering Task Force) 의 RFC-3920, 3921 로 등록
-       login, presence, messaging, chat 등 메세징 서비스를 위한 기본적인 규약 정의
-       지점간의 Audio, Video 통신, Multimedai streaming service 및 Phone 과의 VoIP를 위한 확장 정의
-       GoogleTalk, Facebook, MobileMe 등의 서비스에서 사용


 
XMPP 구성 및 흐름도


 
1.1. XMPP 서버에 접속하여 인증 요청
2.2. 인증된 사용자에 한하여 메시지 송수신 또는 현재 상태 송수신
저작자 표시 비영리 동일 조건 변경 허락
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by 뽀기