아래 명령 옵션 사용


        tar  cvf  archive.tar ./*  --exclude  ./data   .\*.avi
 
                      - data디렉토리와 확장자 mp3 화일만 빼고 전부다 tar로 묶는다
1. 부모창에서

<SCRIPT LANGUAGE="JavaScript">
<!--
 function getCookie(name) {
 var Found = false
 var start, end
 var i = 0
 
 while(i <= document.cookie.length) {
 start = i
 end = start + name.length
 
 if(document.cookie.substring(start, end) == name) {
 Found = true
 break
 }
 i++
 }
 
 if(Found == true) {
 start = end + 1
 end = document.cookie.indexOf(";", start)
 if(end < start)
 end = document.cookie.length
 return document.cookie.substring(start, end)
 }
 return ""
 }

function win_open(t_url) { //v2.0
 var noticeCookie=getCookie("i_don_want"); //i_don_want: 쿠키이름
 if (noticeCookie != "no")
     window.open(t_url,'','width=570,height=880,left=0,top=0')
}
function win_open2(t_url) { //v2.0
  window.open(t_url,'','width=800,height=580,left=0,top=0,scrollbars=yes,resizable=yes')

}
//-->
</SCRIPT>

<body  onload="javascript:win_open('popup.html')">


2. popup 화일에서 ( 여기서는 popup.html )


<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.cnjform.notice.checked ){
  setCookie("i_don_want", "no" , 1); //i_don_want: 쿠키이름
  self.close();
 }
}
</script>


<form name="cnjform" style="margin:0px;padding:0px;">
<table border="0" width="567">
  <tr>
    <td width="567">
     <p align="right">
      <input type="checkbox" name="notice" onclick="closeWin();"><font size=2><b>하루에 한번만 보기</b></font>
     </p>
    <td>
   </tr>
  </table>
</form>



사용자 삽입 이미지

자바 관련 사이트 정보

ls

해당 디렉토리의 화일들을 보여줌. (도스의 dir과 비슷)

▷ 사용법 : ls (옵션)

    ◆ option :

  • -a : .(마침표)으로 시작되는 파일을 숨기지 않음. *참고로 .(마침표)로 시작하는 파일은 hidden 파일임.
  • -c : 수정된 날자의 정렬로 보여줌.
  • -i : 각 파일의 고유 숫자를 보여줌.
  • -l : 길게 열거된 형식으로 사용함.
  • -o : group 정보를 제외한 리스트 형식을 보여줌.
  • -r : 정렬된 역순으로 보여줌.
  • -s : 블록의 형태로 각 파일의 크기를 보여줌.
  • -S(대문자) : 파일사이즈 순서로 정렬함.
  • -t : 수정된 날짜 순서로 정렬함.
  • -u : 최근에 접속한 순서로 정렬함.
  • -1(숫자) : 한줄로 보여줌

cp

파일을 복사 한다. ms-dos 에서 copy와 기능과 동일.

▷ 사용법 : cp (옵션) [복사할 파일명 혹은 디렉토리] [대상 파일]

    ◆ option :

  • -a : -dpR의 기능을 합한 것임.
  • -d : 연결을 보존함.
  • -p : 속성을 보존함.
  • -l : 복사를 하는 대신 연결함
  • -s : 복사하는 대신 특정 링크를 만든다.
  • -u : 새롭게 갱신된 파일만 복사함.
  • -v : 작업된 내용을 보여줌.

rm

파일을 삭제 한다. ms-dos 에서 delete 기능과 동일.

▷ 사용법 : rm (옵션) 삭제할 파일명 혹은 디렉토리]

    ◆ option :

  • -f : 무조건 지움. 아무런 메시지를 나타내지 않는다.
  • -i : 어떤 작업을 하기 전에 무조건 메시지를 묻는다.
  • -r : 파일을 포함하고 있는 디렉토리도 삭제한다.
  • -v : 작업된 내용을 보여줌.

mkdir

디렉토리를 만든다. ms-dos 에서 md 기능과 동일.

▷ 사용법 : mkdir (옵션) [디렉토리]

    ◆ option :

  • -m : 퍼미션 설정을 함께함. 단, 777 모드는 불허.
  • -v : 작업된 내용을 보여줌.

mv

파일 혹은 디렉토리를 만들거나 이름을 변경한다.

▷ 사용법 : mkdir (옵션) [소스 디렉토리 혹은 파일] [신규 디렉토리 혹은 파일]

    ◆ option :

  • -m : 퍼미션 설정을 함께함. 단, 777 모드는 불허.
  • -v : 작업된 내용을 보여줌.

cd

디렉토리 이동. (도스의 cd 기능과 같음)

chmod

파일 혹은 디렉토리의 속성값을 설정함.

▷ 사용법 : chmod (옵션) [디렉토리 혹은 파일]

    ◆ option :

  • -c : 퍼미션 설정 시 작업하는 내용을 출력함.
  • -v : 작업된 내용을 보여줌.

* 참고 : ls -al 의 명령어를 사용하면 -rwxr--r-- 와 같이 파일 앞에 속성값이 출력이 된다.
이것은 다음과 같이 해설할 수 있다.

r : 4 (읽기) |w : 2 (쓰기) | x : 1 (실행) 을 뜻한다.

du

파일 혹은 디렉토리의 크기를 보여 줌.

▷ 사용법 : du (옵션) [소스 디렉토리 혹은 파일]

    ◆ option :

  • -a : 디렉토리가 아닌 파일의 쓰여진 줄수를 출력한다.
  • -b : bytes 의 크기로 출력함.
  • -c : 각 파일 및 디렉토리의 내부의 파일 각각의 크기를 출력함.
  • -k : kilobytes 로 출력한다.
  • -m : megabytes 로 출력한다.
  • -l : 파일 혹은 디렉토리의 셀 수 있는 크기를 출력함.
  • -s : 합계를 출력한다.

passwd

자신의 패스워드 바꾸기

▷ 사용법 : passwd

* passwd 를 입력하면 다음과 같이 진행된다.

[shell@Server Name]$ passwd
[shell@Server Name]$ Changing password for user Your_ID
[shell@Server Name]$ (current) UNIX password: (현재 사용중인 비밀번호)
[shell@Server Name]$ New UNIX password: (새로 갱신할 비밀번호)
[shell@Server Name]$ Retype new UNIX password: (확인을 위한 재입력)

*주의 사항 : 새로 비밀번호를 입력하는 것은 특수부호가 포함된 8자 이상의 어려운 비밀번호이어야 함.

echo

텍스트의 라인을 보여줌.

▷ 사용법 : echo (옵션) [텍스트]

    ◆ option :

  • -d : 새로운 라인의 끝을 출력하지 않는다.
  • -e : 아래의 \문자 의 내용을 가능하게 한다.
    \a : alert (bell) 알림(소리)
    \b : backspace
    \n : 새로운 줄을 생성한다.
    \t : 수평탭 기능.
    \v : 수직탭 기능.
    \\ : 백슬래쉬 를 사용할 수 있도록 한다.

* 귀하의 홈디렉토리의 절대 경로를 알아보는 방법.

[shell@Server Name]$echo $HOME (반드시 대문자)

* 귀하께서 사용할 수 있는 경로를 알아보는 방법.

[shell@Server Name]$echo $PATH (반드시 대문자)


from WEBSVC.com

자바스크립트 한글 입력 비활성화 하기

<input type="text" style="ime-mode:disabled">

자바스크립트 한글 입력 시작

<input type=text style="ime-mode:active;" size=20>

 
Syntax

HTML : { ime-mode : sMode }

JavaScript : object.style.imeMode [ = sMode ]

 

* sMode ( active | inactive | disabled | auto )

active : 한글 모드으로 변환 이후에는 한글 모드

inactive : 영문모드로 복귀 후 이후에는 영문 모드

disabled : 영문모드만 가능

auto : 자동으로

 

Example

<INPUT TYPE="text" STYLE="ime-mode:active">

뭐 간단한 방법이지만 이런게 나중에 찾으려고 보면 의뢰로 시간이 걸리는지라 등록해놔야 나중에 편함....

실행창(도스창)에서

시작하기
oracle/oracle92/bin으로 이동,
lsnrctl start (엔터)
sqlplus /nolog (엔터)
SQL>connect sys/비밀번호 as sysdba; (엔터)
SQL>startup open; 이렇게 하면 시동.

종료는
sqlplus /nolog
SQL>connect sys/비밀번호 as sysdba;
SQL>shutdown immediate;

'프로그래밍Tips' 카테고리의 다른 글

[JavaScript]폼에서 한글입력,영문입력 지정하기  (0) 2007.02.21
[티스토리]기능 추가하기...  (0) 2007.01.26
오라클 Study  (0) 2007.01.03

1. Snap Preview 
   - 아래 코드를 skin.html  <head> 태그 사이에 넣음...   글 작성시 링크만 걸면 프리뷰 보임

         <script defer="defer" id="snap_preview_anywhere" type="text/javascript" src="http://spa.snap.com/snap_preview_anywhere.js?ap=1&amp;key=813ffe89f58144727d4a238c8851072a&amp;sb=1&amp;domain=www.janghwan2.pe.kr"></script>


2. Google Adsense 광고/ 캐리어블로그 광고
    - 본문 중간에
     <div class="article">
     
      <div class="author">
       <span class="text">Posted by </span>
      </div>
     </div>

     이렇게 된 부분을 찾아서 아래코드로 변경


     <div class="article">

<!---구글 애드센스 --->
<table width="300" height="250" align="right"border="0" cellpadding="0" style='background-image:url();background-repeat:no-repeat;'>
<tr>
<td valign="top" style="padding-top:5px;padding-left:5px;">
<script type="text/javascript">
<!--
google_ad_client = "pub-2798396266877683";
/* 300x250, 작성됨 08. 2. 25 */
google_ad_slot = "3223229224";
google_ad_width = 300;
google_ad_height = 250;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</td></tr>
</table>
     
      <div class="author">
       <span class="text">Posted by </span>
      </div>
     </div>

