// tomcat - server.xml파일에 DB Connection생성을 위한 설정(<Host>태그 내부에 추가함)


<Host name="localhost"  appBase="D:/jspHome"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">

<Context Path="/myApp" docBase="myApp" debug="5" reloadable="true" crossContext="true">

<Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"

                maxActive="100" maxIdle="30" maxWait="10000"

                username="sys" password="password" driverClassName="com.mysql.jdbc.Driver"

                url="jdbc:mysql://localhost:3306/javatest?autoReconnect=true"/>

</Context>

</Host>


//내용설명

Host - name : HOST명

       - appBase : Root 디렉토리(웹)

Context - path : URL 호출시 사용될 이름

            - docBase : 실제 웹 어플리케이션이 위치한 폴더명

            - debug : 로그 작성 레벨

            - reloadable : 톰캣서버의 재시작 없이 수정된 내용을 불러오기 위한 옵션

            - crossContext : myapp이외의 Context에서도 사용 가능하도록 하는 옵션

Resource - name : Resource명칭(JNDI Lookup 시 사용할 명칭)

              - auth : Resource 관리자를 지정. 여기서는 톰캣컨테이너가 관리자임

              - type : Resource 의 형태 지정. 데이타소스 형태를 지정함

              - maxActive : 최대 연결 가능한 Connection 숫자를 지정함

              - maxIdle : Connection pool 유지를 위해 최대 대기 connection 숫자

              - maxWait : Connection 재 사용을 위해 대기해야 하는 최대 시간(단위:ms)

              - username : DB접속 계정

              - password : DB접속 암호

              - driverClassName : DB와 접속하기 위한 driver 클래스를 지정. 예에서는 MySql임

              - url : 접속한 DB가 위치한 서버명, 포트명, 사용할 데이타베이스명을 지정



// tomcat - web.xml파일에 DB Connection생성을 위한 설정

<resource-ref>

              <description> DB Connection </description>

              <res-ref-name>jdbc/TestDB</res-ref-name>

              <res-type>javax.sql.DataSource</res-type>

              <res-auth>Container</res-auth>

</resource-ref>


//내용설명

resource-ref - description : 참조할 resource에 대한 설명

                  - res-ref-name : 참조할 resource의 명칭. Server.xml에 정의된 이름과 일치해야함

                  - res-type : 참조할 resource 형태로 여기서는 DataSource를 지정함

                  - res-auth : 참조할 resource를 관리할 주체로 톰캣컨테이너를 지정함

2010/10/25 16:21 2010/10/25 16:21

실무에서 자주 사용하는 리눅스 명령어

 

// tar 묶기

# tar cvf backup.tar /test

 

// tar 특정 디렉토리 빼기

# tar cvf backup.tar /test --exclude "/test/backup" --exclude "/test/test1"

 

// backup.tar 을 현재 폴더에 풀기

# tar xvf backup.tar .

 

// tar묶은후 압축

# gzip -9 backup.tar

 

// 압축풀고 tar풀기

# gunzip backup.tar.gz

 

// zip 압축파일을 현재 디렉토리에 풀기

# unzip WT_Home.zip

 

// 해당 파일의 패스 확인하기

# which java

 

// 환경설정한 파일을 즉시 적용하기

# source /etc/profile

 

// 콘솔에서 FTP 사용시 주요 옵션

# ftp

# put

# mput

# binary/ascii // 이진파일, 아스키 선택하기

# prompt // 여러파일 올릴때 물어보는 거 없애기

 

// RPM 패키지로 설치되어 있는지 여부 확인

# rpm -qa |grep vsftpd

 

// 설치

# rpm -Uvh filename

 

// 해당 파일이 링크되어 있는지 여부 확인

# ls -l java

 

// 링크걸기: 파일이나 디렉토리나 링크 잡아주는 것은 똑같음

#ln -s root/asses/log2 xxx/log

 

// 파일 및 폴더 소유자 변경하기

# chown :test, chown test

 

// 서브폴더에 대한 권한 모두 변경

# chown test:test public_html -R

 

// 서브디렉토리까지 삭제, 삭제확인 안함

# rm -rf test 

 

// 해당 파일을 터미널 열지 않고 보기, 실시간 로그파악시 보통 이용

# tail -f system.log

 

// 디스크 용량 파악하기

# df -h

 

// 서브 디렉토리 용량 파악하기

# du -skh * 

 

// 메모리, CPU 정보 보기

# more /proc/cpuinfo, meminfo

