728x90


SQL*Loader 사용하기

오라클/SQL/SQL공부
 


1. SQL*Loader란 ?
외부 화일에 있는 데이터를 Oracle에 Upload 할 수 있는 유틸리티 입니다.
기본적으로 외부 데이타 화일, 콘트롤화일(로드하는 데이타의 정보를 저장)이 필요합니다.

 

 

2. SQL*Loader 특징
  - 하나 이상의 입력 파일을 사용 가능
  - 로드를 위해 여러 개의 입력 레코드가 하나의 논리적 레코드로 결합될 수 있습니다..
  - 입력 필드는 고정 길이 또는 다양한 길이를 가질 수 있습니다.
  - 입력 데이터는  등   어떤 유형도 가능 합니다.
  - 데이터는 디스크/테이프/명명된 파이프 등 여러 유형의 매체로부터 로드 가능  
  - 데이터가 한 번에 여러 테이블로 로드 가능
  - 텍스트 데이터는 DB 버퍼 캐쉬를 거치지 않고 테이블로 직접 로드될 수 있다.
  - 테이블에 있는 기존 데이터를 대체 하거나(Replace) 추가(Append) 할 수 있는 기능이 있습니다.

 

 

3. SQL*Loader의 사용

 

 


기본문법 :    SQLLDR [keyword=] value  [ [keyword=] value ]...

 

 

     - KEYWORD : 아래에 설명되는 키워드중의 하나이며 VALUE는  키워드에 지정되는  값
  

실행예)

SQLLDR userid=scott/tiger control='test.ctl' log='test.log' 

 

 

 

 


키워드

•USERID :  사용자 ID와 암호
•CONTROL : 콘트롤 파일명
•LOG : 로그 파일명(기본 이름은 컨트롤파일명.log)
•BAD : 업로드에 실패한 레코드들이 저장 된다.(기본 이름은 컨트롤파일명.bad)
•DATA :  업로드를 위한 데이터 파일 이름 
•DISCARD : 선택되지 않은 레코드가 저장되는 디스카드 파일(선택 사항)
•DISCARDMAX :  버림(discard)의 최대 허용 갯수(기본값은 모든 버림을 허용하는 것입니다. 잘못된 입력 파일이 지정될 경우 실행을 중단시킬 안전 수단으로 사용) 
•SKIP : 건너 뛸 레코드 수, 주로 이전에 실패한 로드를 계속할 때 사용됨(한 테이블로 로드할 때나 로드되고 있는 모든 테이블에 대해 동일한 수의 레코드를 건너 뛸 때만 이 옵션을 사용)
•LOAD :  SKIP에 의해 지정된 레코드를 건너 뛴 다음 로드할 레코드 수를 지정 
•ERRORS : 배드 레코드의 최대 수
•ROWS : conventional 로드의 경우 각 삽입 전에 배열에 구축될 행의 수 지정(direct path로드의 경우 이 키워드는 각 data save마다 입력으로부터 읽어들일 행의 근사 수를 정의, Direct로드는 data save 전에 완전한 블록을 구축하고 버릴 행과 부적합한 행을거부한다.)
•BINDSIZE : conventional 로드의 경우 각 데이터베이스 호출시 삽입될 행의 배열을 구축하는데 사용될 최대 바이트 수를 지정(ROWS 파라미터도 지정되면 SQL*Loader는 BINDSIZE의 제한에 따라 ROWS에 의해 정의된 만큼의 행을 구축합니다.)
•DIRECT :  TRUE로 설정되면 SQL*Loader는 direct path를 사용. 반대의 경우는 기본 값인 conventional path 사용.
•PARFILE : 모든 로드 파라미터를 포함하고 있는 파일의 이름을 지정(명령 라인에 정의된 파라미터는  파라미터 파일에 정의된 값들을 무효화합니다.)
•PARALLEL : direct 로드에서만 적합한 이 파라미터는 다중 병렬 direct 로드가 수행되도록 지원
•FILE : 병렬 direct 로드의 경우 임시 세그먼트가 생성될 파일을 지정

 

 

 

 

 

 

 

 

 

 