<!---구글 애드센스 --->
<center>
<TABLE>
<TR>
<TD><script type="text/javascript"><!--
google_ad_client = "pub-2798396266877683";
/* 468x60, 작성됨 08. 2. 25 */
google_ad_slot = "9884627527";
google_ad_width = 468;
google_ad_height = 60;
//-->
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</TD>
</TR>
</TABLE>
</center>

<!---캐리어블로그 --->
<center>
<iframe src="http://careerblog.scout.co.kr/mypage/contents.asp?board_id=699&form_type=2&display_outline=1&display_size=100&line_cnt=3&top_title=1&char_cnt=28&uid=careerblog4161&em=itislord%40empal%2Ecom" width="100%" height="37" border="0" frameborder="0" scrolling="no" marginheight="0" marginwidth="0"></iframe>
</center>



3.  구글 검색 버튼 달기
   - 본문중에
            <s_sidebar_element>
            <!-- 검색 모듈 -->
     부분을 찾아서 기존 검색버튼은 막고 아래 코드로 변경


<!-- SiteSearch Google -->
<form method="get" action="http://www.google.co.kr/custom" target="google_window">
<table border="0" bgcolor="#ffffff">
<tr><td nowrap="nowrap" valign="top" align="left" height="32">
<input type="hidden" name="domains" value="itislord.tistory.com"></input>
<label for="sbi" style="display: none">검색어를 입력하십시오.</label>
<input type="text" name="q" size="14" maxlength="255" value="" id="sbi"></input>
<label for="sbb" style="display: none">검색양식 제출</label>
<input type="submit" name="sa" value="검색" id="sbb"></input>
</td></tr>
<tr>
<td nowrap="nowrap">
<table>
<tr>
<td>
<input type="radio" name="sitesearch" value="" id="ss0"></input>
<label for="ss0" title="웹 검색하기"><font size="-1" color="#000000">Google</font></label></td>
<td>
<input type="radio" name="sitesearch" value="itislord.tistory.com" checked id="ss1"></input>
<label for="ss1" title="검색 itislord.tistory.com"><font size="-1" color="#000000">장환이네</font></label></td>
</tr>
</table>
<input type="hidden" name="client" value="pub-2798396266877683"></input>
<input type="hidden" name="forid" value="1"></input>
<input type="hidden" name="channel" value="5653443167"></input>
<input type="hidden" name="ie" value="EUC-KR"></input>
<input type="hidden" name="oe" value="EUC-KR"></input>
<input type="hidden" name="safe" value="active"></input>
<input type="hidden" name="flav" value="0000"></input>
<input type="hidden" name="sig" value="03Ru6XZmXkvbt-zy"></input>
<input type="hidden" name="cof" value="GALT:#008000;GL:1;DIV:#336699;VLC:663399;AH:center;BGC:FFFFFF;LBGC:336699;ALC:0000FF;LC:0000FF;T:000000;GFNT:0000FF;GIMP:0000FF;FORID:1"></input>
<input type="hidden" name="hl" value="ko"></input>
</td></tr></table>
</form>
<!-- SiteSearch Google -->


4.  공부방 후원 배너달기
     - 본문중에
        </s_sidebar>
        </div>
        <!-- sidebar close -->
       이 부분을 찾아서 아래 코드로 변경


        </s_sidebar>

<!-- 공부방 배너 -->
<div align="center"><table border=0><tr><td><EMBED src="http://www.blogkorea.net/bnmsvc/partner/donorscamp/CounterBanner3.swf" quality=high wmode=transparent menu=false bgcolor=#FFFFFF  WIDTH="160" HEIGHT="91" NAME="http://www.blogkorea.net/bnmsvc/partner/donorscamp/CounterBanner3.swf" ALIGN="" TYPE="application/x-shockwave-flash" PLUGINSPAGE="http://www.macromedia.com/go/getflashplayer" FlashVars="blog_url=aHR0cDovL2l0aXNsb3JkLnRpc3RvcnkuY29t&blog_nick=%EC%9E%A5%ED%99%98%EC%9D%B4%EB%84%A4&user_name=%EC%9E%A5%ED%99%98%EC%9D%B4%EB%84%A4" ></EMBED></td></tr></table></div>

  </div>
  <!-- sidebar close -->



'프로그래밍Tips' 카테고리의 다른 글

오라클 실행창(도스창)에서 실행, 종료하기  (0) 2007.02.21
오라클 Study  (0) 2007.01.03
오라클 날짜형식 다루기...  (0) 2007.01.03

상세보기

Introduction to Oracle: SQL*Plus and PL/SQL(SPL)


0. 소개(-11, 00:18:34)

1. 기본적인 SQL 문장 작성(-23, 00:41:50)

2. 데이터 제한과 정렬(-24, 00:42:31)

3. 단일행 함수(-35, 01:15:15)

4. 다중테이블로 부터 데이터 디스플레이(-19, 00:38:10)

5. 그룹 함수를 사용한 데이터 집계(-22, 00:35:47)

