2013-03-25

[ORACLE] 공용 데이터베이스 링크(Database link)

DB데이터를 가지고 작업을 하다 보면 외부의 DB데이터를 가져와야 할 때가 있다.
이때 공용 데이터베이스 링크(Database link)를 사용 하면 된다.

다음 sql문을 입력하여 실행하면 된다.

create public database link 링크명
connect to 사용자이름 identified by 비밀번호USING '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 외부DB아이피)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = 서비스이름(SID) )))';

예) 데이터페이스 링크 하려는 DB서버의 ip는 22.22.22.22이고, 서비스이름(SID)는 mydb, 사용자이름 myid, 비밀번호 aaa,
라고 가정한다.

create public database link test_link
connect to myid identified by aaaUSING '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = 22.22.22.22)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = mydb)))';

Oracle SQL Developer가 있다면 다음과 같이 공용 데이터베이스 링크 부분에 추가가 된것을 볼 수 있다.

데이타 베이스 링크 후 확인해보려면

select * from 외부DB테이블아무거나@링크명

요 sql문을 실행해 본다.
외부 DB에 있는데이터가 제대로 불러와 지면 성공.!

2013-03-07

ASP.NET에서 select 초기화 하는 방법

<td>
<select id="cmbTestItemGroup" style="width:200px;" runat="server">
<option value="0">===== 선택하세요 =====</option>
</select>
</td>


자바스크립트 엑션 함수 맨 마지막에

cmbTestItemGroup.selectedIndex = 0;

이렇게 초기화 시키면 된다.

2013-03-03

이클립스 단축키