혹은

# top

 

// 해당 프로세스의 개수 파악하기

# ps -ef |grep httpd |wc -l

 

// awk 를 이용한 현재 메모리에 올라와 있는 아파치 데몬의 갯수를 파악

# ps -ef | awk '/httpd/{num += 1} END {print num-1}'

 

// 아파치 명령어, bin 폴더로 이동후 수행, 컴파일된 라이브러리 확인

# ./apachectl -l

 

// 아파치 명령어, bin 폴더로 이동후 수행, 아파치 버전 확인

# ./apachectl -v

 

// 심볼릭 링크 걸기 (처음에 많이 해깔렸던 명령어)

# ln -s [타켓대상 절대경로] [원본경로]

# ln -s /data/websource /usr/local/apache/htdocs

-> 이와 같이 아파치 웹서비스를 특정 폴더로 심볼링 링크 걸때 기존 htdocs 폴더를 htdocs_org 등으로 변경한 뒤 수행해야 한다.

-> 위와 같이 한 후 ls -ln 해 보면 htdocs -> /data/websource 로 링크가 걸려있음을 볼 수 있다.

 

// 사용중인 포트 확인

# netstat -na |grep 8080


원본 : http://jadefan.blog.me/70045645573

2010/10/25 14:58 2010/10/25 14:58

1) 옵션:

a) -classpath:

-classpath(cp) path(파일 절대 경로):
컴파일러가 컴파일 하기 위해서 필요로 하는 참조할 클래스 파일들을 찾기 위해서 컴파일시 파일 경로를 지정해주는옵션. 예를 들어,  Hello.java파일이 C:\Java 디렉터리에 존재하고, 필요한 클래스 파일들이 C:\Java\Engclasses에 위치한다면,
javac -classpath C:\Java\Engclasses C:\Java\Hello.java 로 해주면 된다. 만약 참조할 클래스 파일들이 C:\Java\Engclasses외의 다른 디렉터리에도 존재한다면, C:\Java\Korclasses 일경우,
javac -classpath C:\Java\Engclasses;C;\Java\Korclasses C:\Java\Hello.java 그리고, 현재 디렉터리역시 포함하고 싶다면,
javac -classpath .;C:\Java\Engclasses;C;\Java\Korclasses C:\Java\Hello.java
기본적으로, dos에서는 .는 현재 디렉터리를 의미하고, ..는 현재 디렉터리의 상위디렉터리를 의미한다.
또한 classpath 대신 단축어인 cp를 사용해도 된다.
javac -cp C:\Java\Engclasses C:\Java\Hello.java


b) -d:
-d directory
클래스 파일을 생성할 루트 디렉터리를 지정합니다.
기본적으로 컴파일러는 -d옵션을 주지 않으면, 소스파일이 위치한 디렉터리에 클래스 파일을 생성시킵니다.
예를 들어,  Hello.java파일이 C:\Java 디렉터리에 존재하고 클래스 파일의 루트디렉터리를 C:\Java\Classfiles라고 하면,
javac -d C:\Java\Classfiles C:\Java\Hello.java 입니다.

만약 -d 옵션을 사용하려고 하는데, 루트디렉터리(위예에서는 C:\Java\Classfiles) 가 존재 하지 않는다면,
"The system cannot find the path specified"라는 에러 메시지를 보게 됩니다.
현재 작업 디렉터리가 C:\Java\Classfiles 에 위치하면,
javac -d .\Classfiles Hello.java 와 같이 상대 디렉터리로 표현할수 있습니다.

c) -encoding:
-encoding encoding name
소스 파일에 사용된 문자열 인코딩을 설정합니다.
만약 위옵션이 설정되어 있지 않으면, 플래폼의 기본적인 컨버터가 사용되어 집니다.

d) -g:
모든 디버깅 정보를 생성시킵니다.
만약 위옵션이 설정되어 있지 않으면, 기본적으로, 라인넘버만 생성시킵니다.
-g:none: 디버깅 정보를 전혀 생성 시키지 않습니다.
-g:{lines, vars, source}:
위처럼 명시적으로, 몇몇 디버깅 정보를 생성시킬수 있습니다.
lines은 라인정보, vars는 지역변수, sounce는 소스 파일 정보를 나타냅니다.

e) -nowarn:

경고 메시지 (warning message)를 생성시키지 않습니다.

f) -verbose:

컴파일러와 링커가 현재 어느 소스파일이 컴파일되고 있고, 어느 파일이 링크되고 있는지
그정보를 출력한다.