6. 서브쿼리(Subquery)(-13, 00:22:14)

7. 다중 열 서브쿼리(Subquery)(-9, 00:13:09)

8. 데이터 조작(-19, 00:26:44)

9. 트랜잭션(-14, 00:33:22)

10. 테이블 생성과 관리(-20, 00:47:24)

11. 제약조건 포함(-23, 00:55:43)

12. 뷰 생성(-22, 00:37:03)

13. 시퀀스(-13, 00:23:24)

14. 인덱스(-11, 00:21:22)

15. 동의어(-4, 00:03:54)

16. 사용자 접근 제어(-17, 00:38:33)

17. SQL*Plus명령(-17, 00:44:26)

18. PL/SQL 환경(-8, 00:32:34)

19. PL/SQL 변수 선언(-9, 00:25:54)

20. PL/SQL에서의 SELECT 문장(-13, 00:33:28)

21. IF 문(-14, 00:31:59)

22. PL/SQL 블록 구문과 지침(-9, 00:20:41)

23. 커서(cursor)(-14, 00:31:40)

24. 예외처리(-15, 00:45:56)

25. PL/SQL 레코드(-11, 00:36:05)

     

상세보기

Oracle Administration(ADM)


1. 오라클 구조의 구성요소(-21, 02:31:09)

2. Oracle 서버 시작(-14, 00:41:43)

 

3. 오라클 인스턴스 관리(-25, 02:50:45)

 

4. 데이터베이스 생성(-21, 01:43:37)

 

5. 데이터 딕셔너리 뷰 및 표준 패키지 생성(-19, 01:11:18)

 

6. 콘트롤 파일 관리(-8, 00:31:45)

 

7. 리두 로그 파일 관리(-28, 01:32:07)

 

8. 테이블스페이스와 데이터 파일 관리(-23, 01:45:25)

 

9. 스토리지 구조 및 관련성(-20, 01:25:14)

 

10. 롤백 세그먼트 관리(-27, 01:50:47)

 

11. 임시 세그먼트 관리(-11, 00:36:09)

 

12. 테이블 관리(-31, 02:03:29)

 

13. 인덱스 관리(-21, 01:43:00)

 

14. 데이터 무결성 관리(-21, 01:38:27)

 

15. 클러스터와 인덱스화된 테이블 사용(-20, 01:30:09)

 

16. 데이터 로딩 및 재구성(-32, 01:54:24)

 

17. 사용자 관리(-13, 00:46:49)

 

18. 프로파일 관리(-19, 00:52:51)

 

19. 권한 관리(-18, 00:54:30)

 

20. 롤 관리(-19, 00:59:52)

 

21. 감사(Auditing)(-14, 01:03:49)

 

22. 국가별 언어 지원(National Language Support)(-19, 00:30:49)

 
 

상세보기

Oracle Network Administration(NET)

 

1. 네트워크 개요(-19, 00:22:26)

 

2. 기본적인 NET8 구조(-22, 00:19:36)

 

3. Net8 서버측의 기본적인 구성(-20, 00:32:25)

 

4. Net8 클라이언트측의 기본적인 구성 (-20, 00:24:52)

 

5. Oracle Names 사용법 및 구성(-33, 00:30:59)

 

6. OEM 사용 및 구성을 위한 Oracle Intelligent Agent(-16, 00:08:27)

 

7. 다중 스레드 서버의 사용법 및 구성(-23, 00:25:12)

 

8. 접속 관리자의 사용법 및 구성(-15, 00:14:56)

 

9. 네트워크 환경 문제 해결(-17, 00:09:02)

 

10. 네트워크 환경에서의 보안(-19, 00:10:58)

 

11. Oracle8i에서 추가된 기능(-19, 00:31:14)

 
 

상세보기

Oracle Backup & Recovery Workshop(BRW)


1. 백업과 복구 고려사항(-9, 00:13:22)

2. 오라클 복구 구조와 프로세스(-15, 01:36:12)

3. 오라클 백업 및 복구 구성(-21, 00:39:40)

4. Oracle Recovery Manager없이 물리적 백업(-19, 00:33:37)

5. 장애의 유형과 문제해결(-20, 00:36:49)

6. 오라클 데이터베이스의 완전 복구(-23, 01:10:38)

7. Archiving 이용한 불완전 오라클 복구(-22, 00:47:16)

8. 오라클 EXPORT 및 IMPORT 유틸리티(-21, 00:34:00)

9. 오라클 Recovery Manager 개요(-22, 00:40:27)

10. 오라클 복구 카탈로그(Recovery Catalog) 유지(-29, 00:36:02)

11. Oracle Recovery Manager를 사용하는 물리적 백업(-38, 00:59:00)

12. RMAN을 사용한 복원과 복구(-9, 00:17:25)

13. 오라클 복구에 대한 추가 사항(-13, 00:27:07)

14. 오라클 대기(Standby) 데이터베이스(-16, 00:26:06)

15. 문제해결을 위한 Oracle 유틸리티(-25, 00:25:12)

상세보기

Oracle Performance Tuning Workshop(PTW)


0. 과정 소개(-2, 00:05:24)

1. 튜닝 개요(-7, 00:14:38)

2. 오라클 경고, 추적 파일 및 이벤트(-16, 00:31:23)

3. 유틸리티 및 동적 성능 뷰(-32, 00:33:40)

4. SQL 튜닝(-21, 00:45:00)

5. 공유 풀 튜닝(-29, 01:14:34)

6. 버퍼 캐쉬 튜닝(-20, 01:06:35)

7. 리두로그 버퍼 튜닝(-11, 00:31:09)

8. 데이터베이스 구성 및 I/O 이슈(-26, 00:59:35)

9. 오라클 블록의 효율적인 사용(-23, 01:06:58)

10. 정렬 작업 최적화(-13, 00:47:51)

11. 롤백 세그먼트 튜닝(-19, 00:50:40)

12. Lock 경합 감시 및 탐지(-17, 00:51:25)

13. 경합 이슈(-17, 00:42:03)

14. 다른 애플리케이션에 대한 튜닝 고려사항(-54, 01:29:02)

15. 운영체제 튜닝(-11, 00:19:05)

16. 로드 최적화(-13, 00:39:02)

상세보기

Java Programming(JAPL)

출처 : Tong - sbbokz님의 ORACLE통

'프로그래밍Tips' 카테고리의 다른 글

[티스토리]기능 추가하기...  (0) 2007.01.26
오라클 날짜형식 다루기...  (0) 2007.01.03
[JSP] Cookie  (0) 2006.12.05
날짜 다루기
1) 현재의 날짜와 시간

SYSDATE을 사용합니다. 요번에 마친 프로젝트가 있는데, 파워빌더로 ORACLE DB연결해서 사용했거든요. 현재 날짜를 얻기 위해 다음과 같이 사용했어요.

SELECT SYSDATE
INTO :lsToday
FROM DUAL ;

출처 : Tong - sbbokz님의 QUERY TIP통



날짜를 문자열로 변환하기
형식 : TO_CHAR( date_column_name, format )
FORMAT은 단일 인용부호로 둘러쌓여야 합니다.
예) SELECT ename, TO_CHAR( birthday, 'YYYY/MM/DD' )
     FROM std_db
     ORDER BY birthday ;
--> 생년월일 순으로 Sort되며 "1971/12/01"과 같은 Format으로 Display됩니다.
TO_CHAR 함수를 이용하여 문자열로 변환되면, SUBSTR과 같은 다른 문자열 함수내에서 인수로 사용할 수 있습니다.
예) SELECT ename, SUBSTR( TO_CHAR( birthday, 'YYYY/MM/DD' ), 1, 4 )
     FROM std_db
     ORDER BY birthday ;
