java.net.UnknownHostException

Java 2016. 1. 28. 17:57
  • [원인]

웹 서버의 DNS 설정이 되어있지 않아서 발생되는 문제입니다.

이 문제는 localhost 환경에서는 발생되지 않지만, 직접 설치된 서버 혹은 외부서버에서 가동 시에 문제가 될 수 있습니다.

이 문제는 SNMP 통신 혹은 PING 등의 Network 관련 작업을 수행할 경우,

해당 웹 서버에서 외부로의 이동이 요구될 때 발생될 수 있는 문제입니다.

  • [해결방법]

각 웹 서버의 설정에 맞게 DNS 설정을 합니다.

[1] 서버가 IBM AIX 일 경우

telnet 으로 해당 서버에 접속 cd /etc/resolv.conf 파일을 vi 편집기로 수정하여

해당 ISP 의 네임서버와 IP 주소를 등록합니다.

(ex : 127.0.0.1 localhost )

[2] 서버가 TOMCAT 일 경우

telnet 으로 cd /etc/ 경로로 이동하여 vi 편집기로 hosts 파일을 수정합니다.

[1] 번과 마찬가지로 수정하면 됩니다.

ps. 운영체제는 리눅스 혹은 UNIX 기준입니다. Windows OS 일 경우 아래와 같이 변경하시면 됩니다.

경로 : windows/system32/driver/etc

위의 경로를 따라가면 hosts 라는 파일이 있습니다. 해당 파일을 메모장 혹은 기타 편집기를 이용하여

수정하시면 됩니다.

일반적인 hosts 파일의 내용은 아래와 같습니다만, 상이할 수 있습니다.

#========================================================================================

# Copyright (c) 1993-2006 Microsoft Corp.
#
# This is a sample HOSTS file used by Microsoft TCP/IP for Windows.
#
# This file contains the mappings of IP addresses to host names. Each
# entry should be kept on an individual line. The IP address should
# be placed in the first column followed by the corresponding host name.
# The IP address and the host name should be separated by at least one
# space.
#
# Additionally, comments (such as these) may be inserted on individual
# lines or following the machine name denoted by a '#' symbol.
#
# For example:
#
# 102.54.94.97 rhino.acme.com # source server
# 38.25.63.10 x.acme.com # x client host

127.0.0.1 localhost
127.0.0.1 activate.adobe.com
127.0.0.1 3dns-3.adobe.com
127.0.0.1 adobe-dns-2.adobe.com
127.0.0.1 adobe-dns-3.adobe.com
127.0.0.1 ereg.wip3.adobe.com
127.0.0.1 activate-sea.adobe.com
127.0.0.1 wip3.adobe.com
127.0.0.1 wwis-dubc1-vip60.adobe.com
127.0.0.1 activate-sjc0.adobe.com
127.0.0.1 practivate.adobe.com
127.0.0.1 ereg.adobe.com
127.0.0.1 activate.wip3.adobe.com
127.0.0.1 3dns-2.adobe.com
127.0.0.1 adobe-dns.adobe.com

#========================================================================================


Posted by 양형

댓글을 달아 주세요

[SQL] ALTER TABLE 테이블 수정 (ADD, DROP, MODIFY, RENAME)


한번 생성된 테이블은 특별히 사용자가 구조를 변경하기 전까지 생성 당시의 구조를 유지하게 된다.

처음의 테이블 구조를 그대로 유지하는 것이 최선이지만, 업무적인 요구 사항이나 시스템 운영상 테이블을 사용하는 도중에 변경해야할 일들이 발생하기도 한다.

이 경우 주로 컬럼을 추가/삭제 또는 제약조건을 추가/삭제 작업을 하게 된다.


1. ADD COLUMN (컬럼 추가)


기존 테이블에 필요한 컬럼을 추가하는 명령어



ALTER TABLE 테이블명
ADD 추가할 컬럼명  데이터 유형;

ALTER TABLE PLAYER
ADD (ADDRESS VARCHAR2(80));


- PLAYER 테이블 마지막에 ADDRESS(길이 80) 컬럼을 추가한다.