----- 실행 -----
Ctrl + F11 : 바로 전에 실행했던 클래스 실행
----- 소스 네비게이션 -----
Ctrl + 마우스커서(혹은 F3) : 클래스나 메소드 혹은 멤버를 상세하게 검색하고자 할때
Alt + Left, Alt + Right : 이후, 이전
Ctrl + O : 해당 소스의 메소드 리스트를 확인하려 할때
F4 : 클래스명을 선택하고 누르면 해당 클래스의 Hierarchy 를 볼 수 있다.
Alt + <-(->) : 이전(다음) 작업 화면
----- 문자열 찾기 -----
Ctrl + K : 찾고자 하는 문자열을 블럭으로 설정한 후 키를 누른다.
Ctrl + Shift + K : 역으로 찾고자 하는 문자열을 찾아감.
Ctrl + J : 입력하면서 찾을 수 있음.
Ctrl + Shift + J : 입력하면서 거꾸로 찾아갈 수 있음.
Ctrl + F : 기본적으로 찾기
----- 소스 편집 -----
Ctrl + Space : 입력 보조장치(Content Assistance) 강제 호출 => 입력하는 도중엔 언제라도 강제 호출 가능하다.
F2 : 컴파일 에러의 빨간줄에 커서를 갖져다가 이 키를 누르면 에러의 원인에 대한 힌트를 제공한다.
Ctrl + L : 원하는 소스 라인으로 이동 로컬 히스토리 기능을 이용하면 이전에 편집했던 내용으로 변환이 가능하다.
Ctrl + Shift + Space : 메소드의 가로안에 커서를 놓고 이 키를 누르면 파라미터 타입 힌트를 볼 수 있다.
Ctrl + D : 한줄 삭제
Ctrl + W : 파일 닫기
Ctrl + I : 들여쓰기 자동 수정
Ctrl + Shift + / : 블록 주석(/* */)
Ctrl + Shift + \ : 블록 주석 제거
Ctrl + / : 여러줄이 한꺼번에 주석처리됨. 주석 해제하려면 반대로 하면 된다.
Alt + Up(Down) : 위(아래)줄과 바꾸기
Alt + Shift + 방향키 : 블록 선택하기
Ctrl + Shift + Space : 메소드의 파라메터 목록 보기
Ctrl + Shift + O : 자동으로 import 하기
Ctrl + Shift + F4 : 열린 파일 모두 닫기
Ctrl + M : 전체화면 토글
Ctrl + Alt + Up(Down) : 한줄(블럭) 복사
Ctrl + , or . : 다음 annotation(에러, 워닝, 북마크 가능)으로 점프
Ctrl + 1 : 퀵 픽스
F3 : 선언된 변수로 이동, 메소드 정의부로 이동
Ctrl + T : 하이어라키 �b업 창 띄우기(인터페이스 구현 클래스간 이동시 편리)
Ctrl + O : 메소드나 필드 이동하기
Ctrl + F6 : 창간 전환, UltraEdit 나 Editplus 의 Ctrl + Tab 과 같은 기능
----- 템플릿 사용 -----
sysout 입력한 후 Ctrl + Space 하면 System.out.println(); 으로 바뀐다.
try 입력한 후 Ctrl + Space 하면 try-catch 문이 완성된다.
for 입력한 후 Ctrl + Space 하면 여러가지 for 문을 완성할 수 있다.
템플릿을 수정하거나 추가하려면 환경설정/자바/편집기/템플릿 에서 할 수 있다.
----- 메소드 쉽게 생성하기 -----
클래스의 멤버를 일단 먼저 생성한다.
override 메소드를 구현하려면, 소스->메소드대체/구현 에서 해당 메소드를 체크한다.
기타 클래스의 멤버가 클래스의 오브젝트라면, 소스->위임메소드 생성에서 메소드를 선택한다.
----- organize import -----
자바파일을 여러개 선택한 후 소스->가져오기 체계화 해주면 모두 적용된다.
----- 소스 코드 형식 및 공통 주석 설정 -----
환경설정 -> 자바 -> 코드 스타일 -> 코드 포멧터 -> 가져오기 -> 프로파일.xml 을 불러다가 쓰면 된다.
또한 다수의 자바파일에 프로파일을 적용하려면 패키지 탐색기에서 패키지를 선택한 후 소스 -> 형식화를 선택하면 된다.
환경설정 -> 자바 -> 코드 스타일 -> 코드 템플리트 -> 가져오기 -> 템플리트.xml 을 불러다가 쓰면 된다.
- 이클립스 자주쓰는 단축키 -
Ctrl + / : 주석 처리 - 한 라인/블록에 대해 주석 처리 (추가 및 제거)
Ctrl + L : 특정 라인으로 이동
Ctrl + F6 : Editor 창간의 이동
Ctrl + F7 : View 이동 메뉴
Ctrl + F8 : Prespectives 이동 메뉴
Ctrl + D : 한라인 삭제 - 커서가 위치한 라인 전체를 삭제 한다.
Ctrl + J : Incremental find 이클립스 하단 상태 표시줄에 Incremental find 라고 표시되어 한 글자자씩 누를 때 마다 코드내의 일치하는 문자열로 이동 , 다시 Ctrl + J 를 누르면 그 문자열과 일치 하는 부분을 위/아래 방향키로 탐색이 가능하다.
Ctrl + N : 새로운 파일 / 프로젝트 생성
Ctrl + 1 (빠른교정) - 문 맥에 맞게 소스 교정을 도와 준다. 변수를 선언하지 않고 썼을경우 빨간색 에러 표시되는데 이 단축키를 적용하면 변수에 맞는 선언이 추가 되도록 메뉴가 나타난다.
Ctrl + 0 : 클래스 구조를 트리로 보기
Ctrl + Space : Cotent Assist - 소스 구문에서 사용 가능한 메소드, 멤버들의 리스트 메뉴를 보여준다.
Ctrl + PageUp , Ctrl + PageDown : Edit 창 좌우 이동 - Edit 창이 여러개 띄워져 있을경우 Edit 창간의 이동 한다.
Ctrl + Shift + Down : 클래스 내에서 다음 멤버로 이동
Ctrl + Shift + M : 해당 객체의 Import 문을 자동 생성 - import 추가 할 객체에 커서를 위치 시키고 단축키를 누르면 자동적으로 import 문이 생성
Ctrl + Shift + O : import 문을 자동 생성 - 전체 소스 구문에서 import 안된 클래스의 import 문을 생성해 준다.
Ctrl + Shift + G : 해당 메서드 / 필드를 쓰이는 곳을 표시 - View 영역에 Search 탭에 해당 메서드 / 필드를 사용하는 클래스를 표시 해준다.
Alt + Shift + R : Refactoring (이름변경) - Refactoing 으로 전체 소스에서 이름변경에 의한 참조 정보를 변경해 준다.
F3 : 선언 위치로 이동
F11 : 디버깅 시작
F8 : 디버깅 계속
F6 : 디버깅 한줄씩 실행(step over)
F5 : 디버깅 한줄씩 실행 함수 내부로 들어감 (step into)
F12 : Editor 창으로 이동 (Debugging 등 자동적으로 포커스가 이동 됐을경우 편리)
Alt + Up , Alt + Down : 줄 바꿈 - 해당 라인을 위 / 아래로 이동 시킨다.
Alt + Shift + S : Source Menu - 소스메뉴 (Import 추가 , Comment 추가 , 각종 Generator 메뉴) 가 나타난다.
Alt + Shift + Up : 블록설정 - 소스 코드를 블록 단위로 설정해 준다.
Alt + Shift + Down : 블록해제 - 소스 코드를 블록 단위로 해제한다.
Alt + Shift + J : 주석 생성 - 해당 메서드/클래스에 대한 주석을 템플릿을 생성해 준다.
sysout + (Ctrl + Space) : System.out.println() 문장 삽입 - 코드 템플릿을 이용해서 소스 구문을 추가
(Windows -> Preferences -> JAVA -> Editor -> Templates 에서 자주 쓰는 소스 구문을 추가시키면 <템플릿 이름> + (Ctrl + Space) 로 소스 문장을 완성 시킬 수 있다.)
Alt + Shift + Z : Surround With 메뉴 - try / catch 문이나 for , do , while 등을 해당 블록에 감싸주는 메뉴가 나타난다.
Ctrl + Shift + F : 코드 포맷팅 - 코드 내용을 문법 템플릿에 맞게 포맷팅(들여쓰기) 해준다.
Ctrl + Alt + Down: 한줄 복사후 아래에 복사 넣기 - Copy&Paste 대체하는 단축키. 커서가 위치한 라인을 복사해 밑줄에 생성해 준다.
Ctrl + Shift +X : 대문자로 변환
Ctrl + Shift + Y : 소문자로 변환
Ctrl + Shift + L : 모든 단축키의 내용을 표시해준다.
Ctrl + Shift + B : 현재 커서 라인에 Break point 설정
Ctrl + Shift + T : 클래스 찾기
----- 에디터 변환 -----
에디터가 여러 파일을 열어서 작업중일때 Ctrl + F6 키를 누르면 여러파일명이 나오고 F6키를 계속 누르면 아래로 Ctrl + Shift + F6 키를 누르면 위로 커서가 움직인다.
Ctrl + F7 : 뷰간 전환
Ctrl + F8 : 퍼스펙티브간 전환
F12 : 에디터로 포커스 위치