--> 생년월일에서 연도만 Return합니다.  
년월일을 한글로 나타나게 하려면 다음과 같이 표현하면 됩니다.
예) SELECT ename, TO_CHAR( birthday, 'YYYY"년"MM"월"DD"일"' )
     FROM std_db
     ORDER BY birthday ;

4) 문자열을 날짜로 변환하기

형식 : TO_DATE( string_column_name, format )
사용법은 TO_CHAR와 비슷합니다.
5) 시분초의 표현

예) SELECT TO_CHAR( birthday, 'HH:MI:SS' )
     FROM std_db ;
--> 태어난 시간을 "09:33:21"과 같은 형태로 Display합니다.
   SELECT TO_CHAR( birthday, 'HH24:MI' )
     FROM std_db ;
--> 태어난 시간을 "23:21"과 같은 형태로 시와 분을 Display합니다.
시간을 24시간 형태로 표현하지 않고 AM, PM 형태로 표현하려면
예) SELECT TO_CHAR( birthday, 'HH:MI:SS PM' )
     FROM std_db ;
--> 현재 시간이 오전인지 오후인지에 상관없이 PM을 Format에 추가하면 됩니다.
6) 날짜의 더하기와 빼기

ORACLE에서는 기존의 한 날짜로부터 다른 날짜를 계산하기 위해 더하기나 빼기를 할 수 있어요~! 오늘 딸기아빠가 된 우성이가 딸기의 백일을 알고 싶으면 다음과 같이 조회하면 되죠~!

SELECT SYSDATE + 100 FROM DUAL ;

물론 두 날짜 사이의 더하기와 빼기도 가능하지요~!

출처 : Tong - sbbokz님의 QUERY TIP통

'프로그래밍Tips' 카테고리의 다른 글

오라클 Study  (0) 2007.01.03
[JSP] Cookie  (0) 2006.12.05
[JSP] Session  (0) 2006.12.05
1. Cookie란?

     HTTP 프로토콜은 클라이언트의 요청에 대한 응답을 하고 나면 해당 클라이언트와의 연결을

   지속하지 않는다. 상태에 대한 지속적인 연결이 없기 때문에 이러한 부분을 해결 하기 위해서

   웹 서버가 클라이언트에게 보내는 작은 정보의 조각이며, 하나의 쿠키에는 쿠키가 어디에서

   왔는지 또 언제까지 유요한지 등이 표시되어 진다. 클라이언트가 다시 사이트를 방문할 때는

   설정된 쿠키 정보를 HTTP 헤더에 포함하여 방문하게 된다. 웹 서버는 클라이언트의 요청 속에

   포함되어 있는 쿠키의 정보를 읽어서 어떤 클라이언트 인지 판단할 수 있게 된다.

   보통 하나의 쿠키에 담을 수 있는 Byte 수는 4kb이다. 쿠기의 단점은 웹 브라우저가 거쳐간

   웹 사이트 및 개인의 정보가 기록되기 때문에 개인의 사생활을 침해살 소지가 있으며 웹

   브라우저 자체에 쿠키 거부 기능이 있다.


2. 쿠키의 설정 및 사용

     javax.servlet.http 패키지에 있는 Cookie 클래스를 사용한다.


    ▷ 생성자 메소드

       Cookie(string cookieName, String cookie Value)

        ex) Cookie cookie = new Cookie("id", "id_value");

     쿠키를 생성 한 후에는 반드시 response 객체의 addCookie() 메소드를 사용해서 쿠키를
     추가해 주어야 한다.

         ※ response.addcookei(cookie);

    ▷ 설정 메소드

        cookie.setMaxAge(365*24*60*60);    // 쿠키 유효시간 설정(초단위) - 365일

        cookie.setpath("/");                        // 모든 페이지에서 접근 가능하게 경로 설정

        cookie.setValue("id_value_change"); //쿠키에 새로운 값 설정


    ▷ 쿠키 객체 얻기

        Cookie 배열 형태로 모두 얻어 온다.

        Cookie[] cookies = request.getCookies();


     ▷ 쿠키 값 얻기

         String name = cookies[0].getName();    // 쿠키 변수명을 얻는다.

         String value  = cookies[0].getValue();   // 쿠키 값을 얻는다.


     ▷ 쿠키 삭제

         cookies[0].setMaxAge(0);                   // 유효 기간을 0으로 설정한다.

'프로그래밍Tips' 카테고리의 다른 글

오라클 날짜형식 다루기...  (0) 2007.01.03
[JSP] Session  (0) 2006.12.05
[본문스크랩]자바 문자열 처리 10가지 팁....  (1) 2006.05.06
1.Session 이란?

    세션은 특정 웹 브라우저 사용자와 웹 서버와 HTTP 연결들을 하나로 이어준다.(웹 서버쪽의

   웹 컨테이너에 상태를 유지하기 위한 정보를 저장한다.)


   세션은 javax.servlete.http 패키지의 HttpSession 인터페이스를 통해서 사용할 수 있으며,  

   웹 클라이언트와 웹 서버의 연결이고 서버측에 클라이언트 정보를 저장하는 임시 공간이다.

   대부분의 웹 사이트는 회원가입후 로그인을 하고 난 후 컨테츠를 이용하게 할 수 있으며 쇼핑몰

   에서는 장바구니 기능이 있다. 이와 같은 기능을 세션을 통해서 처리할 수 있다.


   서버는 각각의 클라이언트로부터 발생한 요청에 대해서 특정한 ID를 부여한다. 이후에 이 ID를

   클라이언트에서 발생한 요청들과 비교해서 같은 ID인지를 구별하여, 이 ID라는 식별자에 특별한

   값을 넣을 수도 잇다. 즉, ID를 다루는 것이 세션이라고 할 수 있다.


2. Session 속성


    ▷ javax.servelt.http.HttpSession  클래스 메소드

        리턴형               메소드                                설명
       --------------------------------------------------------------------------------
        Object         getAttribute(String name)        세션에 설정된 name에 해당하는 값을 Object
                                                        타입으로 반환한다. 없으면 null 반환

         void            setAttribute(String name,       세션에 name이란 이름으로 객체를 설정한다.
                                     Object value)

        Enumeration   getAttributes()                    세션에 설정된 객체들의 이름을 반환한다.

          Long           getCreationTime()               세션이 생성된 시각을 반환한다.
                                                         1970.1.1기준으로 현재 세션이 생성된 시간까지

          String          getId()                      세션의 식별자(고유 ID)를 반환한다.

          Long           getLastAccessedTime()      마지막으로 세션을 사용한 시각을 반환한다.

          int               getMaxInactiveInterval()      세션을 유지하는 최대시간(초)을 반환한다.

         void    setMaxInactiveInterval(int interval) 세션을 유지하는 최대시간을 설정한다.

        boolean          isNew()                           세션이 새로운 것인지 여부를 반환.[true/false]

         void          removeAttribute(String name)   name으로 지정한 속성 값을 삭제한다.

         void               invalidate()                       세션을 제거한다.



3. Session 설정 및 사용


   ▷ session에 값 저장

      * session.setAttribute(String name, Objet value);

       -->session.setAttribute("id", "id_value");


   ▷ session 값 얻기

       * Object getAttribute(String name);

       --> String id = (String)session.getAttribute("id");  

           // id라는 세션 변수가 가지고 있는 값 얻는다.


    ▷ session 값 삭제

       * session.removeAttribute("id"); // id라는 세션 변수가 가지고 있는 값 삭제

     ▷ session 완전 삭제

        * session.invalidate();

      