--------------------------------------------------------------------------------

 

 

 

  
   Control File 예(Control File에서 데이터를 포함 할 경우)  
    LOAD DATA
    INFILE *
    REPLACE
    INTO TABLE  mydept  <-- 오라클의 테이블 이름
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
    (DEPTNO, DNAME)
    BEGINDATA
    40,SALES
    50,"RESEARCH"

    60,"ART"


 
  

참고 : 
   - Control File에서 데이터를 포함하지 않을 경우에는 INFILE 다음에 DATA파일을 지
        정하고 BEGINDATA 부터 생략 하면 된다.
   - NOLOGGING 키워드를 사용하여 테이블에 NOLOG 속성을 설정하는 것과 콘트롤 
     파일에 UNRECOVERABLE 옵션을 사용하는 것은 서로 같다.

 
6. Data File
  ① 콘트롤 파일에서 정의된 형식의 입력을 위한 데이터가 있다.
  ② UpLoad될 데이터를 Control File에 정의 할 수도 있고 Data File에 따로 분리 할 수도 
      있다.
   
7. Log File
  - 로드 시작/종료 시간, 총로드시간등 정보를 제공 
  - Load상태 정보를 저장
  -로드된 행의 수, 에러로 인해 로드가 거부된 행의 수, 버려진(Discard) 행의 수등의
   정보를 제공 한다.
  

 