[MySQL] Incorrect integer value: '' for column '컬럼명' 오류 발생시

ncorrect integer value: '' for column '컬럼명' 오류 발생.
integer 필드에 '' 값을 넣으려고 할 때 발생.
DEFAULT NULL 로 설정되어 있어도 안됨.
이럴땐 my.ini 설정을 바꿔주면 해결됨.

my.ini 파일을 아래처럼 수정. (주석처리)



# Set the SQL mode to strict
#sql-mode="STRICT_TRAO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

javax.naming.NameNotFoundException:문제가 생겼을 때

팝업창을 누르면 에러가 생겼다.

에러가 생기면서 아래와 같은 메시지가 생겼다.

type : emp1을 못 찾고
Cannot get connection: javax.naming.NameNotFoundException: Name SilverValley_suwon is not bound in this Context 라고 나와서 어뗗게 해야 할지 몰랐다.

이말은 SilverValley_suwon를 찾을 수 없다는 건데... 어디를 찾아야 할 지 몰라서.. 당황했다.

jsp를 들어가서 java파일을 찾아들어갔다. emp1을 찾으려면 어느 경로 를 찾아 가려면 어떻게 해야하는지 찾았다.
empAttendanceAdd.jsp에서 CaseMintAction.java의 CaseMntAction()에서 SivervalleyDBcon.java의 싱글턴 패턴의 커넥션에 name에 오류가 있다는 것을 알았고 커넥션에 문제가 없는 jsp에서 커넥션에 경로를 알아내서 경로를 수정했더니 사용할 수 있게 되었다.

자바스크립트 - 유효성검사(라디오버튼,체크박스)

