2008년 8월 1일 금요일

python 한글

python에서 뭐좀 할려고 하면 한글에서 자꾸 에러를 뱉어주신다.(히드라도 아니고...)
mysql 한글은

set_character_set('utf8')
execute("""set names utf8""")

시스템에서 현재 서버의 python 버전을 체크한 다음에 해당 디렉토리에 생성한다.

# /usr/lib/python*/site-package/sitecustomize.py
import sys
sys.setdefaultencoding('utf-8')

에 추가한다.

요것만 해주면 잘 돌아가 주신다.

2008년 7월 3일 목요일

vimrc

" default
set nocompatible    " Vim 디폴트 기능들을 사용함
set ai              " 자동 들여쓰기
set cindent         " C 언어 자동 들여쓰기
set smartindent     " 역시 자동 들여쓰기
set bg=dark         " background
set ts=4            "  간격
set sw=4            " 자동 들여쓰기 간격
set ruler           " 상태표시줄에 커서 위치를 보여줌
set backspace=2     " 삽입 모드에서 백스페이스를 계속 허용
set backspace=indent,eol,start  " more powerful backspacing
set showcmd         " (부분적인) 명령어를 상태라인에 보여줌
set showmatch       " 매치되는 괄호의 반대쪽을 보여줌
set ignorecase      " 찾기에서 대/소문자를 구별하지 않음
set incsearch       " 점진적으로 찾기
set fileencodings=utf-8,cp949
syntax on

if $LANG[0] == 'k' && $LANG[1] == 'o'
set fileencoding=korea
endif

if has("autocmd")
filetype plugin on
endif

" mapping
map  :25vs ./
map  O^Ww
map  :make  :cw 7
map   :!./%<
map  :set nonu
map  :set nu
map  :new
map  :vnew



gui
if has( "gui_running" )
set gfn=Bitstream_Vera_Sans_Mono:h9:cHANGEUL
" 초기 VI 시작시 크기 설정 w * h
au GUIEnter * winsize 90 50
" 초기 VI 시작 위치 설정
au GUIEnter * winpos 550 0
endif

set ai
set visualbell
set shiftwidth=4
set tabstop=4
set et
set cindent
set nu
syntax on
set history=1000
set sm
set mousehide
set scrolloff=2
colors murphy
set bs=2 fo=cqrt ls=2 shm=at ww=<,>,h,l 

map  :25vs ./
map  O^Ww
map  :make  :cw 7
map   :!./%<
map  :set nonu
map  :set nu
map  :new
map  :vnew


이것만 있으면 뭐...

2008년 6월 27일 금요일

정규표현식

1. 반복 메타 문자

* : 0회이상 반복
+ : 1회이상 반복
? : 0회 혹은 1회
{m} : m회 반복
{m,n} : m회 부터 n회까지 반복

2. 매칭 메타문자

. : 줄바꿈 문자를 제외한 모든 문자와 매치
^ : 문자열의 시작과 매치, [] 메타 기호안에서는 반대의 문자열
$ : 문자열의 마지막과 매치, [] 메타 기호안에서는 순수한 $문자로 매치
[] : 문자 집합, - 는 범위
| : or
() : 그룹으로 묶음

3. 이스케이프 기호

\\ : 역슬래쉬 문자
\d : 모든 숫자와 매치 [0-9]
\D : 숫자가 아닌 문자와 매치 [^0-9]
\s : 화이트 스페이스 문자와 매치 [\t\n\r\f\v]
\S : 화이트 스페이스 문자가 아닌 것과 매치 [^\t\n\r\f\v]
\w : 숫자 또는 문자와 매치 [a-zA-Z0-9]
\W : 숫자 또는 문자가 아닌것과 매치 [^a-zA-Z0-9]
\b : 단어의 경계를 표시, 영문자 혹은 숫자의 연속 문자열로 가정
\B : \b의 반대로 단어의 경계가 아님을 표시

4. 최소 매칭을 위한 정규식

*? : *와 같으나 문자열을 최소로 매치
+? : +와 같으나 문자열을 최소로 매치
?? : ?와 같으나 문자열을 최소로 매치
{m,n}? : {m,n}과 같으나 문자열을 최소로 매치

열혈강의 파이썬 정규식에서 발췌.