출처 : ONJ프로그래밍 (http://www.onjprogramming.co.kr)


--------------------------------------------------------------------------------

 

 

 

 

(예제)

1. 연습용 테이블 생성

 


SQL> create table bbangmi_list(

  2  bbang_no           number not null primary key,

  3  food                       varchar2(30) not null,

  4  when                       varchar2(4)

  5  );

 


테이블이 생성되었습니다.

 

 

 

 

 

--------------------------------------------------------------------------------

 

 

 

 

 

2. 제어파일 데이터가 들어있는 경우

(C:\Documents and Settings\onj에 저장했다)

 


myfood.ctl파일을 만들었다.


LOAD DATA

INFILE *

INTO TABLE bbangmi_list

FIELDS TERMINATED BY','

(BBANG_NO, FOOD, WHEN)

BEGINDATA

10, 떡볶이, 간식

20, 피자, 저녁

30, 치킨, 점심

40, 맥주, 아침

50, 커피, 아침

 

 

 

3. 실행

 

 

C:\Documents and Settings\onj>sqlldr userid=scott/tiger control = 'myfood.ctl'

 


SQL*Loader: Release 11.2.0.1.0 - Production on 금 8월 2 15:47:22 2013

 


Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

 


커밋 시점에 도달 - 논리 레코드 개수 5

 

 

 

 

 

 

4. 데이터 insert 실행여부 확인

(저장폴더에는 이제 myfood.log가 생성되어있다.)

 


SQL> connect scott/tiger

 

 

SQL> select*from bbangmi_list;

 


  BBANG_NO FOOD                           WHEN

---------- ------------------------------ ----

        10 떡볶이                         간식

        20 피자                           저녁

        30 치킨                           점심

        40 맥주                           아침

        50 커피                           아침

 

 

 

 

 

 

 

--------------------------------------------------------------------------------

 


2. 제어파일과 데이터 파일이 분리된 경우
#. control file 부분 : food.ctl저장


#. DATA : food.dat저장

 

 

@ food.ctl 내용


LOAD DATA

INFILE 'food.dat'       

APPEND                

INTO TABLE bbangmi_list

FIELDS TERMINATED BY ','

(bbangmi_no,food,when)

 

 

 

 

--------------------------------------------------------------------------------

 

 

 

 

@ food.data 내용


60,금식,안돼

20,초콜렛,간식

10,콜라,저녁

 

 

 

(**주의!! data 파일에 빈칸이 있으면 자료가 안들어가 ㅠㅜㅠㅜㅠㅜㅠㅜ

예: 60, 금식, 안돼 nononono!!!

바른 답 : 60,금식,안돼 goooooooooood!!!

 

 

 

 


3. 실행


C:\Documents and Settings\onj>sqlldr userid=scott/tiger control = 'food.ctl'

 

 

SQL*Loader: Release 11.2.0.1.0 - Production on 금 8월 2 15:57:29 2013

 


Copyright (c) 1982, 2009, Oracle and/or its affiliates.  All rights reserved.

 


커밋 시점에 도달 - 논리 레코드 개수 2

커밋 시점에 도달 - 논리 레코드 개수 3

 

 

 

 


(dir확인)


2013-08-02  오후 03:57                56 food.bad

2013-08-02  오후 03:55               110 food.ctl

2013-08-02  오후 03:56                54 food.DAT

2013-08-02  오후 03:57             1,972 food.log

2013-08-02  오후 12:08     1,455,095,808 full.dmp

2013-08-01  오전 11:20    <DIR>          My Documents

2013-08-02  오후 02:26               157 mydept.ctl

2013-08-02  오후 02:26             1,537 mydept.log

2013-06-22  오후 03:31       923,430,912 myemp.dmp

2013-08-02  오후 03:46               179 myfood.ctl

2013-08-02  오후 03:47             1,549 myfood.log

2013-06-15  오전 11:22    <DIR>          Oracle

2013-08-02  오전 11:34     1,455,095,808 scott.dmp

2013-06-22  오전 10:32             4,096 scott.emp

2013-07-18  오후 03:01                 0 select

2013-07-18  오후 03:02                 0 spool

2013-08-02  오전 11:44             8,192 structure.dmp

2013-07-18  오후 05:30                 0 test.sql

2013-08-02  오전 10:16    <DIR>          바탕 화면

2011-07-25  오후 03:41    <DIR>          시작 메뉴

              34개 파일       5,289,240,626 바이트

               7개 디렉터리  77,600,690,176 바이트 남음

 

 

 

food.bad 파일이 생성됨 :

----내용----

20,초콜렛,간식


10,콜라,저녁

------------

 


(해석) BAD파일이 생긴 이유는 이미 기존에 위의 실습을 통해 10, 20, 30번,40번,50번은 저장 되어 있는 상태.

그러므로 APPEND 되는 10, 20, 60 번중에서 10, 20번을 가진 데이터는 DISCARD 되는 것

(bbang_no 가 Primary Key)

 

 

 

 


4. 데이터 insert 여부 확인


SQL> select * from bbangmi_list;

 


  BBANG_NO FOOD                           WHEN

---------- ------------------------------ ----

        10 떡볶이                         간식

        20 피자                           저녁

        30 치킨                           점심

        40 맥주                           아침

        50 커피                           아침

        60 금식                           안돼

 


6 개의 행이 선택되었습니다.


 

728x90
728x90

자바 및 톰켓 경로 export 하기

 

export JAVA_HOME=/usr/local/jdk1.7.0_07
export CATALINA_HOME=/was/tomcat/tomcat7
export PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/bin/lib/ext:$JAVA_HOME/lib/tools.jar:$CATALINA_HOME/lib/jsp-api.jar:$CATALINA_HOME/lib/servlet-api.jar

728x90

'프로그래밍 > 리눅스' 카테고리의 다른 글

리눅스 링크 거는 법  (0) 2015.04.27
linux address already in use  (0) 2015.04.27
리눅스 심볼릭 링크 걸기  (0) 2013.09.30
톰켓설치  (0) 2013.09.30
Linux java 설치  (0) 2013.09.30
728x90

아래와 같이 리눅스에서 링크를 걸어 보세요.
ln -s /aa/bb/cc/dd /ee/ff/gg/dd

-s 옵션은 심볼릭 링크를 건다는 것이구요.. 디렉토리를 링크할 때는 심볼릭 링크만 가능합니다.
상기와 같이 링크가 걸렸다면..
cd /ee/ff/gg/dd 로 했을때 경로가 /aa/bb/cc/dd/ 로 바뀝니다.
링크를 설치할때 구태여 cd /ee/ff/gg 로 가서 링크할 필요는 없어요.
만약, pwd 가 /ee/ff/gg/ 인 상태라면.. 
ln -s /aa/bb/cc/dd dd 라고 하거나
ln -s /aa/bb/cc/dd /ee/ff/gg/dd 모두 동일하게 작동합니다. 

만약 /aa/bb/cc/dd/a1/b1/c1 경로를 2개 서버 이상이 NFS 로 공유하고 있다면,
/aa/bb/cc/dd 까지만 NFS 로 잡아주면 됩니다. 

728x90

'프로그래밍 > 리눅스' 카테고리의 다른 글

linux address already in use  (0) 2015.04.27
자바 및 톰켓 경로 export 하기  (0) 2013.09.30
톰켓설치  (0) 2013.09.30
Linux java 설치  (0) 2013.09.30
find와 grep을 활용한 검색  (0) 2012.08.27
728x90
JDK부터 설치해야한다. root 권한으로 진행~
http://java.sun.com/javase/downloads/?intcmp=1281

Java SE Development Kit (JDK) 6 Update 10

다운받아서 실행하면 지가 알아서 압축다풀고 설치다됐다고한다. -_-;
실행한 위치에 압축이 풀리므로 옮긴다!
(RPM 버전을 받으면 /usr/java에 jdk가 위치한다.)

mv jdk1.6.0_10 /usr/local/

그리고 나중에 버전업이 되었을때 자바 관련 패스를 전부 바꿔야하는 큰아픔을 막기 위해 심볼릭링크를 해준다.
ln -s /usr/local/jdk1.6.0_10 java
SDK와 같은 Kit은 이렇게 링크를 걸어주는게 좋다.
(RPM 버전을 받으면 /usr/java/default라는 링크가 이미 걸려있다.)

패스를 설정해보자.
vi /etc/profile
export JAVA_HOME=/usr/local/java
(RPM 버전이면 /usr/java/default)
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/bin/lib/ext:$JAVA_HOME/lib/tools.jar
위 3줄을 적당한 위치에 넣고 저장한 후~
수정사항을 바로적용하기 위해
source /etc/profile

패스가 제대로 걸렸는지 테스트 해본다! 아무대서나
java
뭔가 쭉쭉 나온다면 OK! env 같은 명령어로 확인해도 된다.

이제 Tomcat을 설치하자!
http://tomcat.apache.org/download-60.cgi
위 링크는 6.x 버전 링크다. wget으로 해당 링크의 파일을 받는다~

압축 풀고 위치를 옮긴다. 관리 편하려고...
tar -xzvf apache-tomcat-6.0.18.tar.gz
mv apache-tomcat-6.0.18 /usr/local/web/
cd /usr/local/web/
apache와 같은 디렉토리에 놓이게 되었다.
설치된 디렉토리 이름을 그냥 tomcat으로 바꾸자.
mv apache-tomcat-6.0.18/ ./tomcat

마지막으로 패스만 설정해주면 끝난다.
vi /etc/profile
export JAVA_HOME=/usr/local/java
export CATALINA_HOME=/usr/local/web/tomcat
export PATH=$PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin
export CLASSPATH=.:$JAVA_HOME/jre/bin/lib/ext:$JAVA_HOME/lib/tools.jar:$CATALINA
_HOME/lib/jsp-api.jar:$CATALINA_HOME/lib/servlet-api.jar

위와 마찬가지로 바로적용하기 위해
source /etc/profile

방화벽이 문제가 될테니 다음과 같이~ iptables 파일에 추가한다.
vi /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 8080 -j ACCEPT

방화벽을 제시작하고 테스트!
/etc/rc.d/init.d/iptables restart
/usr/local/web/tomcat/bin/startup.sh

http://ip:8080/
접속해서 고양이 나오면 성공!
혹시라도
Cannot find /usr/local/server/tomcat/bin/setclasspath.sh
This file is needed to run this program
이런 메세지가 나온다면 CATALINA_HOME Path를 확인해봐야한다.

만약 톰캣도 리부팅후 자동 실행되게 하고 싶다면 다음과 같이 스크립트를 작성한다.
(소스는 인터넷에서 퍼 온것~ 몇몇 경로 부분만 현재 내 서버에 맞게 고쳤다.)
저장은 -> /etc/rc.d/init.d/tomcatd

#!/bin/sh
#chkconfig: 2345 89 89
#description: tomcatd
#processname: /usr/local/tomcat/bin/catalina.sh
#config : /usr/local/tomcat/conf/server.xml
#config : /usr/local/tomcat/conf/web.xml
#pidfile : /var/run/tomcatd.pid
#
# author      : jongho, Ahn(...)
# email       : skylimit@syspam.co.kr, skylimit71@gmail.com
# date        : 2006. 07. 10
#

# Get Config
[ -f /usr/local/tomcat/conf/server.xml ] && [ -f /usr/local/tomcat/conf/web.xml ] || exit 0

source /etc/profile

# Source function library
. /etc/rc.d/init.d/functions

# caution :
#           variable=<value> space between variable and value is not allowed
RETVAL=0
prog=tomcatd

# Start function
start()
{
  echo -n "Starting $prog : "
  daemon $CATALINA_HOME/bin/catalina.sh start
  RETVAL=$?
  echo
  touch /var/lock/subsys/tomcatd
  return $RETVAL
}

# Stop fucntion
stop()
{
  echo -n "Stopping $prog : "
  daemon $CATALINA_HOME/bin/catalina.sh stop
  RETVAL=$?
  echo
  rm -f /var/lock/subsys/tomcatd
  return $RETVAL
}

# Restart function
restart()
{
  stop
  start
}

# See how we were called
case "$1" in
     start)
           start
           ;;
     stop)
           stop
           ;;
     restart)
           restart
           ;;
     *)
           echo $"Usage : $0 {start|stop|restart}"