4. 쿠키와 세션의 차이점

    * 쿠키와 세션은 둘다 지속적으로 정보를 저장한다.

     * 저장소가 다르다.

       쿠키 : 클라이언트 브라우저에 저장, 보안에 취약하지만 서버 부담이 적다.

       세션 : JSP 컨테이너에 저장, 세션은 세션 ID만 클라이언트에 보내고 그 외의 모든

               정보를 우베 컨테이너 안에 저장한다. 보안에 강점이 있지만 서버에 부담을 준다.

     * 저장할 수 있는 값에 차이가 있다.

       쿠키 : 문자열만 가능하다.

       세션 : 자바의 모든 객체를 저장할 수 있다.

      
목차

1.3000을 3,000으로 변경
2.문자열에서 특정위치 문자의 유니코드 값을 알아내는 방법
3.입력 받는 값이 숫자로만 되어 있는지 문자로만 되어있는지를 아는 방법
4.절대 경로가 모두 명시된 파일 이름에서 파일 이름만 추출해내는 방법
5.한글문자열을 일정한 길이만큼 보여줄 때 마지막에 한글이 잘리지 않게하는 방법
6.소숫점 처리 (자리수, 올림, 내림)
7.대문자 -> 소문자, 소문자 -> 대문자
8.E-Mail 주소 Check
9.데이터 구조
10.Date & Time 출력



1.3000을 3,000으로 변경



NumberFormat df = new DecimalFormat("#,##0.##");
String t = df.format(3000);
System.out.println(t);



2.문자열에서 특정위치 문자의 유니코드 값을 알아내는 방법



NumberFormat df = new DecimalFormat("#,##0.##");
String t = df.format(3000);
System.out.println(t);



3.입력 받는 값이 숫자로만 되어 있는지 문자로만 되어있는지를 아는 방법


boolean number = allNumbers("1234567890");
boolean nonascii = containsNonASCII("2 1 은 2");
boolean onlyascii = containsOnlyASCII("2 2 는 4");
System.out.println(number + ", " + nonascii + ", " + onlyascii);

public static boolean allNumbers(String s) {
    if (s == null || s.length() == 0)
        return false;
    char c;
    for (int i = 0; i < s.length(); i++) {
        c = s.charAt(i);
        if (c < '0' || c > '9')
            return false;
    }
    return true;
}

public static boolean containsNonASCII(String s) {
    if (s == null || s.length() == 0)
        return false;
    char c;
    for (int i = 0; i < s.length(); i++) {
        c = s.charAt(i);
        if ((c & 0xFF80) != 0)
            return true;
    }
    return false;
}

public static boolean containsOnlyASCII(String s) {
    if (s == null || s.length() == 0)
        return false;
    char c;
    for (int i = 0; i < s.length(); i++) {
        c = s.charAt(i);
        if ((c & 0xFF80) != 0)
            return false;
    }
    return true;
}



4.절대 경로가 모두 명시된 파일 이름에서 파일 이름만 추출해내는 방법



// 예를 들어 인수로 /home/foo/bar/xyz.tar.gz 가 주어진다면 결과값으로
// xyz.tar.gz 를 구하고자 합니다.
// 패스중 디렉토리 부분은 dir 에, 실제 이름은 filename 에 들어갑니다.
String path = "/home/foo/bar/xyz.tar.gz";
String filename = path;
String dir = "";
int n = filename.lastIndexOf("/");
if (n >= 0) {
    dir = filename.substring(0, n);
    filename = filename.substring(n + 1);
    if (n == 0)
        dir = "/";
}
System.out.println("path = " + path);
System.out.println("Tokenizing...    dir = " + dir + ", filename = " + filename);

////////////////////////////////////////////////////////////////////////////
// 예를 들어 인수로 C:\\\home\\foo\\bar\\abc.zip 가 주어진다면 결과값으로
// abc.zip 를 구하고자 합니다.
// 패스중 디렉토리 부분은 dir2 에, 실제 이름은 filename2 에 들어갑니다.
String path2 = "C:\\home\\foo\\bar\\abc.zip";
String filename2 = path2;
String dir2 = "";
int n2 = filename2.lastIndexOf("\\");
if (n2 >= 0) {
    dir2 = filename2.substring(0, n2);
    filename2 = filename2.substring(n2 + 1);
    if (dir2.endsWith(":"))
        dir2 += "\\";
}
System.out.println("path2 = " + path2);
System.out.println("Tokenizing...    dir2 = " + dir2 + ", filename2 = " + filename2);



5.한글문자열을 일정한 길이만큼 보여줄 때 마지막에 한글이 잘리지 않게하는 방법


자바의 경우 해당 사항 없음

단, 스트링으로 바꾸기 전의 바이트 배열이라면 30바이트 이내로 자르기

byte[] bytes = "싱글벙글 아줌마 투덜투덜 아저씨 아줌마가 펼치는 꿈속같은 이야기..".getBytes();
byte[] cuttedBytes = cutBytes(bytes, 30);
String str = new String(cuttedBytes);
System.out.println("[" + str + "]");

public static byte[] cutBytes(byte[] data, int cutLen) {
    byte[] tmp;
    int len = data.length;
    if (len <= cutLen) {
        tmp = new byte[len];
        System.arraycopy(data, 0, tmp, 0, len);
        return tmp;
    }
    else if (cutLen > 0) {
       int pos = cutLen - 1;
       while (pos > 0 && (data[pos] & 0x80) == 0x80) {
           pos--;
       }
       if ((cutLen - pos) % 2 == 0) {
           tmp = new byte[cutLen];
           System.arraycopy(data, 0, tmp, 0, cutLen);
       }
       else {
           tmp = new byte[cutLen - 1];
           System.arraycopy(data, 0, tmp, 0, cutLen - 1);
       }
       return tmp;
    }
    return null;
}

--MORE--

6.소숫점 처리 (자리수, 올림, 내림)


코드
--------------------------------------------------------------
double num = 3.141592654;
MumberFormat df = new DecimalFormat("#.00");
String str = df.format(num);
System.out.println(str);
--------------------------------------------------------------

결과
--------------------------------------------------------------
3.14
--------------------------------------------------------------

서비스 하나더 (올림,내림)

코드
--------------------------------------------------------------
int ceil = (int) Math.ceil(3.5);
int floor = (int) Math.floor(3.5);
System.out.println("올림 : " + ceil);
System.out.println("내림 : " + floor);
--------------------------------------------------------------

결과
--------------------------------------------------------------
올림 : 4
내림 : 3
--------------------------------------------------------------