* 새롭게 추가된 컬럼은 테이블의 마지막 컬럼이 되며 컬럼의 위치를 지정할 수는 없다.



2. DROP COLUMN (컬럼 삭제)


DROP COLUMN은 테이블에서 필요 없는 컬럼을 삭제할 수 있으며, 데이터가 있거나 없거나 모두 삭제 가능하다.

한 번에 하나의 컬럼만 삭제 가능하며, 컬럼 삭제 후 최소 하나 이상의 컬럼이 테이블에 존재해야 한다.



ALTER TABLE 테이블명
DROP COLUMN 삭제할 컬럼명;

ALTER TABLE PLAYER
DROP COLUMN ADDRESS;


- PLAYER 테이블에 ADDRESS 컬럼을 삭제한다.


* 한번 삭제된 컬럼은 복구가 불가능하다.



3. MODIFY COLUMN (컬럼 수정)


테이블에 존재하는 컬럼의 데이터 유형, 디폴트(DEFAULT) 값, NOT NULL 제약조건에 대한 변경을 한다.



ALTER TABLE 테이블명
MODIFY (컬럼명1 데이터 유형 [DEFAULT 식] [NOT NULL],
               컬럼명2 데이터 유형 [DEFAULT 식] [NOT NULL]);
            
            
ALTER TABLE TEAM_TEMP
MODIFY (ORIG_YYYY VARCHAR2(8) DEFAULT '20020129' NOT NULL);


 


- TEAM 테이블의 ORIG_YYYY 컬럼의 데이터 유형을 CHAR(4)->VARCHAR2(8)로 변경하고, 향후 입력되는 데이터의 DEFAULT 값으로 '20020129'를 적용하고, 모든 행의 ORIG_YYYY 컬럼에 NULL이 없으므로 제약조건 NULL -> NOT NULL로 변경한다.

 

* MODIFY COLUMN 시 고려사항


- 해당 컬럼의 크기를 늘릴 수는 있지만 줄이지는 못한다. 이는 기존의 데이터가 훼손될 수 있기 때문이다.

- 해당 컬럼이 NULL 값만 가지고 있거나 테이블에 아무 행도 없으면 컬럼의 폭을 줄일 수 있다.

- 해당 컬럼이 NULL 값만을 가지고 있으면 데이터 유형을 변경할 수 있다.

- 해당 컬럼의 DEFAULT 값을 바꾸면 변경 작업 이후 발생하는 행 삽입에만 영향을 미치게 된다.

- 해당 컬럼에 NULL 값이 없을 경우에만 NOT NULL 제약조건을 추가할 수 있다.


4. RENAME COLUMN (컬럼명 수정)


테이블을 생성하면서 만들어졌던 컬럼명을 변경해야 할 경우에 사용한다.



ALTER TABLE 테이블명
RENAME COLUMN 변경해야할 컬럼명 TO 새로운 컬럼명;


ALTER TABLE PLAYER
RENAME COLUMN PLAYER_ID TO TEAM_ID;


- PLAYER 테이블의 PLAYER_ID 컬럼명을 TEAM_ID 로 변경한다.


* RENAME COLUMN으로 컬럼명을 변경하면, 해당 컬럼과 관계된 제약조건에 대해서도 자동으로 변경된다.

(Oracle 등 일부 DBMS에서만 지원한다.)


5. ADD CONSTRAINT


테이블 생성 시 제약조건을 적용하지 않았다면, 생성 이후에 필요에 의해서 제약조건을 추가할 수 있다.



ALTER TABLE 테이블명
ADD CONSTRAINT 제약조건명 제약조건 (컬럼명);


ALTER TABLE PLAYER
ADD CONSTRAINT PLAYER_FK
   FOREIGN KEY (TEAM_ID) REFERENCES TEAM(TEAM_ID);



- PLAYER 테이블에 TEAM 테이블과의 외래키 제약조건을 추가한다.

- 제약조건명은 PLAYER_FK로 하고, PLAYER 테이블의 TEAM_ID 컬럼이 TEAM 테이블의 TEAM_ID를 참조하는 조건이다.