esac

exit $RETVAL

그리고 나서 chmod 755 tomcatd로 권한주고 /sbin/chkconfig --add tomcatd 해주면 끝~
만약 다른 대몬과의 연동으로 실행 순서를 변경해야 한다면
아래와 같은 부분을 조정하면 된다.

#chkconfig: 2345 89 89

2345는 런레벨이며 첫번째 89는 시작우선권 두번째 89는 종료우선권이다.
끝~

 

728x90

'프로그래밍 > 리눅스' 카테고리의 다른 글

자바 및 톰켓 경로 export 하기  (0) 2013.09.30
리눅스 심볼릭 링크 걸기  (0) 2013.09.30
Linux java 설치  (0) 2013.09.30
find와 grep을 활용한 검색  (0) 2012.08.27
vi 명령 정리  (0) 2012.04.18
728x90

CentOS에 자바를 설치하기



http://www.oracle.com/technetwork/java/javase/downloads/index.html

여기에서 jdk를 다운받는다.

본인은 jdk6 update21 버전을 다운받았다.



1. 자바 설치

  /home 에 설치한다고 치자.


  별로 할게 없다.

  ./jdk-6u21-linux-i586.bin

  주르륵 알아서 설치된다.

  중간에 엔터 한번 쳐달라고 한다.


  jdk1.6.0_21 폴더가 만들어진다.

  편의상 java폴더로 바꿔보겠다.

  mv jdk1.6.0_21 /home/java