oracle query tip

oralce desc script

select a.COLUMN_NAME, '\t'), nvl(decode(A.NULLABLE,'N', 'NO', 'YES'), a.DATA_TYPE||'('||DECODE(a.DATA_TYPE,'NUMBER',a.DATA_PRECISION, a.DATA_LENGTH)||')', b.COMMENTS,
from   USER_TAB_COLUMNS a, USER_COL_COMMENTS b
where  a.TABLE_NAME = 'TEST'
and a.TABLE_NAME = b.TABLE_NAME
and    a.COLUMN_NAME = b.COLUMN_NAME
ORDER BY a.TABLE_NAME, COLUMN_ID

oracle table script

SELECT  DBMS_METADATA.GET_DDL('TABLE',TABLE_NAME,OWNER)
DBMS_METADATA.GET_DEPENDENT_DDL('INDEX',TABLE_NAME,OWNER),
DBMS_METADATA.GET_DEPENDENT_DDL('COMMENT',TABLE_NAME,OWNER)
FROM DBA_TABLES
WHERE OWNER = 'OWNER'
AND TABLE_NAME = 'TEST'

perl로 스트립트를 만드는데 table script는 lob관련 에러가 났다.
oracle connect 후에 추가한다.

$dbh->{LongReadLen} = 512 * 1024;
$dbh->{LongTruncOk} = 1;

그리고 Wide character in print 관련 warnning은
binmode STDOUT, ':utf8';
를 추가하면된다.

2008년 2월 25일 월요일

ubuntu8.04 oracle 10g

ubuntu 8.04 server에 oracle 10g를 설치하는 자료이다.

모든 작업은 admin권한으로 작업한다.

기본 필요한 패키지 설치
# apt-get install gcc binutils libaio1 lesstif2 lesstif2-dev make rpm libc6 libstdc++5 build-essential

원격 설치 관련

# apt-get install xlibs xbase-clients xterm

Redhat system 처럼 보이게 하는 작업

# ln -s /usr/bin/awk /bin/awk
# ln -s /usr/bin/rpm /bin/rpm
# ln -s /usr/bin/basename /bin/basename
# ln -s /etc /etc/rc.d  
# ln -s /lib/libgcc_s.so.1 /lib/libgcc_s.so 
# for i in 0 1 2 3 4 5 6 S ; do ln -s /etc/rc$i.d /etc/rc.d/rc$i.d ; done

oracle 계정 생성
# groupadd oinstall
# groupadd dba
# groupadd nobody
# useradd -g oinstall -G dba -p passwd -d /u01/oracle oracle
# useradd -g nobody nobody

create directory and set permissions
# mkdir -p /u01/oracle
# mkdir -p /u02/oradata
# chown -R oracle:oinstall /u01 /u02
kernel parameter /etc/sysctl.conf에 추가
# fs.file-max = 65535
# kernel.shmall = 2097152
# kernel.shmmax = 2147483648
# kernel.shmmni = 4096
# kernel.sem = 250 32000 100 128
# net.ipv4.ip_local_port_range = 1024 65535
# net.core.rmem_default = 1048576
# net.core.rmem_max = 1048576
# net.core.wmem_default = 262144
# net.core.wmem_max = 262144
/etc/security/limits.conf 추가
* soft nproc 2047
* hard nproc 16384
* soft nofile 1024
* hard nofile 65536
/etc/pam.d/login, /etc/pam.d/su 추가
session required /lib/security/pam_limits.so
변경 사항 적용
# sysctl -p
/etc/profile 추가
export ORACLE_BASE=/u01/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10gr2
export ORACLE_SID=SID
export PATH=$PATH:$ORACLE_HOME/bin
export NLS_LANG=AMERICAN_AMERICA.AL32UTF8
export SHLIB_PATH=$ORACLE_HOME/lib:$ORACLE_HOME/jlib:/usr/lib
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ORACLE_HOME/lib:$ORACLE_HOME/jdbc/lib
export CLASSPATH=$ORACLE_HOME/lib/classgen.jar:$ORACLE_HOME/jdbc/lib:
oracle 계정으로 실행
$ ./runInstaller -ignoreSysPrereqs
위와 같이 했을때 아무 문제없이 설치되었다. :)