////////////////////////////////////////////////////////////////////////////////////////
// @(#)TruncateTest.java  2003/08/22
//
//     절삭(truncate), 반올림(round), 잘라올림(ceil)을 잘라내림(floor)을 자유자재로
//
public class TruncateTest {
    public void doTest() {
        ///////////////////////////////////////////////////////
        // 절삭(truncate) 테스트
        System.out.println(truncate(Math.PI, 1));
        System.out.println(truncate(Math.PI, 2));
        System.out.println(truncate(Math.PI, 3));
        System.out.println(truncate(Math.PI, 4));
        System.out.println(truncate(Math.PI, 5));
        System.out.println(truncate(-Math.PI, 1));
        System.out.println(truncate(-Math.PI, 2));
        System.out.println(truncate(-Math.PI, 3));
        System.out.println(truncate(-Math.PI, 4));
        System.out.println(truncate(-Math.PI, 5));
        System.out.println(truncate(Math.PI*100000, 0));
        System.out.println(truncate(Math.PI*100000, -1));
        System.out.println(truncate(Math.PI*100000, -2));
        System.out.println(truncate(Math.PI*100000, -3));
        System.out.println(truncate(Math.PI*100000, -4));
        System.out.println(truncate(Math.PI*100000, -5));
        System.out.println(truncate(-Math.PI*100000, 0));
        System.out.println(truncate(-Math.PI*100000, -1));
        System.out.println(truncate(-Math.PI*100000, -2));
        System.out.println(truncate(-Math.PI*100000, -3));
        System.out.println(truncate(-Math.PI*100000, -4));
        System.out.println(truncate(-Math.PI*100000, -5));

        System.out.println(ceil(Math.PI, 1));
        System.out.println(ceil(Math.PI, 2));
        System.out.println(ceil(Math.PI, 3));
        System.out.println(ceil(Math.PI, 4));
        System.out.println(ceil(Math.PI, 5));
        System.out.println(ceil(-Math.PI, 1));
        System.out.println(ceil(-Math.PI, 2));
        System.out.println(ceil(-Math.PI, 3));
        System.out.println(ceil(-Math.PI, 4));
        System.out.println(ceil(-Math.PI, 5));
        System.out.println(ceil(Math.PI*100000, 0));
        System.out.println(ceil(Math.PI*100000, -1));
        System.out.println(ceil(Math.PI*100000, -2));
        System.out.println(ceil(Math.PI*100000, -3));
        System.out.println(ceil(Math.PI*100000, -4));
        System.out.println(ceil(Math.PI*100000, -5));
        System.out.println(ceil(-Math.PI*100000, 0));
        System.out.println(ceil(-Math.PI*100000, -1));
        System.out.println(ceil(-Math.PI*100000, -2));
        System.out.println(ceil(-Math.PI*100000, -3));
        System.out.println(ceil(-Math.PI*100000, -4));
        System.out.println(ceil(-Math.PI*100000, -5));

        System.out.println(floor(Math.PI, 1));
        System.out.println(floor(Math.PI, 2));
        System.out.println(floor(Math.PI, 3));
        System.out.println(floor(Math.PI, 4));
        System.out.println(floor(Math.PI, 5));
        System.out.println(floor(-Math.PI, 1));
        System.out.println(floor(-Math.PI, 2));
        System.out.println(floor(-Math.PI, 3));
        System.out.println(floor(-Math.PI, 4));
        System.out.println(floor(-Math.PI, 5));
        System.out.println(floor(Math.PI*100000, 0));
        System.out.println(floor(Math.PI*100000, -1));
        System.out.println(floor(Math.PI*100000, -2));
        System.out.println(floor(Math.PI*100000, -3));
        System.out.println(floor(Math.PI*100000, -4));
        System.out.println(floor(Math.PI*100000, -5));
        System.out.println(floor(-Math.PI*100000, 0));
        System.out.println(floor(-Math.PI*100000, -1));
        System.out.println(floor(-Math.PI*100000, -2));
        System.out.println(floor(-Math.PI*100000, -3));
        System.out.println(floor(-Math.PI*100000, -4));
        System.out.println(floor(-Math.PI*100000, -5));

        System.out.println(round(Math.PI, 1));
        System.out.println(round(Math.PI, 2));
        System.out.println(round(Math.PI, 3));
        System.out.println(round(Math.PI, 4));
        System.out.println(round(Math.PI, 5));
        System.out.println(round(-Math.PI, 1));
        System.out.println(round(-Math.PI, 2));
        System.out.println(round(-Math.PI, 3));
        System.out.println(round(-Math.PI, 4));
        System.out.println(round(-Math.PI, 5));
        System.out.println(round(Math.PI*100000, 0));
        System.out.println(round(Math.PI*100000, -1));
        System.out.println(round(Math.PI*100000, -2));
        System.out.println(round(Math.PI*100000, -3));
        System.out.println(round(Math.PI*100000, -4));
        System.out.println(round(Math.PI*100000, -5));
        System.out.println(round(-Math.PI*100000, 0));
        System.out.println(round(-Math.PI*100000, -1));
        System.out.println(round(-Math.PI*100000, -2));
        System.out.println(round(-Math.PI*100000, -3));
        System.out.println(round(-Math.PI*100000, -4));
        System.out.println(round(-Math.PI*100000, -5));

        System.out.println(Math.round(-Math.PI*100));
        System.out.println(Math.round((Math.PI*100000000000L)*100000000000000L));
        System.out.println("Math.round(-1.5) is " + Math.round(-1.5));
        System.out.println("Math.round(-2.5) is " + Math.round(-2.5));
        System.out.println("Math.round(-3.5) is " + Math.round(-3.5));
        System.out.println("Math.round(-4.5) is " + Math.round(-4.5));
        System.out.println("Math.round(-5.5) is " + Math.round(-5.5));
        System.out.println("Math.round(-6.5) is " + Math.round(-6.5));
        System.out.println("Math.round(-7.5) is " + Math.round(-7.5));
        System.out.println("Math.round(-8.5) is " + Math.round(-8.5));
        System.out.println("Math.round(-9.5) is " + Math.round(-9.5));
    }

    private static double[] lowUnits = { 1.0, 1.0E-1, 1.0E-2, 1.0E-3, 1.0E-4, 1.0E-5, 1.0E-6, 1.0E-7, 1.0E-8,
                                         1.0E-9, 1.0E-10, 1.0E-11, 1.0E-12, 1.0E-13, 1.0E-14, 1.0E-15, 1.0E-16 };

    private static double[] highUnits = { 1.0, 1.0E1, 1.0E2, 1.0E3, 1.0E4, 1.0E5, 1.0E6, 1.0E7, 1.0E8,
                                          1.0E9, 1.0E10, 1.0E11, 1.0E12, 1.0E13, 1.0E14, 1.0E15, 1.0E16 };


    ///////////////////////////////////////////////////////
    // 절삭(truncate) 메소드
    // @param data   입력 데이터. double 타입.
    // @param pos    절삭될 위치. int 타입
    // @return       절삭된 결과. double 타입.
    public static double truncate(double data, int pos) {
        if (pos == 0)
            return Math.floor(data);
        else if (pos > 0 && pos <= highUnits.length)
            return lowUnits[pos] * Math.floor(data * highUnits[pos]);
        else if (pos < 0 && pos >= -lowUnits.length)
            return highUnits[-pos] * Math.floor(data * lowUnits[-pos]);
        else
            throw new RuntimeException(data + " cannot be truncated at the position " + pos);
    }


    ///////////////////////////////////////////////////////
    // 잘라내림(floor) 메소드
    // @param data   입력 데이터. double 타입.
    // @param pos    잘라내릴 위치. int 타입
    // @return       잘라내린 결과. double 타입.
    public static double floor(double data, int pos) {
        if (data >= 0.0) {
            if (pos == 0)
                return Math.floor(data);
            else if (pos > 0 && pos <= highUnits.length)
                return lowUnits[pos] * Math.floor(data * highUnits[pos]);
            else if (pos < 0 && pos >= -lowUnits.length)
                return highUnits[-pos] * Math.floor(data * lowUnits[-pos]);
            else
                throw new RuntimeException(data + " cannot be floored at the position " + pos);
        }
        else {
            if (pos == 0)
                return -Math.ceil(-data);
            else if (pos > 0 && pos <= highUnits.length)
                return lowUnits[pos] * -Math.ceil(-data * highUnits[pos]);
            else if (pos < 0 && pos >= -lowUnits.length)
                return highUnits[-pos] * -Math.ceil(-data * lowUnits[-pos]);
            else
                throw new RuntimeException(data + " cannot be truncated at the position " + pos);
        }
    }