2. 환경파일 설정

  패스를 걸어줘야 한다.

  vi /etc/profile

  맨 밑에 추가

  JAVA_HOME=/home/java

  export JAVA_HOME

  PATH=$JAVA_HOME/bin:$PATH

  CLASSPATH=$CLASSPATH:$JAVA_HOME/lib

 

  source /etc/profile 적용

 

3. 설치 확인

  java -version

  우린 1.6이상을 설치했는데 1.6이 아니면 CentOS 설치시 java가 같이 설치된거다.

  어떻게 걸려있는지 확인해보자

  which java

  /usr/bin/java

  이놈이다.

  가서 확인해볼까

  cd /usr/bin/

  어떻게 되어있길래 이런가 볼까.

  ls -al java

  java -> /etc/alternatives/java

  이런.../etc/alternatives/ 여기있는 자바가 실행되고 있었다.

  변경해야지

  alias java='/home/java/bin/java'


4. 확인

  java -version

  javac -version

 

vi /etc/profile 실행
export JAVA_HOME=/usr/java/j2se1.4.3_08
PATH=$PATH:$JAVA_HOME/bin
export PATH
vi 저장후 종료 :wq
그담에
/etc/profile의 실행권한이 없으면 실행권한을 줍니다.
그리고 실행권한은 root만 주세요..아니어도 실행하는 데는 무관합니다.
-rwxr--r--    1 root     root         1414 11월 20  2003 profile
실행
. /etc/profile
하고 아무데서나 javac, java하면 실행됩니다.
728x90

