'2009/02'에 해당되는 글 5건

dbcp와 c3p0 커넥션 풀 유지하기 :: 2009/02/17 18:09

JDBC 커넥션 풀을 지원하는 대표적인 오픈소스 중에 아파치 DBCPC3P0가 있다. 이들은 Spring, Hibernate 등과 통합되어 DB 커넥션 풀을 제공하는 DataSource를 구성하여 자주 쓰인다.

오라클이나 MySQL 등 DBMS들은 기본적으로 특정 시간동안 실행이 없으면 해당 세션을 종료하게 된다. 이렇게 종료된 커넥션은 어플리케이션에서 오류를 발생시키게 되므로 커넥션을 유지하기 위한 별도 설정을 필요로 하게 된다. 커넥션을 얻어올 때 커넥션 테스트를 수행하고 실패하면 새로운 커넥션을 생성할 수 있다. 또한 idle 타임에 주기적으로 커넥션 테스트를 수행할 수도 있다.

아래는 dbcp를 이용하여 구성한 스프링 DataSource 설정의 예이다.

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close">
    <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
    <property name="url" value="jdbc:oracle:thin:@127.0.0.1:1521:orcl"/>
    <property name="username" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
    <property name="defaultAutoCommit" value="true"/>
    <property name="initialSize" value="5"/>
    <property name="maxActive" value="30"/>
    <property name="maxIdle" value="5"/>
    <property name="maxWait" value="30000"/>
    <property name="validationQuery" value="SELECT 1 FROM DUAL"/>
    <property name="testOnBorrow" value="true"/>
    <property name="testOnReturn" value="false"/>
    <property name="testWhileIdle" value="true"/>
    <property name="timeBetweenEvictionRunsMillis" value="60000"/>
</bean>

아래는 c3p0를 이용하여 구성한 스프링 DataSource 설정의 예이다.
<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
        destroy-method="close">
    <property name="driverClass" value="org.gjt.mm.mysql.Driver" />
    <property name="jdbcUrl" value="jdbc:mysql://localhost/testdb" />
    <property name="user" value="${jdbc.username}" />
    <property name="password" value="${jdbc.password}" />
    <property name="initialPoolSize" value="5" />
    <property name="maxPoolSize" value="30" />
    <property name="minPoolSize" value="5" />
    <property name="acquireIncrement" value="3" />
    <property name="acquireRetryAttempts" value="30" />
    <property name="acquireRetryDelay" value="1000" />
    <property name="idleConnectionTestPeriod" value="60" />
    <property name="preferredTestQuery" value="SELECT 1" />
    <property name="testConnectionOnCheckin" value="true" />
    <property name="testConnectionOnCheckout" value="false" />
</bean>

참조:
  - DBCP Configuration: http://commons.apache.org/dbcp/configuration.html
  - C3P0 Configuraion: http://www.mchange.com/projects/c3p0/index.html

파일 퍼미션 chmod & umask :: 2009/02/11 18:23

유닉스에서 파일 퍼미션을 제어하는 명령어들이다.

chmod

유닉스에서 파일 퍼미션을 변경할 때 사용하는 명령어이다.

- 퍼미션 대상: user, group, others --> u, g, o
- 접근 유형: read, write, execute --> r, w, x

퍼미션 값은 기본적으로 3자리 숫자로 표기되며, 각 자리수는 첫번째는 소유자, 두번재는 사용자 그룹, 세번째는 다른 사용자들을 의미한다.

각 숫자는 접근 유형의 조합에 따라 0~7까지의 값을 가질 수 있다. 권한을 부여할 때 각 접근 유형의 값을 더한(ADD) 값을 사용한다.

 - Read = +4
 - Write = +2
 - eXecute = +1

파일에 대한 접근 권한을 소유자에게 rwx, 사용자그룹에 rwx, 다른 사용자에게 r-x 로 퍼미션을 부여할 경우 명령은 다음과 같다.

$> chmod 775 파일명

또는

