웹상에서 다수의 입력항목이 있는 페이지에서 데이터를 입력하는 도중 실수로 [esc]나 [back space] 키를 누르면
History back으로 인식하여 새로 입력한 모든 정보가 날라갑니다.
그렇게 되고나면 복구도 불가능하고 오로지 다시 입력하는 수 밖에 없습니다.
사용자의 실수 방지 차원에서 가능한 잊지않고 넣으면 좋을 것 같습니다..
/*
******************************************
* 2005-08-10
* 박 이 수
* esc와 back-space 클릭 방지
******************************************
*/
document.onkeydown=checkKey;
function checkKey(){
//alert("You pressed a following key: "+window.event.keyCode);
// ESC Key 누를 때 데이터 사라지는 것 방지
if(window.event.keyCode == 27){
window.event.returnValue = false;
return;
}
// back-space 누를 때
if(window.event.keyCode == 8){
// TextEdit가 아니면 작동하지 않도록
if(!window.event.srcElement.isTextEdit){
window.event.returnValue = false;
return;
}else if(window.event.srcElement.readOnly || window.event.srcElement.disabled){
// readOnly나 disabled인 경우 작동하지 않도록
window.event.returnValue = false;
return;
}
}
1. Jad와 JadClipse 파일 다운. 지금 같이 올린 것은 Europa버전을 위한 것입니다. 각자 자신의 버전에 맞는 JadClipse를 받아야 합니다. 2. Jad.exe 를 적당한 경로에 놓습니다.
3. net.sf.jadclipse_3.3.0.jar 파일을 이클립스가 폴더 Plugin폴더에 복사합니다.
4. 이클립스 시작 - Window -> Preferences ->Java -> JadClipse
5. 설정화면에서 Path to decompiler에 Jad.exe의 전체 경로를 화일이름까지 적는다. 예)C:\java\jdk1.4.12\bin\jad.exe
reuse code buffer, ignore existing source 옵션 선택 글자 깨짐 현상을 방지하기 위해 misc - convert unicode strings into ANSI string 체크
여기까지하면 기본적인 설치는 된 것인데 사실 이 상태에서 class 화일을 더블클릭하면 에디터가 없다면서 Decompile이 되지 않는다. 다음 설정을 해줘야 한다.
6. 클래스 파일이 들어있는 폴더 추가. 프로젝트 이름 오른쪽 버튼 클릭 -> Properties -> Java Build Path -> Libraries 탭 -> Add Class Folder -> Create New Folder -> Advanced -> Link to folder in the file system 체크 -> Browse.. 클릭해서 클래스 폴더 지정
7. 확인하고 빠져나와서 프로젝트 화면에 보면 추가한 클래스 폴더가 보이고 그 안에서 적당한 클래스 파일을 찾아 클릭하면 역컴파일된 소스가 에디터 창에 보인다.
* 현재까지 발견한 Jadclipse 사용방법이다. 혹시 더 편리한 방법을 발견하신 분은 댓글 부탁드립니다.
/* 특정 부분을 출력할때 쓰임 */
function print_content(p_service){
//alert("dfdf");
window.open("/html/print_content.html","","directories=0,location=0,menubar=0,scrollbars=0,toolbar=0,width=500,height=500, left=5000, top=5000;");
# ifconfig -a (모든 interface 확인)
# ifconfig eri0 (eri0 네트웍 카드만 확인 )
# man eri (eri 네트웍 카드를 알 수 있음.)
2) 현재 eri 네트웍 카드의 ip-address 변환 방법
# ifconfig eri0 inet 10.1.1.60
3) ethernet address 변환 방법
# ifconfig eri0 ether 0:3:ba:4e:3c:4c
4) netmask 변경
# ifconfig eri0 netmask 255.255.0.0 broadcast +
5) 네트웍 카드 enable /disable
# ifconfig eri0 down <== disable
# ifconfig eri0 up <== enable
6) 네트웍 카드 plumb /unplumb
# ifconfig eri0 unplumb <== 네트웍 카드 제거
# ifconfig eri0 plumb <== 네트웍 카드 설정
7) 네트웍 카드 초기화
# ifconfig eri0 plumb 203.234.247.60 netmask 255.255.255.0 broadcast
+ up
8) rebooting 후에도 계속 사용하고자 할 때 설정하는 파일
# vi /etc/hostname.eri0 <== 네트웍 카드 이름으로된 파일을 생성
203.234.247.60
또는
sun60
9) 만일 'sun60' 처럼 host이름으로 사용시 hosts 파일에 기록
# vi /etc/hosts
203.234.247.60 sun60
10) 가상 interface 설정 방법 (복수의 ip-address 설정)
# ifconfig eri0 addif 10.1.1.10 up
# ifconfig eri0 addif 10.1.1.11 up
11) 가상 interface 제거 방법
# ifconfig eri0:1 unplumb
또는
# ifconfig eri0 removeif 10.1.1.11
12) booting 시 자동으로 가상 Interface 설정 방법
# vi /etc/hostname.eri0
sun60 up
addif 10.1.1.1 netmask 255.255.255.0 broadcast + up
addif 10.1.1.2 netmask 255.255.255.0 broadcast + up
# init 6
CONCAT 함수는 Concatenation의 약자로 두 문자를 결합하는 역할을 합니다. "||" 연산자와 같은 역할을 합니다.
SQL>SELECT CONCAT('Oracle', ' Korea') NAME FROM dual ;
NAME ------------- Oracle Korea
INITCAP(char)
주어진 문자열의 첫 번째 문자를 대문자로 변환시켜 줍니다.
SQL>SELECT INITCAP('kim jung sick') NAME FROM dual ;
NAME ------------- Kim jung sick
LOWER(char)
문자열을 소문자로 변환 시켜 줍니다.
UPPER(char)
문자열을 대문자로 변환 시켜 줍니다.
SQL>SELECT LOWER('KIM JUNG SICK') NAME FROM dual ;
NAME ------------- kim jung sick
SQL>SELECT UPPER('kim jung sick') NAME FROM dual ;
NAME -------------- KIM JUNG SICK
LPAD(char1, n [,char2])
왼쪽에 문자열을 끼어 놓는 역할을 합니다. n은 반환되는 문자열의 전체 길이를 나타내며, char1의 문자열이 n보다 클 경우 char1을 n개 문자열 만큼 반환합니다.
SQL>SELECT LPAD('JUNG-SICK', 10, '*') NAME FROM dual ;
NAME ------------ *JUNG-SICK
RPAD(char1, n [,char2])
LPAD와 반대로 오른쪽에 문자열을 끼어 놓는 역할을 합니다.
SQL>SELECT RPAD('JUNG-SICK', 10, '*') NAME FROM dual ;
NAME ------------ JUNG-SICK*
SUBSTR(char, m ,[n])
SUBSTR함수를 이용하여 m 번째 자리부터 길이가 n개인 문자열을 반환한 합니다. m이 음수일 경우에는 뒤에서 M번째 문자부터 반대 방향으로 n개의 문자를 반환합니다.
SQL>SELECT SUBSTR('JUNG-SICK', 3, 3) NAME FROM dual ;
NAME ----------- NG-
-- 뒤에서부터 자를 SQL>SELECT SUBSTR('JUNG-SICK', -3, 3) NAME FROM dual ;
NAME ----------- ICK
LENGTH(char1)
문자열의 길이를 리턴 합니다.
SQL>SELECT LENGTH('JUNG-SICK') TEST FROM dual ;
TEST ---------- 9
REPLACE(char1, str1, str2)
REPLACE는 문자열의 특정 문자를 다른 문자로 변환 합니다.
SQL> SELECT REPLACE('JACK and JUE','J','BL') "Changes" FROM DUAL;
Changes -------------- BLACK and BLUE
SQL> SELECT REPLACE('JACK and JUE','JA','BL') "Changes" FROM DUAL
Changes ------------ BLCK and JUE
-- 대소문자를 구분한다는 것을 알수 있습니다. SQL>SELECT REPLACE('JACK and JUE','j','BL') "Changes" FROM DUAL
Changes ------------ JACK and JUE
INSTR
- 문자열이 포함되어 있는지를 조사하여 문자열의 위치를 반환합니다. - 지정한 문자열이 발견되지 않으면 0이 반환 됩니다.
-- 지정한 문자 OK가 발견되지 않아서 0이 반환 됩니다. SQL>SELECT INSTR('CORPORATE FLOOR','OK') "Instring" FROM DUAL
Instring ---------- 0
-- OR이 있는 위치 2를 반환 합니다. 왼쪽부터 비교를 한다는 것을 알 수 있습니다. SQL>SELECT INSTR('CORPORATE FLOOR','OR') "Instring" FROM DUAL
Instring ---------- 2
-- 왼쪽에서 3번째부터 시작을 해서 비교를 합니다. 2번째 OR의 위치가 반환 됩니다. SQL>SELECT INSTR('CORPORATE FLOOR','OR', 3) "Instring" FROM DUAL
Instring ---------- 5
-- 왼쪽에서 3번째부터 시작을 해서 비교를 하는데 OR이 두 번째 검색되는 지점의 위치를 반환 합니다. SQL> SELECT INSTR('CORPORATE FLOOR','OR', 3, 2) "Instring" FROM DUAL;
Instring ---------- 14
TRIM
- 특정한 문자를 제거 합니다. - 제거할 문자를 입력하지 않으면 기본적으로 공백이 제거 됩니다. - 리턴값의 데이터타입은 VARCHAR2 입니다.
-- 0을 제거 합니다. SQL>SELECT TRIM(0 FROM 0009872348900) "TRIM Example" FROM DUAL;
TRIM Example ------------ 98723489
-- 어떤 문자도 입력하지 않으면 기본적으로 공백이 제거 됩니다. -- TRIM을 사용한 위에 예제와 사용하지 않은 아래 예제의 결과 값이 다르게 나오는 것을 알 수 있습니다. SQL>SELECT NVL(TRIM (' '),'공백') "TRIM Example" FROM DUAL
TRIM Example ------------ 공백
SQL>SELECT NVL(' ','공백') "TRIM Example" FROM DUAL
TRIM Example ------------
LTRIM
SQL>SELECT LTRIM('xyxXxyLAST WORD','xy') "LTRIM example" FROM DUAL;
LTRIM example ------------ XxyLAST WORD
RTRIM
SQL>SELECT RTRIM('BROWNINGyxXxy','xy') "RTRIM example" FROM DUAL;
ResultSet rs = stmt.executeQuery( "SELECT LAST_NAME, FIRST_NAME FROM EMPLOYEES"); rs.last(); int numberOfRows = rs.getRow(); System.out.println("XYZ, Inc. has " + numberOfRows + " employees"); rs.beforeFirst(); while (next()) { . . . // retrieve first and last names of each employee }
부모창인 index.htm에 삽입 <html> <head> <title>..</title> <meta http-equiv="Content-Type" content="text/html; charset=euc-kr"> <script language="javascript"> <!-- function getCookie(name) { var Found = false var start, end var i = 0 // cookie 문자열 전체를 검색 while(i <= document.cookie.length) { start = i end = start + name.length // name과 동일한 문자가 있다면 if(document.cookie.substring(start, end) == name) { Found = true break } i++ } // name 문자열을 cookie에서 찾았다면 if(Found == true) { start = end + 1 end = document.cookie.indexOf(";", start) // 마지막 부분이라 는 것을 의미(마지막에는 ";"가 없다) if(end < start) end = document.cookie.length // name에 해당하는 value값을 추출하여 리턴한다. return document.cookie.substring(start, end) } // 찾지 못했다면 return "" } function openMsgBox() { var eventCookie=getCookie("memo"); if (eventCookie != "no") window.open('팝업창파일','_blank','width=300,height=300,top=50,left=150'); //팝업창의 주소, 같은 도메인에 있어야 한다. } openMsgBox(); //--> </script> </head> <body> </body> </html>
팝업창인 pop.htm에 삽입 <html> <head> <title></title> <head> <script language="JavaScript"> <!-- function setCookie( name, value, expiredays ) { var todayDate = new Date(); todayDate.setDate( todayDate.getDate() + expiredays ); document.cookie = name + "=" + escape( value ) + "; path=/; expires=" + todayDate.toGMTString() + ";" } function closeWin() { if ( document.myform.event.checked ) setCookie("memo", "no" , 1); // 1일 간 쿠키적용
부모창인 index.htm에 삽입 <html> <head> <title>..</title> <meta http-equiv="Content-Type" content="text/html; charset=euc-kr"> <script language="javascript"> <!-- function getCookie(name) { var Found = false var start, end var i = 0 // cookie 문자열 전체를 검색 while(i <= document.cookie.length) { start = i end = start + name.length // name과 동일한 문자가 있다면 if(document.cookie.substring(start, end) == name) { Found = true break } i++ } // name 문자열을 cookie에서 찾았다면 if(Found == true) { start = end + 1 end = document.cookie.indexOf(";", start) // 마지막 부분이라 는 것을 의미(마지막에는 ";"가 없다) if(end < start) end = document.cookie.length // name에 해당하는 value값을 추출하여 리턴한다. return document.cookie.substring(start, end) } // 찾지 못했다면 return "" } function openMsgBox() { var eventCookie=getCookie("memo"); if (eventCookie != "no") window.open('팝업창파일','_blank','width=300,height=300,top=50,left=150'); //팝업창의 주소, 같은 도메인에 있어야 한다. } openMsgBox(); //--> </script> </head> <body> </body> </html>
팝업창인 pop.htm에 삽입 <html> <head> <title></title> <head> <script language="JavaScript"> <!-- function setCookie( name, value, expiredays ) { //같은 창에서만 안띄움. //expiredays 값은 상관없음. document.cookie = name + "=" + escape( value ) + "; path=/;"; function closeWin() { if ( document.myform.event.checked ) setCookie("memo", "no" , 1); // 1일 간 쿠키적용
부모창인 index.htm에 삽입 _새로 브라우져를 열면 팝업창이 뜸 <html> <head> <title>..</title> <meta http-equiv="Content-Type" content="text/html; charset=euc-kr"> <script language="javascript"> <!-- function getCookie(name) { var Found = false var start, end var i = 0 // cookie 문자열 전체를 검색 while(i <= document.cookie.length) { start = i end = start + name.length // name과 동일한 문자가 있다면 if(document.cookie.substring(start, end) == name) { Found = true break } i++ } // name 문자열을 cookie에서 찾았다면 if(Found == true) { start = end + 1 end = document.cookie.indexOf(";", start) // 마지막 부분이라 는 것을 의미(마지막에는 ";"가 없다) if(end < start) end = document.cookie.length // name에 해당하는 value값을 추출하여 리턴한다. return document.cookie.substring(start, end) } // 찾지 못했다면 return "" } function openMsgBox() { var eventCookie=getCookie("memo"); if (eventCookie != "no") window.open('팝업창파일','_blank','width=300,height=300,top=50,left=150'); //팝업창의 주소, 같은 도메인에 있어야 한다. } openMsgBox(); //--> </script> </head> <body> </body> </html>
팝업창인 pop.htm에 삽입 <html> <head> <title></title> <head> <script language="JavaScript"> <!-- function setCookie( name, value, expiredays ) { //같은 창에서만 안띄움. //expiredays 값은 상관없음. document.cookie = name + "=" + escape( value ) + "; path=/;"; } function closeWin() { if ( document.myform.event.checked ) setCookie("memo", "no" , 1); // 1일 간 쿠키적용 } //--> </script> </head> <body onunload="closeWin()"> <form name="myform"> <input type="checkbox" name="event">다음부터 이 창을 열지않음 <input type=button value="닫기" omclick="self.close()"> </form> </body> </html>
<html> <head> <title>..</title> <meta http-equiv="Content-Type" content="text/html; charset=euc-kr"> <script language="JavaScript"> <!-- function redirectPage() { var url800x600 = "main1.html"; //800*600 에서 열릴문서 var url1024x768 = "main2.html"; //1024*768 에서 열릴문서 var url1152x864 = "main3.html"; //1152*864 에서 열릴문서
32.이미지사이즈에 맞게 새창이 열리며 휠마우스 효과를 내줌 그리고 메인(imgmove-main.html)에서 새창 띄워주는 부분
<SCRIPT LANGUAGE="JavaScript"> <!-- Begin function cnjOpen() { window.open('img-move.html','cnjOpenWin','width=350,height=250,toolbar=0,scrollbars=0,location=0,status=0,menubar=0,resizable=0'); } // End --> </script> <a href="javascript:cnjOpen()"><img src="test.jpg" width="200" height="150" border="0"></a> </center>
이 부분은 이미지를 보여줄 새창(img-move.html)입니다. <style> body {cursor:move;} </style> <body leftmargin=0 topmargin=0 marginwidth=0 marginheight=0 omLoad="fitWindowSize();">
<SCRIPT LANGUAGE="JavaScript"> // 이미지는 별도로 제공하지 않습니다. <!-- CGI 와 JavaScript가 만났을 때=CnJ ☞ http://www.cginjs.com --> <!-- CGI 와 JavaScript가 만났을 때=CnJ ☞ webmaster@cginjs.com --> var ie = 1; var windowX, windowY; var bLargeImage = 0; var x,y;