    ///////////////////////////////////////////////////////
    // 잘라올림(ceil) 메소드
    // @param data   입력 데이터. double 타입.
    // @param pos    잘라올릴 위치. int 타입
    // @return       잘라올린 결과. double 타입.
    public static double ceil(double data, int pos) {
        if (data >= 0.0) {
            if (pos == 0)
                return Math.ceil(data);
            else if (pos > 0 && pos <= highUnits.length)
                return lowUnits[pos] * Math.ceil(data * highUnits[pos]);
            else if (pos < 0 && pos >= -lowUnits.length)
                return highUnits[-pos] * Math.ceil(data * lowUnits[-pos]);
            else
                throw new RuntimeException(data + " cannot be ceiled at the position " + pos);
        }
        else {
            if (pos == 0)
                return -Math.floor(-data);
            else if (pos > 0 && pos <= highUnits.length)
                return lowUnits[pos] * -Math.floor(-data * highUnits[pos]);
            else if (pos < 0 && pos >= -lowUnits.length)
                return highUnits[-pos] * -Math.floor(-data * lowUnits[-pos]);
            else
                throw new RuntimeException(data + " cannot be floored at the position " + pos);
        }
    }

    ///////////////////////////////////////////////////////
    // 반올림(round) 메소드
    // @param data   입력 데이터. double 타입.
    // @param pos    반올림할 위치. int 타입
    // @return       반올림된 결과. double 타입.
    public static double round(double data, int pos) {
        if (data >= 0.0) {
            if (pos == 0)
                return Math.floor(data + 0.5);
            else if (pos > 0 && pos <= highUnits.length)
                return lowUnits[pos] * Math.floor(data * highUnits[pos] + 0.5);
            else if (pos < 0 && pos >= -lowUnits.length)
                return highUnits[-pos] * Math.floor(data * lowUnits[-pos] + 0.5);
            else
                throw new RuntimeException(data + " cannot be floored at the position " + pos);
        }
        else {
            if (pos == 0)
                return -Math.floor(-data + 0.5);
            else if (pos > 0 && pos <= highUnits.length)
                return lowUnits[pos] * -Math.floor(-data * highUnits[pos] + 0.5);
            else if (pos < 0 && pos >= -lowUnits.length)
                return highUnits[-pos] * -Math.floor(-data * lowUnits[-pos] + 0.5);
            else
                throw new RuntimeException(data + " cannot be truncated at the position " + pos);
        }
    }


    public static void main(String[] args) {
        TruncateTest app = new TruncateTest();
        app.doTest();
    }
}


실행 결과
===================================
3.1
3.14
3.141
3.1415
3.1415900000000003
-3.2
-3.15
-3.142
-3.1416
-3.1416000000000004
314159.0
314150.0
314100.0
314000.0
310000.0
300000.0
-314160.0
-314160.0
-314200.0
-315000.0
-320000.0
-400000.0
3.2
3.15
3.142
3.1416
3.1416000000000004
-3.1
-3.14
-3.141
-3.1415
-3.1415900000000003
314160.0
314160.0
314200.0
315000.0
320000.0
400000.0
-314159.0
-314150.0
-314100.0
-314000.0
-310000.0
-300000.0
3.1
3.14
3.141
3.1415
3.1415900000000003
-3.2
-3.15
-3.142
-3.1416
-3.1416000000000004
314159.0
314150.0
314100.0
314000.0
310000.0
300000.0
-314160.0
-314160.0
-314200.0
-315000.0
-320000.0
-400000.0
3.1
3.14
3.142
3.1416
3.1415900000000003
-3.1
-3.14
-3.142
-3.1416
-3.1415900000000003
314159.0
314160.0
314200.0
314000.0
310000.0
300000.0
-314159.0
-314160.0
-314200.0
-314000.0
-310000.0
-300000.0
-314
9223372036854775807
Math.round(-1.5) is -1
Math.round(-2.5) is -2
Math.round(-3.5) is -3
Math.round(-4.5) is -4
Math.round(-5.5) is -5
Math.round(-6.5) is -6
Math.round(-7.5) is -7
Math.round(-8.5) is -8
Math.round(-9.5) is -9



7.대문자 -> 소문자, 소문자 -> 대문자



코드
===================================
String upper = "ABCDEFG";
String lower = upper.toLowerCase();
System.out.println(lower);


결과
===================================
abcdefg


보너스 하나더 (소문자 >> 대문자 )
===================================
String lower = "abcdefg";
String upper = lower.toUpperCase();
System.out.println(upper);



8.E-Mail 주소 Check



System.out.println(isValidEmailAddress("vivianchow.mailinglist.admin@hk.net.com"));
System.out.println(isValidEmailAddress("vivianchow.mailinglist.admin@hk.net.co@m"));

public static boolean isValidEmailAddress(String address) {
    return Pattern.matches("^[a-z0-9-_.]+\\@\\[?[a-z0-9-_]+(?:\\.[a-z0-9-_]+){1,4}\\[?$", address);
}

결과
===================================
true
false



9.데이터 구조



// 자바는 객체지향 언어입니다.
// 다음은 객체 개념의 잇점을 이용하여 친구 관계를 구성해 보았습니다.

import java.util.*;

public class FriendInfoTest {
    class FriendInfo {
        private String name = null;
        private String relation = null;
        private Hashtable friends = new Hashtable();
        public FriendInfo(String name, String relation) {
            this.name = name;
            this.relation = relation;
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getRelation() {
            return relation;
        }
        public void setRelation(String relation) {
            this.relation = relation;
        }
        public Enumeration getFriends() {
            return friends.keys();
        }
        public void addFriend(FriendInfo info) {
            friends.put(info.getName(), info);
        }
        public FriendInfo getFriend(String name) {
            return (FriendInfo) friends.get(name);
        }
        public String toString() {
            return name;
        }
        public String whoIs() {
            return relation;
        }
    }

    public void doTest() {
        FriendInfo accplus = new FriendInfo("김선달", "본인");
        FriendInfo shakalis = new FriendInfo("달님이", "선달이의 여자 친구");
        FriendInfo circuit = new FriendInfo("홍길동", "김선달의 학교 선배");
        accplus.addFriend(shakalis);
        accplus.addFriend(circuit);
        shakalis.addFriend(accplus);
        circuit.addFriend(accplus);
        System.out.println(accplus + ": " + accplus.whoIs());

        Enumeration keys = accplus.getFriends();
        String str = null;
        while (keys.hasMoreElements()) {
            str = (String) keys.nextElement();
            System.out.println("    " + str + " ==> " + accplus.getFriend(str).whoIs());
        }
    }