h) -deprecation:

소스 코드내에서, 사용되어진 deprecated API의 위치 를 출력 합니다.

ex)
C:\Java> javac World.java
Note: World.java uses a deprecated API. Recompile with "-deprecation" for details
.
1 warning
C:\Java> javac -deprecation World.java
World.java:52: Note: The method java.awt.Dimension size() in class java.awt.Compon
ent has been deprecated.
Dimension d = size();

Note: World.java uses a deprecated API. Please consult the documentation for a be
tter alternative.

i) -sourcepath:

-sourcepath 소스패스

소스파일의 위치를 지정합니다.

j) -target:

-target 자바버젼

지정된 자바버젼의 VM에서 작동 되어지도록 클래스파일을 생성 시킵니다.

1.1
jvm 1.1 버젼에서 호환되어질수 있는 클래스 파일생성
1.2
jvm 1.2 버젼에서 호환되어질수 있는 클래스 파일생성
1.3
jvm 1.3 버젼에서 호환되어질수 있는 클래스 파일 생성

ex)

javac -target 1.2 Helloworld.java

k) -bootclasspath 패스:

특정한 bootstrap또는 확장 클래스를 지정할수 있다.
기본적으로, 자바컴파일러는 javac(컴파일러명령)이 설치된 플래폼의 bootstrap과 확장클래스들을 통해서, 컴파일작업을 수행하지만,
bootclasspath 옵션을 사용하면, cross-compiling이라고 해서, 다른 자바플래폼의 bootstrap과 확장클래스들을 통해서, 컴파일 할수 있는 기능을 지원한다.
예를들어,
javac -target 1.1 -bootclasspath jdk1.1.7/lib/classes.zip -extdirs "" OldCode.java
컴파일러에게 현재 자신의 bootstrap을 사용하지 말고, jdk1.1.7/lib/classes.zip bootstrap클래스들을 사용해서 컴파일 하라고
명령하는것이다.
참고로, 모바일자바에서, 모바일폰에 설정된, jvm에 맞도록, 소스코드를 컴파일하기 위해서, 주로 사용되어지는 옵션이다.

l) -extdirs 디렉터리:
특정한, 확장 디렉토리를 지정한다.cross-compiling시 주로, 사용되어지는 옵션이면, 각디렉터리들은 콜론(:)에 의해서, 분리되어진다.
컴파일시, 기술한 디렉터리의 클래스 파일을 참조한다.

2010/10/25 14:24 2010/10/25 14:24
참고사이트 : http://www.crosscert.com/service_global/library/?_action=SHOW&_param=GLOBAL_LIBRARY_TECHNIQUAL02_PAGE

CSR 생성 및 인증서 설치 방법이다.

부모도메인과 서브도메인 모두 적용할려면 와일드카드 인증서를 사용하면 된다고 한다.
2010/10/25 13:39 2010/10/25 13:39

원문 : http://zepinos.springnote.com/pages/1595048

오라클 시작과 종료


기본적인 오라클 시작과 종료는 SQL*Plus 로 접속한 뒤 SQL 명령창에서 아래와 같은 명령으로 진행한다.


  • 시작 : startup;
  • 종료 : shutdown immediate;

시작과 종료 모두 몇 가지 옵션을 가지고 있다. 하지만 일반적인 경우에는 종료시 immediate 옵션을 사용하는 것만 알고 있어도 된다.


오라클 시작 옵션


시작시 사용할 수 있는 옵션은 아래와 같다.


startup [force] [restrict] [pfile=파일명] [open [recover] [데이터베이스명] | mount | nomount];


force : 오라클 DB가 시작된 상태에서 다시 재시작할 때만 사용
restrict : DBA 권한을 가진 사용자만이 접속하여 이용 가능하도록 함
pfile : 오라클이 기본으로 제공하는 파라미터 파일인 init.ora 파일이 아닌 관리자가 생성한 파라미터 파일을 사용하여 오라클 서버를 시작할 때 사용
nomount : 인스턴스만 시작된 상태, 주로 오라클 DB 를 생성할 때 사용
mount : 인스턴스에 대한 Control File 을 열기
open : 인스턴스에 대한 모든 파일을 오픈하고 모든 유저가 데이터 베이스 사용 가능
recover : 오라클 복구시 사용


오라클 종료 옵션


종료시 사용할 수 있는 옵션은 아래와 같다.


shutdown [normal | transactional | immediate | aboart];