$> chmod a+rwx 파일명  (주의: a = all)
$> chmod o-w 파일명

umask

유닉스상에서 파일이나 디렉토리가 생성될 때 디폴트로 적용되어지는 파일 퍼미션을 셋팅하기 위한 명령어이다. chmod와 셋팅 방법은 유사한데, umask는 각 접근 유형 값을 7에서 뺀(SUBTRACT) 값을 사용한다.

 - Read = -4
 - Write = -2
 - eXecute = -1

기본으로 생성되는 파일이나 디렉토리 퍼미션 값을 775로 셋팅할 경우 다음과 같다.

7 = rwx --> 7 - 4(r) - 2(w) -1(x) = 0
5 = r-x --> 7 - 4(r) -1(w) = 2

따라서

$> umask 002

Chmod Calculator

데스크탑 컴퓨터 조립 :: 2009/02/06 13:54

그동안 노트북 컴퓨터만 4대째 쓰고 있다가 처음으로 데스탑으로 컴퓨터를 직접 조립했다. 환율이 올라 부품 가격이 좀 올랐고 좀처럼 떨어지질 않아 별로 좋은 시기는 아니었지만, 집의 컴퓨터가 빨라지니 제일 좋아하는 사람은 와이프다. 구입 사양은 아래와 같다.

구분 제품 비고
CPU [인텔] 코어2듀오 E8400 (울프데일/3.0Ghz)  
MOTHERBOARD [기가바이트] GA-EP45-UD3R 랜/사운드카드
VIDEO CARD [렉스텍] GeForce 9600GT 512MB 블랙라벨 쿨러마스터  
RAM [삼성전자] 삼성전자 DDR2 2G PC2-6400 4G
HDD [삼성전자] HD103UJ (1T/32M/SATA2) 1000G
ODD [삼성전자] SH-S223Q 블랙 LightScribe
CASE [다오코리아] F2 UV 블루 파워 별도
POWER [스카이디지탈] PS2-500EF 80PLUS 110V/220V
READER [세마] SFD-321F/T51 90 in 1 멀티리더기  
MONITOR [삼성전자] 싱크마스터 2433BW 24인치/1920x1200

<구입 후기>
- 만족스런 제품: 마더보드, 파워, 하드디스크, LCD 모니터
- 불만족스런 제품: 그래픽카드 --> 칩셋은 좋으나 쿨러 소음이 너무 심함. 드라이버를 깔면 좀 낫지만 그래도 소음의 주원인.
- 기타: 카드 리더기를 설치하니 탐색기에 "Removable Disk"가 5개나 보임.

vi 텍스트 검색 및 치환 :: 2009/02/03 17:01

1. 문자열 찾기 (검색)

    /foo --> 문자열 'foo'를 위에서 아래로 찾음
    ?foo --> 문자열 'foo'를 아래에서 위로 찾음
    n (소문자 n) --> 위에서 아래로 계속 찾음
    N (대문자 n) --> 아래에서 위로 계속 찾음

2. 문자열 바꾸기 (치환)

    %s/foo/bar --> 문자열 'foo'를 문자열 'bar'로 바꿈
    %s/foo/bar/c --> 문자열을 바꿀 때 확인함 (y는 바꿈, n은 취소)
    %s/foo/bar/i --> 문자열의 대소문자를 구분하지 않음
    %s/foo/bar/g --> 문서 내의 모든 문자열을 한꺼번에 바꿈
    %s/foo/bar/gi --> 문서 내의 모든 문자열을 대소문자 구분없이 한꺼번에 바꿈

3. 텍스트 문서 라인 끝의 ^M 문자 없애기

    %s/^M//g --> ^M은 Ctrl+V+M 으로 입력

Firefox Add-on: Live HTTP Headers :: 2009/02/03 15:02

Firefox Add-on인 Live HTTP Headers를 이용하여 브라우저를 통한 HTTP 요청/응답 헤더를 모니터링할 수 있다.

사용자 삽입 이미지