<script language="javascript">
function frmchk()
{
var chk = document.
abc;
var checked_items = 0;

for (i=0;i<chk.elements.length;i++) //특정 영역을 체크 할때는 숫자로 대신 한다 예: for(i=3;i<21;i++)
{
if ((chk.elements[i].name == "answer") &&
(chk.elements[i].checked))
checked_items++;
}

if (checked_items == 0)
{
alert("적어도 하나의 항목을 선택하셔야 합니다.")
return false;
}

return true;
}
</script>
</HEAD>

<BODY>
<form name="abc" method="post" action="vote_ok.asp" onsubmit="return frmchk();">
<table align="center" border="1">
<tr>
<td align="center">프로그래밍이 재미있으세요?</td>
</tr>
<tr>
<td><input type="radio" name="answer">&nbsp;재미있음</td>
</tr>
<tr>
<td><input type="radio" name="answer">&nbsp;그럭저럭</td>
</tr>
<tr>
<td><input type="radio" name="answer">&nbsp;별로</td>
</tr>
<tr>
<td><input type="radio" name="answer">&nbsp;아우 짜증</td>
</tr>
<tr>
<td><input type="radio" name="answer">&nbsp;그게 모야?</td>
</tr>
<tr>
<td><input type="submit" value="투표하기">
</tr>
</table>
</form>

자바스크립트 - 유효성검사(확장자검사)