'프로그래밍 > 리눅스' 카테고리의 다른 글

리눅스 심볼릭 링크 걸기  (0) 2013.09.30
톰켓설치  (0) 2013.09.30
find와 grep을 활용한 검색  (0) 2012.08.27
vi 명령 정리  (0) 2012.04.18
linux ftp client 사용법  (0) 2012.04.10
728x90

이클립스에서 Export --> java>javadoc 을 함으로써 소스파일을 쉽게 html 형식의 javadoc 파일을 쉽게 만들수 있다.

소스 코드를 UTF-8로 작성을 한 경우 빌드된 javadoc 파일들의 한글은 깨져 보이게 된다.

물론 브라우저 상에서 인코딩타입을 UTF-8로 변경하면 깨지지 않은 한글을 볼수 있지만

매번 다른 화면을 이동할 때마다 인코딩타입을 변경해주거나 자동선택을  선택해지 하고 UTF-8로 고정시켜야만 한다.

javadoc파일을 만들때 당연히 옵션이 있을 거라 생각하고 살펴보니..

역시나 javadoc 생성 마지막 단계에서 VM options을 지정함으로써 javadoc 파일의  Charset을 UTF-8로 설정할 수 있었다.

 

 

 

위의 그림과 같이 VM options 텍스트필드에 다음과 같이 입력한다.

 

-locale ko_KR -encoding UTF-8 -charset UTF-8 -docencoding UTF-8

728x90

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

java get 방식 한글 전송 시  (0) 2015.05.26
전자정부(Spring) Framework] iBatis 입력(INSERT) 결과  (1) 2015.05.19
java jdbc db instance 설정  (0) 2015.05.06
오라클 페이징  (0) 2014.07.23
sprint MVC interceptor  (0) 2013.09.12
728x90

Spring MVC 를 사용하다가 보면 필연적으로 Interceptor 를 사용하게 됩니다.
Controller 에서 공통적으로 또는 특정 패키지들에 속한 부분에 대해서 선후 처리가 필요하기 때문입니다.
예전에 이러한 부분들을 AOP 로 구현한 것을 보았습니다. 다른 부분들은 AOP 로 구현하는것이 문제가 아니지만
Controller 부분이라면 Interceptor로 구현하시는것을 권장합니다.

Spring MVC 에서 interceptor 에 대해서 알아보겠습니다.

org.springframework.web.servlet.HandlerInterceptor ,
org.springframework.web.servlet.handler.HandlerInterceptorAdapter
를 상속받아 Interceptor를 구현하면 됩니다.

HandlerInterceptor 를 상속할 경우