    public static void main(String[] args) {
        FriendInfoTest app = new FriendInfoTest();
        app.doTest();
    }
}

실행 결과:
====================================
김선달: 본인
    홍길동 ==> 김선달의 학교 선배
    달님이 ==> 선달이의 여자 친구



10.Date & Time 출력



SimpleDateFormat sdf = new SimpleDateFormat("yyyy년 M월 d일 (E) HH:mm:ss");
SimpleDateFormat sdf2 = new SimpleDateFormat("yyyy년 MM월 dd일 (E) a hh:mm:ss SSS");

//
Date date = new Date();
System.out.println(date);
System.out.println(sdf.format(date));
System.out.println(sdf2.format(date));

// 또는
Date date2 = new Date(103, 7, 15, 13, 30);
System.out.println(date2);
System.out.println(sdf.format(date2));
System.out.println(sdf2.format(date2));

// 또는
Calendar now = new GregorianCalendar();
System.out.println(now.get(Calendar.YEAR) + "년 "+ (now.get(Calendar.MONTH) + 1) + "월 " + now.get(Calendar.DAY_OF_MONTH) + "일");

// 또는
Calendar cal = new GregorianCalendar(2003, 7, 15, 13, 30);
System.out.println(cal.get(Calendar.YEAR) + "년 "+ (cal.get(Calendar.MONTH) + 1) + "월 " + cal.get(Calendar.DAY_OF_MONTH) + "일");
System.out.println(sdf.format(cal.getTime()));
System.out.println(sdf2.format(cal.getTime()));


출처:http://www.javaclue.org:8080/tbbs/view?board=doc&pg=1&num=143

글쓴이:자바클루--MORE----MORE--

'프로그래밍Tips' 카테고리의 다른 글

[JSP] Session  (0) 2006.12.05
오라클 9i에서 테이블명및 컬럼명 변경방법  (0) 2006.04.24
사용자 접근 권한 - GRANT, REVOKE  (0) 2006.04.24
컬럼명 변경은 오라클9i 부터 지원되는 기능입니다. ^^*


ALTER TABLE 구테이블명 RENAME TO 신테이블명;

ALTER TABLE [TABLE NAME] RENAME COLUMN [COLUMN NAME] TO [NEW COLUMN NAME];


컬럼명 바꾸기
ALTER TABLE high_tax

RENAME COLUMN year_comm TO tax ;


컬럼수정

alter table  high_tax

modify ( tax number(10,2)  ) ;


컬럼 삭제

Alter table  high_tax
Drop ( tax );


컬럼추가
Alter table  high_tax
add ( tax number(10,2)  default 2000  );
* 시스템 권한(System Privilege): 데이터 베이스를 액세스할 수 있다.
* 객체 권한(Object Privilege)  : 데이터 베이스 객체 내용을 조작할 수 있다.
1. System Privilege? --> DBA권한
   - Create new users ( CREATE USER )
   - Remove users     ( DROP USER )
   - Remove tables    ( DROP ANY TABLE )
   - Backup tables     ( BACKUP ANY TABLE )

2. Creating User
   CREATE USER scott
   IDENTIFIED BY tiger ;
  
3. system privilege에서의 GRANT
   GRANT privilege [, privilege...]
   TO user [, user...]
   [WITH ADMIN OPTION] ;
   * WITH ADMIN OPTION : dba가 권한을 주는 user에게도 admin 권한을 줄 수 있다.
   * user system privilege(DBA 가 USER에게 할당 할 수 있는 권한)
     CREATE SESSION    : 테이터베이스에 connect하는 권한
     CREATE TABLE      : 테이블 만드는 권한
     CREATE SEQUENCE  : sequence 만드는 권한
     CREATE VIEW        : view 만드는 권한
     CREATE PROCEDURE : stored prcedure, function 만드는 권한
     GRANT create table, create sequence, create view
     TO scott
     --> scott에게 table, sequence, view만드는 권한을 준다.
  
4. ROLE : 사용자에게 부여할 수 있는 관련 권한을 하나로 묶어 명명한 그룹
           Grant를 줄 role user를 만든후 그 role user에 grant를 주고,
           role user의 권한을 각각의 user에게 넘겨준다.
   ① SQL> CREATE ROLE manager ;
      Role created.
   ② SQL> GRANT create table, create view TO manager ;
      Grant succeeded.
   ③ SQL> GRANT mananger TO brake, clock ;
      Grant succeeded.
      
5. User Password 변경하기
   ALTER USER user IDENITIFIED BY password ;
   예) ALTER USER scott IDENTIFIED BY lion ;
  
6. Object Privileges?
   * 객체마다 다르다.
   * 소유자는 객체에 대한 모든 권한을 갖는다.
   * 소유자는 자신의 객체에 대한 특정 권한을 부여할 수 있다.
7. Object Privilege에서의 GRANT
   GRANT object_priv [(columns)| ALL]
   ON object
   TO {user|role|PUBLIC}
   [WITH GRANT OPTION] ;
   * sue, rich 라는 user에게 emp 테이블을 select 권한을 준다.
     GRANT select
     ON emp
     TO sue, rich ;
   * scott, manager라는 user에게 dept 테이블의 dname,loc 컬럼을 update할 수 있게  권한을 준다.
     GRANT update (dname, loc)
     ON dept
     TO scott, manager ;
    
   * WITH GRANT OPTION
     GRANT select, insert
     ON dept
     TO scott
     WITH GRANT OPTION ;
     --> scott에게 dept 테이블의 select, insert권한을 주면서 scott가 다른 유저에게도
         이 권한을 줄 수 있게 한다.
    
   * PUBLIC : 모든 유저에게 권한을 부여한다.
     GRANT select
     ON alice.dept
     TO PUBLIC ;
     --> 모든유저에게 alice가 만든 dept 테이블의 select권한을 준다.
    
   * 모든 유저에게 모든 object권한을 주기
     GRANT ALL
     ON emp
     TO PUBLIC ;
    
8. 권한 없애기 (REVOKE)
   REVOKE {privilege [, privilege...] | ALL}
   ON object
   FROM {user[, user...]|role|PUBLIC}
   [CASCADE CONSTRAINTS]
  
   REVOKE select, insert
   ON dept
   FROM scott ; --> scott에게서 dept테이블의 select, insert권한을 없앤다.  
   * CASCADE CONSTRAINTS : 이 옵션을 않쓰면 revoke할 때 forien key
     관계의 table을  revoke할 수 없다.
  
9. Privilege Grant를 볼 수 있는 Data Dictionary
   ROLE_SYS_PRIVS        : System privilege 권한에 대한 정보
   ROLE_TAB_PRIVS        : table(object) privilege 권한에 대한 정보
   USER_ROLE_PRIVS      : role정보
   USER_TAB_PRIVS_MADE : 내가 다른 사람에게 준 TABLE 권한에 대한 정보
   USER_TAB_PRIVS_RECD : 내가 다른 사람에게 받은 TABLE 권한에 대한 정보
   USER_COL_PRIVS_MADE : 내가 다른 사람에게 준 COLUMN 권한에 대한 정보
   USER_COL_PRIVS_RECD : 내가 다른 사람에게 준 COLUMN 권한에 대한 정보

한글체크는 안되나요?
 


정규식을 이용하면 됩니다.


정규식.test(문자열) - 있으면 true, 없으면 false...


<script>
str = "test한글";
check = /[ㄱ-ㅎ|ㅏ-ㅣ|가-힝]/;
if(check.test(str)) alert("한글이 있습니다.");
</script>


 


입력창에 한글 만써지게.. 


아래는 자바스크립트를 이용한 한글체크 소스입니다..
아래의 코드를 이용하면 영문상태에서는 글씨가 써지지 않습니다.


<script language='javascript'>
function hangul()
{
if((event.keyCode < 12592) || (event.keyCode > 12687))
event.returnValue = false
}
</script>


<input type="text" name="Name" size="10" maxlength="15" class=ad omKeyPress="hangul();"> 

+ Recent posts