normal : 기본값,새 연결을 허용하지 않고 현재 사용자들이 접속 종료할 때까지 대기하며, 처리중인 트랜젝션이 종료할 때까지 대기한 후 종료, 다음 startup 시 인스턴스 복구가 필요하지 않음

transactional : 모든 사용자가 특정 인스턴스에서 새로운 트랜잭션을 시작 할 수 없고, 처리중인 트랜젝션이 모두 종료할 때까지 대기한 후 종료, 다음 startup 시 인스턴스 복구가 필요하지 않음

immediate : 현재 처리중인 SQL 을 모두 정지하고 모든 진행중인 트랜젝션을 롤백시킴, 모든 사용자의 DB 닫기 및 인스턴스 연결 종료

aboart : -현재 처리중인 SQL 을 모두 취소하고 모든 진행중인 트랜젝션을 강제 종료시킴(롤백 하지 않음), 모든 사용자의 연결을 종료하고 DB 닫기 및 DB 인스턴스와의 연결을 강제종료, 다음 startup 시 인스턴스 자동 복구


리스너 시작과 종료


리스너는 오라클의 접속을 관리하는 서비스이다. 리스너가 실행되어 있지 않으면 외부에서 오라클을 접속할 수 없다.

리스너의 시작과 종료는 쉘 혹은 도스 프롬프트에서 아래의 명령을 실행한다.


  • 시작 : lsnctl start
  • 종료 : lsnctl stop

엔터프라이즈 매니져 시작과 종료


오라클 10g 부터는 기존의 엔터프라이즈 매니져(Enterprise Manager, 이하 EM)가 웹서비스 형태로 변경되었다.

새로운 EM 을 이용하기 위해서는 서비스를 실행해야 한다.

EM 의 시작과 종료는 쉘 혹은 도스 프롬프트에서 아래의 명령을 실행한다.


  • 시작 : emctl start dbconsole
  • 종료 : emctl stop dbconsole

EM  을 이용하기 위해서는 1158 포트로 접속하면 된다.


iSQL*Plus 시작과 종료


오라클 10g 부터는 EM 뿐만 아니라 SQL Query Tool 인 SQL*Plus 마져 iSQL*Plus 라는 이름의 웹서비스로 제공한다.

EM 과 마찬가지로 iSQL*Plus 을 이용하기 위해서는 서비스를 실행해야 한다.

iSQL*Plus 의 시작과 종료는 쉘 혹은 도스 프롬프트에서 아래의 명령을 실행한다.


  • 시작 : isqlplusctl start
  • 종료 : isqlplusctl stop
2010/10/22 11:47 2010/10/22 11:47

원본 : http://elflord.egloos.com/3388504
PHP등에서 오라클DB 접속 시도시 아파치 프로세스가 KILL 되는 경우가 있습니다. 이경우 프로세스 자체가 KILL 되어버리면 PHP나 DB의 에러 로그가 전혀 남지 않음은 물론, Apache의 errorlog에서도 단지 Segmentation Fault가 발생했다는 내용만 남을뿐 그밖에 어떤 흔적도 남지 않기에 원인을 추적하기가 무척 곤란한 경우가 많습니다.
사실 Segmentation Fault 의 원인은 너무나 다양하기에 특정하기가 무척 힘듭니다만, 오라클 관련 커맨드를 실행중에 이런 문제가 생겼다면, 많은 경우 퍼미션에 관련되었을 가능성이 높습니다.

이경우 확인할 사항은 다음과 같습니다.

1. 아파치 실행시 오라클 관련 파라메터들이 제대로 설정되어 있는가.
2. 아파치 유저에게 오라클 관련 파일에의 접근 퍼미션이 주어져 있는가.

특히 2번의 경우, 가령 예를 들어 오라클 클라이언트에서 DB 서버에 접근시에는
$ORACLE_HOME/network/admin/tnsnames.ora을 통해 서버 리스너 정보를 확보합니다만 여기까지 접근하는 parent 디렉토리, 혹은 tnsnames.ora자체가 other그룹에 read권한이 주어져 있지 않을 경우 기본설정의 Apache는 리스너 정보에의 접근에 실패하고 Segmentation Fault 를 일으킵니다.