preHandle , postHandle , afterCompletion 이렇게 3가지로 구분되어져 있습니다.
이름에서 대충 알수 있겠지만
preHandle : Controller 가 수행되기 전에 실행됩니다. 여기서는 이후 Controller를 수행할지 여부를 boolean 으로 return 하게 됩니다.
postHandle : Controller 가 수행된후 View 를 호출하기 전 상태입니다.
afterCompletion : View 작업까지 완료된 후 호출 됩니다. responseBody 를 이용할 경우 UI 에 이미 값을 전달후 해당 부분이 호출됩니다.

 

호출됩니다.

01 package com.softline.study.interceptor;
02  
03 import javax.servlet.http.HttpServletRequest;
04 import javax.servlet.http.HttpServletResponse;
05  
06 import org.springframework.web.servlet.HandlerInterceptor;
07 import org.springframework.web.servlet.ModelAndView;
08  
09  
10 public class ControllerLoggingInterceptor implements HandlerInterceptor {
11  
12     public boolean preHandle(HttpServletRequest request,
13             HttpServletResponse response, Object handler) throws Exception {
14         System.out.println("preHandle");
15         return true;
16     }
17  
18      
19     public void postHandle(HttpServletRequest request,
20             HttpServletResponse response, Object handler,
21             ModelAndView modelAndView) throws Exception {
22         System.out.println("postHandle");
23     }
24  
25     public void afterCompletion(HttpServletRequest request,
26             HttpServletResponse response, Object handler, Exception ex)
27             throws Exception {
28         System.out.println("afterCompletion");
29     }
30  
31 }

728x90
728x90

CSS3 투명도(opacity) 그림자(shadow) 설정

초창기 부터 주목되었던 투명도와 그림자에 대해 알아본다

투명도(opacity)

투명도를 설정함으로서 뒤의 z-inex설정에서 뒤에 엘리먼트라던가 겹친 엘리먼트를 보이게하는 등의 모습을 구현 할 수 있다.브라우저는 역시 IE가 예외 IE9는 지원한다. 단 IE8이하버전은 필터를 사용해야한다.

<div class="box1">box1 opctical 50%</div>
<div class="box2">box2 opctical 30%</div>

포지션은 겹치게 했다.

div{ width:300px; height:150px; position:relative;}
.box1{ left:100px; top:30px;
       background-color:#F00;
       opacity:.5;
     }
.box2{ left:150px; top:-50px;        
       background-color:#00F;        
       opacity:.3;
     }


투명도 쓸때 생각할것

 

1. 투명도는 누적되어 나타난다. 첫번째 박스는 50% 두번째 박스는 30%이다.
2. 투명도는 자식 엘리먼트에도 역시 적용된다. 자식엘리먼트는 부모것을 그대로 받아들이지 다시 원래대로 돌릴 수 없다.

문제의 IE8이하 버전을 해결할 필터를 이용한 방법은 다음과 같다.

#IE{ background-color:#00F;
     filter: alpha(opacity=75); }

투명도로 0~100%를 나타낸다.

그림자(shadow)

텍스트 그림자 효과와 같다. 좀더 옵션이 있다. IE는 IE9부터 지원한다
값은 색깔 가로 옵셋, 세로 옵셋, 블루어 효과, 그리고 마지막 값은 안쪽으로 그림자 옵션이다(inset)

.box3{ background-color:#090;
       box-shadow:#000 15px 15px 10px;
	 }
.box4{ background-color:#090;
       box-shadow:#C00 15px 15px 30px
	   ,#000 10px 10px 3px;
	 }
.box5{ background-color:#090;
       box-shadow:#000 15px 15px 10px inset;
	 }   

결과는 여기서 확인 http://sianasiatiger.cafe24.com/study/css3-box_03.html
첫번째는 간단한 적용한것. 마지막은 안으로 한 것이다.
두번째와 같이 여러개를 줄수도 있다. 여기서 먼저 설정해준것이 맨위에 보인다.

728x90

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

CSS 리스트 스타일  (0) 2012.04.13

+ Recent posts