* FOREIGN KEY 제약조건을 위와 같이 추가하면 PLAYER 테이블의 TEAM_ID 컬럼이 TEAM 테이블의 TEAM_ID 컬럼을 참조하게 된다.

참조 무결성 옵션에 따라서 만약 TEAM 테이블이나 TEAM 테이블의 데이터를 삭제하려 할 경우 외부(PLAYER 테이블)에서 참조되고 있기 때문에 삭제가 불가능하게 제약을 할 수 있다.

즉 외부키(FK)를 설정함으로써 실수에 의한 테이블 삭제나 필요한 데이터의 의도치 않은 삭제와 같은 불상사를 방지하는 효과를 볼 수 있다.


6. DROP CONSTRAINT


테이블 생성 시 부여했던 제약조건을 삭제하는 명령어



ALTER TABLE 테이블명
DROP CONSTRAINT 제약조건명;


ALTER TABLE PLAYER
DROP CONSTRAINT PLAYER_FK;


- PLAYER 테이블의 제약조건 PLAYER_FK 를 제거한다.

'Query' 카테고리의 다른 글

[SQL] ALTER TABLE 테이블 수정 (ADD, DROP, MODIFY, RENAME)  (0) 2016.01.26
Posted by 양형

댓글을 달아 주세요

[ JavaScript ] 정규식 공백 제거


var val=FM.val.value;                                // 체크할 값(내용)

val=val.replace(/^\s+|\s+$/g,"");            // 공백 제거 정규식


Posted by 양형

댓글을 달아 주세요

이스케이프 코드

(Escape Code)

 

 

이스케이프 코드란 여러 줄 짜리 문장을 처리할 때 역슬래시(\)와 같은 문자를 이용하는 것으로 출력물을 보기 좋게 정렬하거나 그 외 특별한 용도에 사용된다.

 

이스케이프 코드를 다음과 같이 표로 정리해보았다.

 

코드 

설명 

 \n 

 줄바꿈 

 \v 

수직 탭

\t

 수평 탭 

 \r 

캐리지 리턴 

 \f 

폼 피드 

  \a 

벨 소리 

  \b 

백 스페이스 

    \000 

널문자 

  \\ 

   문자 "\" 

\' 