이러한 퍼미션 관련의 문제를 해결하기 위해서 관련 디렉토리들에는 755, 각 파일들에 644 이상의 퍼미션을 부여함으로써 other그룹의 유저도 접근이 가능하도록 수정하는 방법이 있습니다만 많은 관련 디렉토리 및 파일들을 전부 수정하는 것은 효율이 나쁘고 other그룹의 타유저에게도 접근을 허용하는 세큐리티 홀을 발생시키게 됩니다. 그러므로 일반적으로 이 문제를 해결하기 위한 솔루션으로써는 Apache의 설정에서 유저 그룹을 오라클 유저그룹에 접근 가능한 권한의 그룹으로 설정하는 방법이 있습니다. 이경우 Apache의 유저 자체를 오라클 유저로 설정하는 것은 심각한 세큐리티 홀을 발생시킬 가능성이 있으므로 권장되지 않습니다.
2010/10/22 09:51 2010/10/22 09:51

class oracle_object {

  protected $theDB;

  protected $user;

  protected $pass;

  protected $db;


  function __construct($u, $p, $d) {

    $this->user = $u;

    $this->pass = $p;

    $this->db = $d;

  }


  function db_open () {

    $theDB  =  @OCILogon($this->user,  $this->pass,  $this->db);

    db_check_errors($php_errormsg);

  }


  function db_close() {

    @OCILogoff($theDB);

    db_check_errors($php_errormsg);

  }


  function __destruct () {

    print ("so long...");

  }


}
2010/10/21 10:08 2010/10/21 10:08

Acronis True Image Home

Windows 2010/10/21 09:49
Acronis True Image Home
윈도우용 시스템 백업/복구 프로그램

여러가지가 있지만 쓸만하다고 평가되고 있는 프로그램인 것 같아... 명칭이라도 올린다 ㅋ
2010/10/21 09:49 2010/10/21 09:49
IIS 7.0 에 Awstats(웹로그 분석) 설치 1/3

1. 개요
 가. Awstats 란 Perl 기반의 웹로그 분석기로 웹접속자 현황 등의 통계를 보여주는
       무료분석 툴입니다.

 나. 준비환경
  1) 윈도우 2008 Web + IIS 7.0
  2) Awstats 6-95.exe (http://sourceforge.net/projects/awstats/)
  3) ActivePerl-5-10.msi (http://www.activestate.com/activeperl/)


2. ActivePerl 설치
 가. 다운받은 ActivePerl 설치파일을 실행 후 'Next' 를 클릭합니다.

 나. License 에 'Accept'를 체크 후 'Next' 를 클릭합니다.

 다. 문서파일, 예제파일을 선택하지 않고 'Next'를 클릭합니다.

 라. IIS 가상디렉토리 생성을 제외하고 'Next' 를 클릭합니다.

 마. ActivePerl 설치가 완료 되었습니다.


3. IIS 7.0 환경설정
 가. IIS 관리자 콘솔에서 처리기 매핑 클릭

 
나. 처리기 매핑 페이지에서 마우스 오른쪽 - '스크립트 매핑 추가...' 클릭 합니다.

 다. 스크립트 매핑 추가 창에서 다음과 같이 입력합니다.
      요청경로 : *. cgi
      실행 파일 : C:\Perl\bin\perl.exe "%s" %s
      이름 : CGI Script Map

     요청 제한 을 클릭하여 '요청이 다음에 매핑되는 경우에만 처리기 호출' - '파일' 을
     선택합니다. '확인' - '확인' 을 클릭합니다.

 라. 스크립트 매핑 추가 ISAPI 안내창에서 '예' 를 클릭합니다.

 마. 확장자 pl 에대한 스크립트 매핑도 추가합니다.
     요청경로 : *.pl
     실행 파일 : C:\Perl\bin\perl.exe "%s" %s
     이름 : Perl Script Map

2010/10/20 16:49 2010/10/20 16:49

mcelog 란?

Linux 2010/10/20 11:30

mcelogDetection hardware erros

  • Communication error between CPU and motherboard.
  • Memory error - ECC problems.
  • CPU cache errors and so on.
리눅스에서 kernel을 건드리는 작업을 했을 경우 정말 운이 없을 경우 kernel panic이 난 적이 있다 ㅡㅡ 대부분 디스크 검사를 했을 경우 인것 같다;;

mcelog를 사용하여 심각한 하드웨어 문제를 파악할 수 있다 ㅋㅋ
kernel panic나면 짜증난다 안나도록 조심하세요 ㅋ

자세한 내용은 wiki에서 참조 하세요

http://en.wikipedia.org/wiki/Machine_Check_Exception
2010/10/20 11:30 2010/10/20 11:30
TAG ,