function upload_image() {
try {
var f = document.forms[0];
var file = f.img.value;

if (file.length <= 0) {
alert("내용에 추가할 파일을 선택해 주세요.");
f.img.focus();
return false;
}
else {
var ext = file.substring(file.lastIndexOf(".") + 1);
// substring 첫번째 인자부터 두번째 인자까지의 값을 반환
switch (ext.toLowerCase()) {
// toLowerCase 대문자를 소문자로 반환
case "jpg":
case "jpeg":
case "bmp":
case "gif":
case "png":
break;
default:
alert(ext.toUpperCase() + " 파일은 업로드 할 수 없습니다.\n이미지 파일만 업로드할 수 있습니다.");
// toUpperCase 소문자를 대문자로 반환f.img.focus();
return false;
}
}

자바스크립트 - 유효성검사

 
<SCRIPT LANGUAGE="JavaScript">
<!--
function frmchk(frm)
{
if (!frm.subject.value)
{
alert("제목을 입력하세요.")
frm.subject.focus();
return false
}
else if (!frm.name.value)
{
alert("이름을 입력하세요.")
frm.name.focus();
return false
}
else if (!frm.email.value)
{
alert("이메일을 입력하세요.")
frm.email.focus();
return false
}
else if (!frm.content.value)
{
alert("내용을 입력하세요.")
frm.content.focus();
return false
}
else if (!frm.pwd.value)
{
alert("비밀번호를 입력하세요.")
frm.pwd.focus();
return false
}
}
//-->
</SCRIPT>
<form name="frm" method="post" action="write_ok.asp" onsubmit="return frmchk(this)" enctype="multipart/form-data">
<table align="center" border="1">
<tr>
<td>제목</td>
<td><input type="text" name="subject"></td>
</tr>
<tr>
<td>작성자</td>
<td><input type="text" name="name"></td>
</tr>
<tr>
<td>이메일</td>
<td><input type="text" name="email"></td>
</tr>
<tr>
<td>내용</td>
<td><textarea rows="10" cols="70" name="content"></textarea></td>
</tr>
<tr>
<td>파일</td>
<td><input type="file" name="file"></td>
</tr>
<tr>
<td>비밀번호</td>
<td><input type="password" size="12" name="pwd"></td>
</tr>
<tr>
<td colspan="2" align="center"><input type="submit" value="작성">&nbsp;&nbsp;<input type="reset" value="다시 작성"></td>
</tr>
<tr>
<td colspan = "2" align="right"><a href="list.asp">목록으로</a></td>
</table>
</form>

테이블 동적 생성과 삭제

<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=euc-kr">
<title>제목 없음</title>
<meta name="generator" content="Namo WebEditor v5.0">
</head>


<script language="JavaScript">
var table_count = new Array()
var count = 0;
var cnt = 0;
var country_name="";
var city="";


table_count[0] = 0;



function select_chang(country,selt,index)
{
var selt = "document.select_form.formselect" + selt;
var frameobj = eval(selt);


document.select_form.reset(); // select 문의 선택을 reset 한다
frameobj.options[index].selected = true; // 선택되건만 보여진다.


country_name = country;
city = frameobj.options[index].value;


addRow('table_list');
}


function addRow(TableID) // 테이블 동적 생성
{


count++;
cnt++;
table_count[cnt] = count;

var tbody = document.getElementById(TableID).getElementsByTagName("TBODY")[0];
var row = document.createElement("TR");


var td1 = document.createElement("TD");

td1body = "<p align='center'> <font size='2'>"+ country_name +"</font></p>";
td1.insertAdjacentHTML('beforeEnd', td1body );


var td2 = document.createElement("TD");


td2body = "<p align='center'><font size='2'>"+ city + "</font></p>";
td2.insertAdjacentHTML('beforeEnd', td2body);


var td3 = document.createElement("TD");


td6body = "<p align='center'><input type='button' value='삭제' style='border-width:1px; border-style:solid;' onclick=delRow('" + TableID + "'," + table_count[cnt] +")></p>";
td3.insertAdjacentHTML('beforeEnd', td6body);


row.appendChild(td1);
row.appendChild(td2);
row.appendChild(td3);


tbody.appendChild(row);
}


function delRow(TableID,num) // 테이블의 특정 위치를 삭제
{


var tbody = document.getElementById(TableID).getElementsByTagName("TBODY")[0];

for ( var i = 1; i < table_count.length ; i++ )
{
if ( table_count[i] == num )
{ tbody.deleteRow(i); // 테이블 삭제
table_count[i] = 0;
}
}


for ( var i = 1; i < table_count.length ; i++ ) // 위치를 지정하여 이동한다.
{
if ( table_count[i] == 0)
{ cnt = tbody.rows.length-1;
for ( j = i ; j < table_count.length ; j++)
table_count[j] = table_count[j+1];
}
}



}


function cancel(TableID) // 테이블 전체 삭제
{
var tbody = document.getElementById(TableID).getElementsByTagName("TBODY")[0];
var del_cnt = tbody.rows.length;


for ( var i = 1; i < del_cnt; i++ )
{
tbody.deleteRow(1); // 테이블 삭제
}
cnt = 0; // 테이블 관련 번호를 초기화
}


</script>


<body bgcolor="white" text="black" link="blue" vlink="purple" alink="red">


<form name=select_form>
<table border="0" cellpadding="0" cellspacing="0" width="224">
<tr>
<td width="112">
<p><font size="2"><b>한국</b></font></p>
</td>
<td width="112">
<p><font size="2"><b>중국</b></font></p>
</td>
</tr>
<tr>
<td width="112" height="72" valign="top">
<p><select name="formselect0" size="3" onchange="select_chang('한국',0,selectedIndex)">
<option value="서울">서울</option>
<option value="인천">인천</option>
<option value="대전">대전</option>
<option value="광주">광주</option>
<option value="대구">대구</option>
<option value="부산">부산</option></select>

<br><br>
<input type=button value="전체삭제" style='border-width:1px; border-style:solid;' onclick=cancel("table_list") >

</p>
</td>
<td width="112" height="72" valign="top">
<p><select name="formselect1" size="3" onchange="select_chang('중국',1,selectedIndex)">
<option value="베이징">베이징</option>
<option value="텐진">텐진</option>
<option value="상하이">상하이</option>
<option value="충칭">충칭</option>
<option value="하얼빈">하얼빈</option></select>
</p>
</td>
</tr>
</table>
<br>
<table id="table_list" border="0" cellpadding="0" cellspacing="0" width="224">
<tbody>
<tr>
<td width="80" height="30" bgcolor="#CCCCCC">
<p align="center"><font size="2">국가</font></p>
</td>
<td width="100" height="30" bgcolor="#CCCCCC">
<p align="center"><font size="2">도시</font></p>
</td>
<td width="44" height="30" bgcolor="#CCCCCC">
<p align="center"><font size="2">비고</font></p>
</td>
</tr>
</tbody>
</table>
</form>


</body>


</html>


세션(session)이란?

세션은 웹 서버의 서비스를 받는 사용자를 구분할 수 있는 단위.
세션을 사용하면 여러 사이트를 돌아다녀도 사용자가 웹 서버의 세션에 의해 가상적으로 연결되어 있으므로 그에 대한 정보를 잃지 않게 된다.

파라미터(parameter)

parameter 파라미터, 매개변수


jsp에서 request객체에 저장되는 정보 중에서 가장 중요한 것은 파라미터 정보임.
파라미터는 클라이언트가 폼에 데이터를 입력한 후 서버를 요청할 때 전송되는 폼에 입력된 정보형태를 말함.
원하는 겂을 얻기 위해서는 입력양식의 name속성 값을 메소드의 전달인자로 기술함.


getParameter(String name) - 지정한 이름의 파라미터 중 첫번째 파라미터의 값을 구함.
getParameterNames() - 모든 파라미터의 이름을 구함.
getParameterValues(String name) - 지정한 이름을 가진 파라미터의 모든 값을 String[]로 구함.

int형 null값을 체크하려면

int 형은 null값을 갖지 않는다.
Integer k = new Integer();
이런식으로 wrapper클래스를 사용하면 null 체크가 가능하다.

500에러 404에러 403에러

500 서버 에러의 경우 프로그램 코드의 논리적 오류가 생기거나 할 때 나오는 막연한 오류임.

요청한 파일(url)이 없는 경우에는 404 not found

권한이 없는 경우에는 403 forbidden이 뜬다.

he server encountered an internal error () that prevented it from fulfilling this request.

어딘가에 오타나 미입력등으로 에러가 발생 한것

An error has occurred.(Refreshing workspace to recover changes.)

Spring을 실행할때 An error has occurred.라고 하면서 See the log file log파일을 참조하라는 error메시지가 뜨면

workspace/.metadate/.log에서 error메시지를 확인한다.

어떤 메시지가 있는지 확인한다. 여러가지 메시지가 나오는데 각 메시지를 확인한다.

나 같은 경우는

MESSAGE An error occurred while automatically activating bundle org.eclipse.team.svn.ui (937).
자동으로 묶음 org.eclipse.team.svn.ui (937)를 활성화하는 동안 메시지 오류가 발생했습니다. 라는 메시지와

The workspace exited with unsaved changes in the previous session; refreshing workspace to recover changes. (작업 영역은 이전 세션에서 저장되지 않은 변경 사항과 함께 종료되었습니다. 작업공간의 변경 사항을 새로 고침하여 복구합니다.-직역이라 쫌 이상... )라는 메시지가 나왔다.

이런 메시지가 나오면

workspace\.metadata\.plugins\org.eclipse.core.resources 안의 .snap 파일을 지운다.

그러면 Spring을 실행할 수 있다.

Spring 3.7 Indigo에 SVN 설치

. Install New Software 메뉴에서 Work with 입력 창에 "Indigo - http://download.eclipse.org/releases/indigo"선택

2. Collaboration 항목을 펼쳐서 Subversive SVN Team Provider를 선택하고 설치

3. 설치 후에 새로운 프로젝트를 SVN에서 가져와서 만들려고 하면(Project from SVN), Subversive Connector를 설치해야 한다고 고르라는 팝업이 뜸
SVN Kit 1.3.5를 선택하고 설치


재설치 한다고 자동으로 꺼졌다 다시 켜지면... 사용하면 된다.

java.lang.NoClassDefFoundError: org/apache/catalina/startup/Bootstrap

java.lang.NoClassDefFoundError: org/apache/catalina/startup/Bootstrap
Caused by: java.lang.ClassNotFoundException: org.apache.catalina.startup.Bootstrap
at java.net.URLClassLoader$1.run(URLClassLoader.java:202)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
Exception in thread "main"

java의 object type과 int type

- Java 의 object type과 int type자바의 객체로서의 최소한의 기능들과 최소한의 속성들을 정의하고 있습니다.
그리고 자바의 모든객체들이 Object란 클래스를 상속받도록 되어 있다.
우리가 임의의 클래스를 만든다고 해도 그 클래스는 Object Class를 default로 상속받고 있죠.

public class AClass{} 는 사실상 public class AClass extends Object{} 가 되는겁니다.
그래서 우리가 객체를 만들면 Object를 상속 안받았어도 equals메소드라든지 toString메소드를 사용
보통은 재 정의해서 사용을 하죠...

자바는 객체지향 언어로 다형성이란 기능을 제공하기 위해 선조 클래스의 참조변수로 후손의 객체를 참조 가능

Object obj = new AClass();
자바에서는 data type을 크게 두가지로 나눌수 있읍니다.
primary type과 Object type..

primary type에는 boolean, byte, char, int, long, float, double등이 있고,
Object type은 말그대로 class가 되는거구요.

그래서 결론은 자바의 모든 객체를 관리하기 위해 Object라는 클래스를 만들어 둔다고 생각하시면 됩니다.

ex) AClass obj = new AClass(); // AClass의 객체를 만듭니다.
Stack stack = new Stack(); // Stack을 만듭니다.
stack.add(obj); //Object를 stack에 집어 넣는거죠.

ACass obj2 = (AClass)stack.get(0);// Stack에서 Object로 꺼내온 후 AClass로 형변환 합니다.

frame에 값을 넣기

<%
category = Trim(Request.Form( "cat" ))
%>

< FRAME SRC="topp.asp?cat=<%=category%>" NAME=SIDEBAR SCROLLING=NO>

 then in topp.asp:

< %
category = Trim(Request.querystring( "cat" ))
%>

자바스크립트의 값을 frame에 넣는 방법

html>
<head>
<script>
function loadFrames()
{
top.frame1.location = "http://www.google.com";
top.frame2.location = "http://www.yahoo.com";
}
</script>
</head>
<frameset rows="10%,*" on Load="top.loadFrames()">
<frame name="frame1" src="javascript:' '">
<frame name="frame2" src="javascript:' '">
</frameset>
</html>

CREATE TABLE 두개의 칼럼을 묶어서 PRIMARY KEY로

MySQL 말고 어떤 RDBMS를 쓰든 한 테이블에는 Primary key가 두개가 올 수 없다



그러나 두 개의 컬럼을 하나로 묶어 하나의 primary key로 만들 수는 있다.

create table test (
....
....
....
PRIMARY KEY(id, pw)
) ;

How to get client and server IP address in JSP page

GetIPAddress.jsp<h3> Server Side IP Address </h3><br>
<%@page import="java.net.InetAddress;" %>
<%String ip = "";
InetAddress inetAddress = InetAddress.getLocalHost();
ip = inetAddress.getHostAddress();
out.println("Server Host Name :: "+inetAddress.getHostName());%><br>
<%out.println("Server IP Address :: "+ip);%>

<h3> Client Side IP Address < /h3><br>
<%out.print( "Client IP Address :: " + request.getRemoteAddr() ); %><br>
<%out.print( "Client Name Host :: "+ request.getRemoteHost() );%><br>

리눅스에서 압축하고 압축 풀어 설치(tar.gz, tar, gzip )

압축하고 풀기입니다.

가장 많이 보는 형식은 tar.gz입니다.
이것은 tar형식과 gz형식의 혼합입니다. tar형식은 파일들을 묶어주고 gz은 파일을 압축하는 역할을 하게 됩니다.


압출풀기


1. tar.gz 압축풀기

$gunzip filename.tar.gz // tar.gz에서 gz을 풀어냅니다.
$tar xvf filename.tar // tar를 풀어냅니다. ( x: 압축풀기 , v: 압축푸는 상태를 본다, f: 파일이름 )

2. tar.gz 한번에 간단하게 푸는 방법(설치방법)
$tar xvzf filename.tar.gz
압축하기

3. tar.gz 압축하기
$tar cvf filename.tar file1... //file1의 폴더나 파일을 filename.tar로 묶는다 (압축아님)
$gzip filename.tar //filename.tar을 filename.tar.gz로 압축한다 (이땐 압축)
4. tar.gz 한번에 압축하기
$tar cvzf filename.tar.gz file1... //file1의 폴더나 파일을 filename.tar.gz로 묶고 압축한다.

Data too long for column 'XXXXX' at row 1

현재 MYSQL 사용중이다.
 
Data too long for column 'photo' at row 1

컬럼으로 설정한 값보다 큰 값이 TITLE 에 들어가려고 하니 나는 애러다.



살펴보니 컬럼 설정을 `photo` varchar(15) DEFAULT NULL,

varchar(15) 값을 255로 하니까 해결... 정말... 죽겠땅...

left join

select t1.rdate, t1.aseq, t1.bst1, t1.bst2, t1.bst3, t1.bst4, t1.bst5, t1.capa, t1.position,
t1.aseqrdate, t1.eseq, t2.bp, t3.esign as sign
from TBSTRecord as t1 left join TAngelHealthStatus as t2 on t1.aseq = t2.aseq
left join TEmployee as t3 on t1.eseq=t3.seq
where t1.aseq='86' and date_format(t1.rdate, '%Y-%m-%d')
between date_format('2012-07-01', '%Y-%m-%d') and date_format('2012-07-31', '%Y-%m-%d') order by t1.rdate desc

CREATE TABLE

CREATE TABLE `Member` (
`seq` int(10) NOT NULL auto_increment COMMENT '회원번호',
`id` varchar(20) NOT NULL COMMENT '아이디',
`pwd` varchar(100) NOT NULL COMMENT '비밀번호',
`name` varchar(20) NOT NULL COMMENT '회원이름',
`pic_url` varchar(16) default NULL COMMENT '사진',
`gender` int(1) NOT NULL COMMENT '성별(1:남, 0:여)',
`address` varchar(100) NOT NULL COMMENT '집주소',
`hobby` varchar(40) default NULL COMMENT '취미',
`grade` int(10) default NULL COMMENT '권한',
`video_url` varchar(16) default NULL COMMENT '동영상',
PRIMARY KEY (`seq`),
UNIQUE KEY `id_unique` (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='회원 테이블';

[MySQL] 간단한 백업과 복구방법

특정 데이타베이스 하나만을 백업
백업형식 : myslqdump -u DB계정명 -p 백업대상데이터베이스명 > 저장할파일명
복구형식 : mysql -u DB계정명 -p 복구할테이터베이스명 < 저장할파일명

# ./mysqldump -u root -p mysql > mysql.sql //mysql 디비 백업 예
# ./mysql -u root -p mysql < ./mysql.sql //mysql 디비 복구 예

// 위 백업결과물인 sql 파일은 디비를 생성하지는 않는다.. 다시말해 복구하려는 디비에 mysql이란 디비가 없다면 복구가 되지않는다.... 이점 유의
// 복구하려는 mysql 디비에 테이블이 이미 존재한다면 복구 실패... sql 파일에서 해당 디비의 테이블을 생성하므로.. 따라서 특정 데이타베이스 하나만을 복구 할 시에는 데이타베이스의 이름만 생성한 다음에 위 방법의 복구하여야 함

- 특정 데이타베이스의 특정 테이블 하나만을 복구 백업
백업형식 : myslqdump -u DB계정명 -p 데이터베이스명 테이블명 > 저장할파일명
복구형식 : mysql -u DB계정명 -p 데이터베이스명 < 저장할파일명
#./mysqldump -u root -p mysql user > user.sql
#./mysql -u root -p mysql < user.sql
- 여러개의 데이터베이스 한번에 백업과 복구
백업형식 : mysqldump -u root -p --databases [옵션] DB1 [DB2 DB3] > 파일명
복구방법 : mysql -u root -p < 파일명
# ./mysqldump -u root -p --databases mysql test > dbs.sql //mysql, test 디비를 백업
# ./mysql -u -root -p < dbs.sql //백업된 두 디비를 복구
//--databases 옵션 시 일반 백업과 달리 "CREATE DATABASE ..."문과 "USE DB .." 문이 추가됨
//달리 애기하면 DB를 생성할 필요가 없이 바루 디비가 생성되고 생성된 디비로 전환되고 테이블을 생성하고 인서트로 데이타를 붓는다.. 데이타베이스를 지정하면 안됨
- Mysql 의 전체 데이타베이스 백업
백업형식 : ./mysqldump -u root -p --all-databases > 파일명.sql
복구형식 : mysql -u root -p < 파일명.sql
//원본 데이타베이스명과 동일한 디비가 생성됨
- 기존 테이블 삭제후 백업된 파일로 복구를 위한 백업
(mysqldump문으로 데이타베이스 백업 시 각각의 create table문 앞에 drop table문을 삽입한 형태가 된다)
백업형식 : ./mysqldump -u root -p --add-drop-table test > test.sql
//test 데이타베이스를 기존 태이블 삭제문을 추가하여 백업한다
복구형식 : ./mysql -u root -p test < test.sql
//기존 테이블을 삭제하고 복구한다는것에 유의