단일 인용부호(') 

 \'' 

이중 인용부호(") 



Posted by 양형

댓글을 달아 주세요

유닉스 UNIX 나, 리눅스 Linux 에서, 파일이나 디렉토리(폴더)를 찾는 검색 명령어는 "find" 입니다. find 명령으로 파일이 아닌, 디렉토리를 검색하려면 명령어 맨 끝에 "-type d" (따옴표 제외) 라는 옵션을 붙여 주어야 합니다.

가령 하드 전체에서 즉 루트 디렉토리 아래에서, et 로 시작하는 모든 디렉토리를 찾으려면

find / -name 'et*' -type d

이렇게 합니다. 위의 명령어에서 "/" 는 루트 디렉토리 즉 최상위 디렉토리를 의미합니다.

Posted by 양형

댓글을 달아 주세요

jQuery Selector (셀렉터)

Jquery 2016. 1. 22. 17:53


1. 셀렉터


셀렉터는 매우 좋은 기능이다. HTML문서에 있는 다양한 엘리먼트들 중 자신이 원하는 엘리먼트를 선택하는 기능이다.

기존에는 document.getElementById('ID') 같은 식으로 했었지만 길기도하고 치기도 좆같은 방식이었다.

jQuery는 $('셀렉터 문법')을 통해 간단하고 다양한 스타일의 엘리먼트들을 선택 할 수 있다. 

셀렉터로 얻은 엘리먼트들은 확장 집합이라고 하는데, 특수한 배열 형태의 객체로 반환이 된다. 이렇게 반환된 객체들은 

지원하는 함수들을 사용할 수 있게 된다.


자식 / 어트리뷰트 / 컨테이너 셀렉터

셀렉터 문법
문법 설명
*
모든 엘리먼트
E
태그 명이 E인 모든 엘리먼트
E F
E의 자손이면서 태그명이 F인 모든 엘리먼트
E>F
E의 바로 아래 자식이면서 태그 명이 F인 모든 엘리먼트
E+F
E의 형제 엘리먼트로 바로 다음에 오는 엘리먼트 F
E~F
E의 형제 엘리먼트로 다음에 나오는 모든 엘리먼트 F
E:has(F)
태그 명이 F인 자손을 하나 이상 가지는 태그 명이 E인 모든 엘리먼트
E.C
클래스 명 C를 가지는 태그 명이 E인 모든 엘리먼트. E의 생략은 *.C와 동일함
E#I
아이디가 I인 태그 명이 E인 엘리먼트. E의 생략은 *#I와 동일
E[A=V]
값이 V인 에트리뷰트 A를 가지는 태그 명이 E인 엘리먼트
E[A=V]
값이 V로 시작하는 에트리뷰트 A를 가지는 태그 명이 E인 엘리먼트
E[A$=V]
값이 V로 끝나는 에트리뷰트 A를 가지는 태그 명이 E인 엘리먼트
E[A*=V]
값이 V를 포함하는 에트리뷰트 A를 가지는 태그 명이 E인 엘리먼트
E[A]
에트리뷰트 A를 가지는 태그 명이 E인 모든 엘리먼트


위치 셀렉터

셀렉터 문법
문법 설명
E:first
모든 엘리먼트 E 중에서 첫 번째인 엘리먼트
E:last
모든 엘리먼트 E 중에서 마지막인 엘리먼트
E:first-child
엘리먼트 E의 자식 엘리먼트 중에서 첫 번째인 엘리먼트
E:last-child
엘리먼트 E의 자식 엘리먼트 중에서 마지막인 엘리먼트
E:only-child
엘리먼트 E의 자식 엘리먼트 중에서 형제가 없는 엘리먼트
E:nth-child(n)
엘리먼트 E의 n번째 자식 엘리먼트
E:nth-child(even or odd)
엘리먼트 E의 홀수 or 짝수 자식 엘리먼트
E:even or E:odd
페이지 전체의 짝수 or 홀수 엘리먼트
E:eq(n)
태그 값이 E인 모든 엘리먼트 중에서 n번째로 일치하는 엘리먼트
E:gt(n)
태그 값이 E인 모든 엘리먼트 중에서 n번째 엘리먼트(포함 X) 이후의 엘리먼트
E:lt(n)
태그 값이 E인 모든 엘리먼트 중에서 n번째 엘리먼트 이전의 엘리먼트


jQuery 정의 셀렉터

셀렉터 문법
문법 설명
:animated
현재 애니매이션이 적용되고 있는 엘리먼트 선택
:button
모든 버튼 선택
:checkbox
체크 박스 엘리먼트만 선택 (input[type=checkbox])
:checked
선택된 체크 박스나 라디오 버튼만을 선택
:contains(foo)
텍스트 foo를 포함하는 엘리먼트만 선택
:disabled
인터페이스에서 비활성화 상태인 모든 폼 엘리먼트를 선택
:enabled
인터페이스에서 활성화 상태인 모든 폼 엘리먼트를 선택
:file
모든 파일 엘리먼트를 선택 (input[type=file])
:header
헤더 엘리먼트 선택 (<h1>~<h6>)
:hidden
감춰진 엘리먼트만 선택
:image
폼 이미지만 선택 (input[type=image])
:input
폼 엘리먼트만 선택 (input, select, textarea, button)
:not(filter)
필터의 값을 반대로 변경함.
:parent
빈 엘리먼트를 제외하고, 텍스트도 포함해서 자식 엘리먼트를 가지는 엘리먼트
:password
패스워드 엘리먼트 선택 (input[type=password])
:radio
라디오 엘리먼트 선택 (input[type=radio])
:reset
리셋 버튼을 선택 (input[type=reset] or button[type=reset])
:selected
선택된 엘리먼트만 선택
:submit
전송 버튼을 선택 (input[type=submit] or button[type=submit])
:text
텍스트 엘리먼트만 선택 (input[type=text])
:visible
보이는 엘리먼트만 선택 


함수 정리

 
함수 명
함수 설명
엘리먼트
each(Function)
선택된 엘리먼트가 다수일 경우에 each 함수를 사용하여 차례대로 엘리먼트를 선택한다.
에트리뷰트 조작
attr(name, value)
선택된 엘리먼트의 name 에트리뷰트의 값을 value로 설정
 
attr(name)
선택된 엘리먼트의 name 에트리뷰트의 값을 얻어옴.
 
attr(Attributes)
선택된 엘리먼트를 프로퍼티(json)형태로 설정할 수 있음
 
val()
엘리먼트의 value 에트리뷰트 값을 얻어옴. attr("value")와 동일함.
 
val(content)
엘리먼트의 value 에트리뷰트 값을 content로 설정함.
에트리뷰트 제거
removeAttr(name)
해당 어트리뷰트의 값이 초기화 된다.
스타일 변경
addClass(names)
선택된 엘리먼트에 CSS Class를 적용함. 만약에 다수의 Class를 적용하려면 공백으로 구분하여 할당하면 됨.
 
removeClass(names)
선택된 엘리먼트들을 제거함.
 
toggleClass(names)
특정 Class를 적용하지 않은 상태면 적용하고, 적용한 상태면 제거함.
스타일 얻고 설정
css(name, value)
선택된 엘리먼트의 name 에트리뷰트 값을 value로 설정함.
 
css(properties)
{"name1:" value1", "name2": "value2", } 와 같은 형태로 설정함.
 
css(name)
특정 name의 프로퍼티의 스타일 값을 얻을 수 있음.
 
width(value)
선택된 엘리먼트의 width 값을 설정함.
 
height(value)
선택된 엘리먼트의 height 값을 설정함.
 
width()
선택된 엘리먼트의 width 값을 얻어옴.
 
height()
선택된 엘리먼트의 height 값을 얻어옴.
 
offset()
선택된 엘리먼트의 left 값과 top 값을 E.offset().leftE.offset().top과 같은 방법으로 얻을 수 있음.
엘리먼트 내용 설정
html()
선택된 엘리먼트 태그 내용을 얻을 수 있음.
 
html(content)
선택된 엘리먼트의 태그 내용을 content로 설정함.
 
text()
선택된 엘리먼트의 태그 내용 중 텍스트 값만 얻을 수 있음.
 
text(content)
선택된 엘리먼트의 태그 내용을 content로 설정함.
엘리먼트 복사&이동
append(content)
선택된 엘리먼트의 내용 마지막에 새로운 content를 추가함.
 
appendTo(target)
선택된 엘리먼트가 단일이면 target으로 이동시키고 다수라면 복사됨.
 
prepend(content)
append와 달리 앞으로 추가함
 
prependTo(target)
appendTo와 달리 앞으로 복사 또는 이동함
 
before(),
insertBefore()
엘리먼트를 대상의 첫 번째 자식으로 삽입하는 대신에 대상의 바로 앞 형제로 추가함.
 
after(),
insertAfter()
엘리먼트를 대상의 마지막 자식으로 삽입하는 대신에 대상의 바로 뒤 형제로 추가함
엘리먼트 감싸기
wrap(wrapper)
매개 변수로는 String과 엘리먼트 타입이 올 수 있으며, "<div class='hello'></div>" 형태로 매개 변수 값을 넘기면 됨.
 
wrapAll(wrapper)
선택된 모든 엘리먼트를 wrapper로 감쌈
엘리먼트 제거
remove()
페이지 DOM에서 확장 집합의 모든 엘리먼트를 삭제함.
 
empty()
일치하는 집합의 모든 엘리먼트의 Content를 제거함.
엘리먼트 복사
clone(copyHandlers)
일반적으로 엘리먼트를 복사한 확장 집합을 만들면 이들은 DOM 어딘가에 덧붙일 수 있음


함수 정리2

 
함수 명
함수 설명
확장 집합 크기 얻기
size()
해당 엘리먼트의 개수를 반환한다.
확장 집합에서 특정 엘리먼트 얻기
get(index)
확장 집합에서 index번째의 엘리먼트를 가져온다. (배열과 유사함)
 
get()
모든 확장 엘리먼트를 일반 자바스크립트 배열로 얻는다.
 
index(element)
확장 집합에서 특정 엘리먼트의 index 값을 가져온다.
확장 집합 재편성 하기
add(element)
기존의 확장 집합에 다른 엘리먼트를 추가한다.
 
not(expression)
기존의 확장 집합에서 expression와 일치하는 엘리먼트를 제외시킨다.
 
filter(expression)
기존의 확장 집합에서 expression와 일치하는 엘리먼트만 가져온다.
확장 집합의 부분 집합 얻기
slice(begin, end)
기존의 확장 집합에서 begin번째부터 end번째까지의 엘리먼트만 가져온다.
확장 집합 관련 그 밖에 함수들
find(selector)
기존의 확장 집합에서 selector와 일치하는 엘리먼트들로 새로운 확장 집합을 생성한다.
 
is(selector)
기존의 확장 집합에서 selector와 일치하는 엘리먼트가 있다면 true, 없다면 false를 반환한다.
jQuery 체인 관리하기
end()
이전 확장 집합을 반환한다.
 
andSelf()
커맨드 체인에서 이전 확장 집합 두 개를 하나로 합친다
관계를 이용하여 확장 집합 얻기
 
아래 표 참조.


관계를 이용하여 확장 집합 얻기와 관련된 함수 정리

함수 명
설명
children()
확장 엘리먼트의 고유한 자식으로 구성된 확장 집합 반환한다.
contents()
엘리먼트의 콘텐츠로 구성된 확장 집합을 반환한다.
next()
확장 집합 내의 각 확장 엘리먼트 바로 다음에 나오는 형제로 구성된 확장 집합을 반환한다.
nextAll()
확장 집합 내의 각 확장 엘리먼트 바로 다음에 나오는 모든 형제로 구성된 확장 집합을 반환한다.
parent()
바로 위 부모로 구성된 확장 집합을 반환한다.
parents()
바로 위 부모와 모든 조상이 포함하는 확장 집합을 반환한다.
prev()
바로 이전에 나오는 형제로 구성된 확장 집합을 반환한다.
prevAll()
이전에 나오는 모든 형제로 구성된 확장 집합을 반환한다.
siblings()
확장 엘리먼트 내에 모든 형제를 포함한 확장 집합을 반환한다.


'Jquery' 카테고리의 다른 글

jQuery Selector (셀렉터)  (0) 2016.01.22
jQuery Cookie 플러그인을 사용하여 손쉽게 쿠키정보 제어하기  (0) 2015.12.16
attr() 와 prop() 비교  (0) 2015.12.16
jQuery와 DOM 첫걸음  (0) 2015.10.20
[08]JqueryBasic  (0) 2014.11.14
[07]JqueryBasic  (0) 2014.11.14
Posted by 양형

댓글을 달아 주세요

테스트 코드를 작성 하다보면 가장 먼저 접하게 되는 것은 테스트에 대한 결과 데이터 확인 입니다. 이 같은 확인은 Junit에서 작성 할 수 있게 도와주며 테스트 코드를 만들시 거의 필수적으로 만들어야 합니다.

1. assertThat이란?
assert 메소드는 많은 종류를 가지고 있습니다. 그 종류들을 하나씩 설명을 하지 못하지만 메소드 명으로만으로도 대충 짐작하시면서 사용 할 수 있기때문에 넘기겠습니다. 
 assertThat은 기존의 assert방식에서 나중에 나온 메소드로 자유롭게 검증 할 수 있는 조건을 만들어 준다는 점에서 차이가 나게 됩니다.

2. assertThat 사용


간단한 assertThat 활용입니다. aasetThat(  검사할 대상데이터 ,  Matcher   ) 이런 구조로 되어 있습니다. 
 여기서 is() 메소드가 생소 할 수 있는대요 바로 equals와 비슷한 역활을 수행하게 됩니다. 첫번째 인자값과 같으면 테스트 통과 하게 됩니다.

Posted by 양형

댓글을 달아 주세요