2010년 6월 29일 화요일

pg_hba.conf

DataBase/PostgreSQL 2007/03/31 00:46
- pg_hba.conf 설정예제 -

인용 또는 결과 :

# TYPE DATABASE USER CIDR-ADDRESS METHOD
local all all trust

[root@good /root]$
_

설명 : local접속 즉 Unix Domain Socket을 통한 접속에 대해 모든 디비,유저에 대해서 패스워드 없이접근을 허용함

인용 또는 결과 :

# TYPE DATABASE USER CIDR-ADDRESS METHOD
host all all 127.0.0.1/32 trust

[root@good /root]$
_

설명 : TCP/IP접근시 127.0.0.1에서 접근시 모든디비,모든유저로의 접근에 패스워드 필요없음


인용 또는 결과 :

# TYPE DATABASE USER CIDR-ADDRESS METHOD
host all all 127.0.0.1/32 trust

[root@good /root]$
_

설명 : TCP/IP접근시 127.0.0.1에서 접근시 모든디비,모든유저로의 접근에 패스워드 필요없음


인용 또는 결과 :

# TYPE DATABASE USER CIDR-ADDRESS METHOD
host all openphp 192.168.0.1/32 md5

[root@good /root]$
_

설명 : 192.168.0.1 IP에서 TCP/IP로 openphp계정으로 모든 디비에
대한 접근이 허용되며, md5로 패스워드를 암호화 하여야함

인용 또는 결과 :

# TYPE DATABASE USER CIDR-ADDRESS METHOD
host openphp,openpython openphp 192.168.0.1/32 md5

[root@good /root]$
_

설명 : 192.168.0.1 IP에서 TCP/IP로 openphp계정으로 openphp,openpython
디비에 대한 접근이 허용되며, md5로 패스워드를 암호화 하여야함

인용 또는 결과 :

# TYPE DATABASE USER CIDR-ADDRESS METHOD
host remotedb +remotegroup 0.0.0.0/0 md5

좀더 많은 예제를 원하신면
http://borg.postgresql.org/docs/8.0/interactive/client-authentication.html#EXAMPLE-PG-HBA.CONF

===================================================
PostgreSQL의 인증관련(접근과 패스워드암호화 관련) 설정파일인 pg_hba.conf에 대해 설명합니다.

잠깐 ! : PostgreSQL의 pg_hba.conf 파일을 통해 외부접근에 대한 처리는 되도록
배재하는것이 좋습니다. 외부접근제어는 시스템 OS Kernel Level의

packet Filter(iptable,ipchain,pf,ip_f..)를 이용하는 것이 PostgreSQL로의 불법로그인으로 인한
PostgreSQL인증체크처리 부하라 던지 전체적인 성능에 이득이 됩니다.

이미Kernel단에서 해당 IP나 IP Block에 대해서 접근제어를 해주는 것인 전체적인 성능에 좋습니다.

- PG_HBA.conf -

pg_hba.conf는 PostgreSQL Host Base Authentication.의 약자로 initdb에서 생성된 클러스터 폴더(PGDATA)에
들어 있습니다. pg_hba.conf는 PostgreSQL의 인증 시스템관련 정보를 담고 있는 설정파일로 설정방법이
간단한편으로 실제적인 계정에 대한 정보는 PostgreSQL의 카탈로그 테이블인 pg_user 에서 관리하고

접근 Host나 Host의 테이타 전송방식과 암호화 전송방식에 대한 설정을 가지고 있다.
그런 이유로 계정에서 대한 권한이나 패스워드등의 변경은 실시간으로 적용이 가능하나 접근자의 접근방식과

암호전달 방식에 대해서는 pg_ctl reload나 pg_ctl restart를 통해 daemon이 다시 pg_hba.conf파일을
로드하게 해주어야 한다. 불편성이 있는듯 하지만. 불법 접근에 대한 처리시에 빠른 응답으로
PostgreSQL Server 부담을 줄이기 위함으로 최대한의 성능을 위한 것이다.


* 작성방법 *

[] : 로 불력화한 부분은 제외돼도 상관없다는 뜻입니다.

인용 또는 결과 :

HostType Databasename username [CIDR-addsredd or IP-Mask] Auth.-method [Auth.OPtion]

[root@good /root]$
_


* HostType *

    Host타입은 접근자의 접근 위치(Unix Domain Socket 또는 TCP/IP와 SSL TCP)와 통신의 암호화 관련 설정입니다.
    local , host , hostssl , hostnossl 을 지원한다.

    local은 자칫 locahost로 생각할수 있겠지만 local은 Unix Domain Socket을 통한
    접속에 해당하는 것으로 다소 해깔릴수 있으니 주의 하시기 바랍니다.

    잠깐! : 기존에 DB Application에서 PostgreSQL에 접속시 host 명을 주지 않으며,
    Unix Domain Socket으로 통신을하였으나 PostgreSQL 8.0이상부터는

    host=/tmp 또는 host=/tmp/.s.PGSQL.포트번호 로 접근을 하셔야만 pg_hba.conf에 설정한 local 설정에 해당됩니다.
    주의 하시기 바랍니다.

    hostssl은 ssl인증서를 통한 암호화 통신만 지원하면 localhost , 127.0.0.1 식의 즉 TCP/IP접속에 해당된다.

    hostnossl은 ssl 접속은 불가능 하며, TCP/IP통신을 지원합니다.

    host나 hostssl 로 설정한 상태에서 SSL기능을 사용하실려면 PostgreSQL 컴파일시
    --with-openssl 옵션을 주어야 하며,
    postgresql.confssl=true로 설정을 해주셔야만 합니다.
     


* DataBase Name *

    특정한 디비에 대한 접속을 제한할수있으며 ,(콤마)로 여러개의 디비로 접근 제어가 가능합니다.
    모든 디비에 대한 접근을 풀려면 all로 설정하시면 됩니다.
    만약에 설정할 디비가 수십개라면 기재하기 불편하실경우
    @dblist.txt 식으로 설정하고 dblist.txt
    PGDATA로 설정한 폴더의 안에 넣어 두시면됩니다.


* username *

    계정설정으로 ,(콤마)구분으로 할수 있으며,Database의 @파일명 식으로 따로 파일을 만들어서 처리하실수도 있습니다.
    PostgreSQL의 계정 그룹 카탈로그 테이블인 pg_group 또는 create group 명령으로 그룹을 만들어 계정들은 하위(SYSID)에 묶어두었을때는
    +(플러스) 키를 붙인 그룹명으로 설정하면 해당 그룹에 대한 모든 접근이 가능해집니다.


* [CIDR-addsredd or IP-Mask] *

    이 부분으로 접근에 대한 IP나 IP Block을 차단하는것보다는 Kernel Level의 Packet filter로 막는것이 전체적인 성능향상에 도움이 됩니다.
    다만 다중사용(웹호스팅,ASP등)의 경우를 제외하고는 이부분 사용을 자재해주시기 바랍니다. PortgreSQL의 기본 Service Port는 5432입니다.

    IPv4 CIDR 구분으로
    해당 C Class에 대해 모두 접근처리를 할떄는 :
    xxxx.xxxx.xxxx.0/24
    해당 IP에 대한 접근처리를 하실떄는 :
    xxxx.xxxx.xxxx.xxxx/32

    위의 식으로 설정하시면 되면 아래 예제에서 좀더 자세히 알려드리겠습니다.


* Authentication Method *

    이 부분은 실제적인 계정의 패스워드에 대한 서버로의 전송을 어찌할것인가를 정하는것입니다.
    PostgreSQL Sever와 Client와의 접속에는 처음 Client가 접속을 하게 되면 pg_hba.conf에 대해 검색해서
    해당 접속에 대한 접근허용을 확인하고 확인이 되면 이 Auth.Method에 설정된 암호화 방식으로 패스워드를 전송하라고,
    응답메세지를 보내고 다시 CLient가 Server로 로그인을 하게 되는 방식입니다.

    인용 또는 결과 :

    trust : 패스워드 없이 접근 가능.주위할것은 local(Unix Domain Socket)이외에는 적극 비추천.!

    reject : 당돌히 거부.!!

    md5 : 패스워드를 md5로 암호화 해서 전송 (기본 적극 추천)

    crypt : cryppt 로 암호화 해서 전송 PostgreSQL 7.2 이후부터는 사용되지 않습니다.(이전 버전설정 호환용)

    password : 이건 그냥 text로 패스워드를 전송하는건데 사실 하느니 못합니다. 스니핑에 바로 보이니

    krb4,krb5 : KerberOS V4,5를 지원한다.

    ident : IDent Map방식은 추천드리지는 않습니다. 로그인후 접속유지되는 구조가 아닌경우는

    pam : PAM(Pluggable Authentication Modules) 서비스를 사용한 인증입니다.ident와 마찬가지로 비추

    [root@good /root]$
    _

위에서 설명드린것중 SSL,KerberOS와 Ident,Pam인증을 따로 다른 장에서 설명을 드리겠습니다. (현재 테스트중)
추천드리지않는 다고하나 이는 일반적인 평준화되어진 시스템에서는 비추천이지만 특정서비스에서는 필요한것이므로

테스트하여 완벽해지게 스스로 이해하고나면 올려드리겠습니다.(시간이 좀 나면요 ^^)
위중 TCP/IP를 통한 접속의 경우는 기본은 md5로 하시기 바랍니다. 최소한의 보안을 위해 md5를 쓰시기 바랍니다.

덧붙일 부분은 ssl 관련인데요,

ssl 관련은 pg_hba.conf 와, postgresql.conf 설정만으로 해결나지 않습니다.


옛날 문서이지만,

http://database.sarang.net/index.php?inc=read&aid=5502&criteria=pgsql&subcrit=tutorials&id=&limit=20&keyword=&page=2

페이지를 참고하시고,

8.0 부분에서 또 바뀌었습니다.

이부분에 대한 이야기도 또 한번 자리를 내어해야겠네요.

2010년 6월 25일 금요일

Delphi 주요 함수(Function) 및 프로시져(Procedure)

Delphi 주요 함수(Function) 및 프로시져(Procedure)

procedure read(v1,v2,v3....);

procedure readln(v1,v2,v3...);

   값을 입력받은 후 다음 행으로 이동

procedure write(v1,v2,....);

procedure writeln(v1,v2...);

   값을 출력한 후 다음 행으로 이동

function chr(x):char;

  x(아스키 코드값)에 해당하는 문자로 변환

function ord(x):integer; x(문자)에 해당하는 순서

   즉 아스키코드값 리턴

function int(X: Extended): Extended;

   실수값의 소숫점이하를 버리고 정수부분만 취한다.

    Int(32.45)  ← 32.0

function trunc(X: Extended): Int64;

   실수값의 소숫점이하를 버리고 정수부분만 취한다.

    trunc(32.45) ← 32

function odd(x:integer):boolean;

   x가 홀수면 true, 짝수면 false를 되돌린다.

function random(x:integer):integer;

   0~x-1 사이의 정수 난수 발생

function random:real;

  0~1사이의 실수 난수 발생

procedure randomize;

function upcase(ch:char):char;

   소문자를 대문자로 변환

procedure inc(var x[;n:integer]);

   x의 값을 일정하게 증가

   inc(x);   ← x:=x+1

   inc(x,2);   ← x:=x+2

procedure dec(var x[;n:integer]);

   x의 값을 일정하게 감소

   dec(x);   ← x:=x-1

   dec(x,2);   ← x:=x-2

function abs(x:integer):integer; 절대값(정수)

function abs(x:real):real; 절대값(실수)

function sqr(x):x 와 동일 type

   x의 제곱값을 리턴

function sqrt(x:real):real;

   x의 제곱근값을 계산하여 리턴 (x>0)

function length(s:string):integer;

  문자열의 길이

function copy(s:string;x:integer;cnt:integer):string;

  문자열 s를 x로 부터 cnt만큼 자른다

procedure delete(var s:string;x:integer;cnt:integer);

  문자열 s를 x부터 cnt만큼 오려낸다

procedure insert(so:string;var s:string;idx:integer);

  s문자열의 idx위치에서 so문자열을 삽입하며, s문자열  의 나머지 문자들은 우측으로 이동한다.

function pos(substr,s:string):byte;

  문자열 s를 처음부터 검색하여 substr문자열이 있는지를 확인하여 위치를 되돌린다.

procedure str(s[:width[:decimal]];var s);

  수치형 데이터를 문자열 변환후 s에 기억

procedure val(s:string;var v:integer;var code:integer);

  수치형 문자를 숫자로 변환후 v에 기억

  변환과정에서의 error는 code에 기억

function eof(var f:text):boolean;

   파일의 끝에 도달했는지를 확인

2010년 6월 18일 금요일

Ajax 강의자료 및 관련사이트 모음 (펌자료)


AJAX 강의 1장 - AJAX 소개

AJAX 강의 2장 - XMLHttpRequest 오브젝트 사용하기
AJAX 강의 3장 - 서버와 통신하기(요청/응답 처리)
AJAX 강의 4-1장 - 폼 입력값 검증 하기
AJAX 강의 4-2장 - 응답 헤더정보 다루기
AJAX 강의 4-3장 - 동적으로 리스트 박스 로딩하기
AJAX 강의 4-4장 - auto refresh 기능 구현하기
AJAX 강의 4-5장 - Progress Bar 기능 구현하기
AJAX 강의 4-6장 - 툴팁 구현하기
AJAX 강의 4-7장 - 동적으로 웹페이지 수정하기
AJAX 강의 4-8장 - 웹서비스 접근하기
AJAX 강의 4-9장 - 자동완성 기능 구현하기
AJAX 강의 5-1장 - JSDoc 을 이용한 자바스크립트 다큐먼트 생성하기
AJAX 강의 5-2장 - FireFox 확장기능을 이용한 HTML 코드검사
AJAX 강의 5-3장 - Dom Inspector 를 이용한 노드검색
AJAX 강의 5-4장 - 자바스크립트 소스코드 검증기 JSLint
AJAX 강의 5-5장 - 자바스크립트 파일압축 및 Obfuscation
AJAX 강의 5-6장 - Web Developer Extension for FireFox
AJAX 강의 5-7장 - 자바스크립트 심화학습/객체지향(상속)
AJAX 강의 5-8장 - 자바스크립트 심화학습/객체지향(은닉)
AJAX 강의 5-9장 - 자바스크립트 심화학습/객체지향(종합)
AJAX 강의 6-1장 - JsUnit 활용/시작하기
AJAX 강의 6-2장 - JsUnit 활용/테스트 메소드작성
AJAX 강의 6-3장 - JsUnit 활용/setUp & tearDown 메소드
AJAX 강의 6-4장 - JsUnit 활용/setUpPage 메소드
AJAX 강의 6-5장 - JsUnit 활용/Tracing and Logging
AJAX 강의 6-6장 - JsUnit 활용/page timeout 필드
AJAX 강의 6-7장 - JsUnit 활용/Progress bar 및 상태표시 필드
AJAX 강의 6-8장 - JsUnit 활용/쿼리 스트링 사용하기
AJAX 강의 7-1장 - 디버깅툴/XMLHttpRequest Debugging
AJAX 강의 7-2장 - 디버깅툴/FireFox 자바스크립트 콘솔
AJAX 강의 7-3장 - 디버깅툴/Microsoft Script Debugger
AJAX 강의 7-4장 - 디버깅툴/Venkman
AJAX 강의 7-4장 - 디버깅툴/Venkman(계속)

[출처] AJAX 강의 1장 - AJAX 소개|작성자 jinoxst



Ajax 관련 사이트 모음


http://ajaxian.com/

http://ajaxpatterns.org/

http://ajaxblog.com/


온라인 무료 강좌

http://www.javapassion.com/portal/


JavaScript , jQuery , AJAX 강의 모음




2010년 6월 15일 화요일

FireBird DataBase 생성

1 C:\Program Files\Firebird\Firebird21\bin>isql -user sysdba -password masterkey
2 Use CONNECT or CREATE DATABASE to specify a database
3 SQL> create DataBase c:\TEST.FDB

2010년 6월 8일 화요일

Postgresql 현재 데이터베이스의 테이블 명 Select 문

SELECT relname AS tablename
FROM pg_class WHERE relkind IN ('r')
AND relname NOT LIKE 'pg_%' AND relname NOT LIKE 'sql_%' ORDER BY tablename

2010년 6월 7일 월요일

KT 인터넷 공유기 체크 피하는 방법(인증 수 제한조치)

정해진 회선을 내가 나눠서 쓰는데 딴지거는 KT. 참 얄밉군요.

불합리한건 시민들이 단합해서 혼내줘야 하는데 말이죠.

근데, 그래봐야  많은 업체들이 KT망을 빌려쓰고 있는지라..

KT가 압박하면 어떻게 될지도 모르공~

엄밀하게 말하면 KT에서 하는짓은 개인정보 불법 유출이거든요.

힘센넘이 장땡인 세상이니 뭐 외쳐바야 듣지도 않겠지만.

서두가 길었네요.. 여튼 미운 KT에서 하는짓 딴지걸어봅니당.

참고로, 약간의 불편함은 감수하셔야 합니다.

설명은 XP위주로 합니다. 비스타는 귀차니즘을 핑계로... ^^;;;

 

  추가 : Vista는 로컬 보안정책을 여는 과정을 제외하고는 거의 동일합니다. 댓글을 참조하세요 ^^

 

#. 들어가기전에

공유기 인증 초과로 인해서 접속할 수 없다. 인증하면 다른 컴퓨터가 팅길거다. 하는 창이 뜨면

창에서 IP를 잘 확인하고 메모해둡니다.

저의 경우는 59.9.191.11 이 뜨더군요. 잘 메모해뒀습니다 ^^

 

#. 로컬 보안 정책 설정.

윈도우에서 기본적으로 지원하는 참 강력한 IP필더링 기능입니다. 잘 이용들은 않으시지만...

우선, 이 기능을 이용해서 KT로 정보를 보내는것을 막아버립니다.

(XP Home에디션 사용자의 경우에는 로컬 보안정책이 없습니다. XP 홈 에디션을 사용하시는 분은

XP Home에디션에서 IP 보안정책 사용하기 http://blog.daum.net/iwittooh/7429949 글을 참조로 하시기 바랍니다.)

 

1. 제어판 -> 관리도구  메뉴를 여시면 [로컬 보안 정책] 이라는 메뉴가 있습니다.

이 아이콘을 클릭해서 로컬 보안 설정 창을 여시면 다음과 같은 창이 보입니다.

 

 

위 그림에서 보는 것 처럼 왼쪽 창에서 [IP 보안 정책(위치: 로컬 컴퓨터)] 를 선택합니다.

그러면 오른쪽에서 보는것 처럼 내용이 나옵니다.. 위에 그림에 [내보안정책]을 제외하고는

기본적으로 있는 정책(3가지)입니다.

 

2. 새 보안 정책 만들기.

이제 사용할 나만의 보안 정책을 만듭니다.

동작 ->  IP 보안 정책 만들기(C) 메뉴를 클릭합니다.

아래와 같은 마법사가 뜹니다.

 

다음 메뉴를 누릅니다.

 

3.정책 이름 설정

 여긴 단순히 이름을 적는 곳입니다. 그냥 적으시면 됩니당. 다음~~

 

4. 기본 응답 규칙 활성화

 기본적으로 설정돼 있는 정책을 사용할지 여부를 결정하는 곳입니다. 체크를 지웁니다.

다시 다음~!

 

5. 기본정책 추가 완료.

정책이 추가되었습니다. 아직 축하할 단계는 아닙니다 하하.. 마침을 꾹 눌러줍니다.

 

6. 정책 등록 정보

 이제 틀은 완성됐습니다. 하지만 아직 알맹이를 만드는 과정이 남았습니다.

추가(D) 버튼을 클릭합니다.

 

7. 규칙 마법사 시작.

뭐.. 다음을 눌러줍니다..

 

8. 보안 규칙 마법사

역시나 다음~ 할거 없습니다. ㅎㅎ.

 

9. 네트워크 종류 설정

모든 네트워크 연결을 고르고 패스~

 

10. 필터 추가 시작

 이제 케이티를 골라낼 필더를 만들어줍니다. 추가(A) 버튼을 클릭합니다.

[참고로 케이티접속차단ㅋ] <-- 요건 제가 만든겁니다 ㅎㅎ

 

11. 필터 이름 지정

 필더 이름을 지정하는 곳입니다. 좀전에 보신 [케이티접속차단ㅋ] 라는 제목은 여기서 적어준 녀석입니다.

그리고 여기서 실제 사용할 대상 IP들을 지정합니다.

추가(A) 버튼을 눌러줍니다.

 

12. 필터 마법사 시작

 이제 필터 마법사를 시작합니다. 다음~!

 

13. 설명 저장. 미러 속성 지정.

 설명을 적어둡니다. 귀찮으니 패스~ 다음!

 

14. 출발지 지정

 신호가 시작되는 지점을 선택합니다.

내 피시에서 KT가 가져가는걸 막는거니 원본주소에서 내 IP 주소를 선택합니다.

선택후 다음페이지로 갑니다.

 

15. 목적 주소 지정

좀전에 출발지를 골랐으니 어디를 목적으로 가는지도 골라야 합니다.

우리가 메모한 내용을 써먹을 차례입니다. 먼저 대상주소(D)부분을 고르면 여러가지가 나오는데,

우리가 사용할 것은 [특정 IP 주소] 와  [특정 IP 서버넷] 입니다.

 

[특정 IP 주소]는 하나의 타겟 주소만을 대상으로 할 때 사용하구요,

[특정 IP 서버넷]의 경우는 다수의 IP 주소를 가지는 대역을 지정하는 방법입니다.

 

저같은 경우는 대역을 지정하는 방법을 택했습니다.

위와 같이 설정 할 경우 59.9.191.0~59.9.191.255 의 256개의 IP를 가지는 네트워크를 차단하겠다는 의미입니다.

 

잘 이해가 힘드신 분들은 IP 주소(R) 부분에 메모한 3번째 숫자까지 적고 네번째 숫자는 0을 적으시고

아래줄 서브넷 마스크를 255.255.255.0으로 써 주시면 해당 대역으로 가는 모든 신호를 차단할 수 있습니다.

설정하셨으면 다음을 누릅니다.

 

16. 프로토콜 종류 설정

출발지와 목적지가 설정됐으니, 기차를 타고가는건지, 버스를 타고가는건지를 지정해야 합니다.

TCP의 80과 8080등 특정 포트만 막으면 되지만. 역시 귀찮으므로 모두 막습니다. ^^;;

다음~!

 

17. 필더 마법사 완료

 드디어 끝이....난건 아니구요. 아직 좀 남았습니다. 마침을 눌러줍니다.

 

18. 필터추가 확인.

마침을 누르면 11번째에 본 화면이 나오는데, IP 필터 부분에 좀전에 추가한 규칙이 추가되어 있음을 확인하실 수 있습니다.

이렇게 한가지 필더만 추가하셔도 되지만, 같은 방법으로 메모한 IP에서 내 컴퓨터로 오는 모든 신호를 차단해주는 규칙을

하나 더 추가하시면 좀 더 완벽하겠죠(14.번 출발지의 주소를 메모한 IP로, 15번 도착지의 IP를 내 IP 로 하는 필터를 추가하는 겁니다).

그렇게 추가를 하시면 IP 필터(S)의 란에 한 줄이 더 추가 됩니다.

규칙 추가가 끝나셨으면 확인을 눌러줍니다.

 

19. 추가된 필터 확인 및 선택.

 위 그림에서와 같이 열심히(?) 추가한 필터를 확인하고 선택해줍니다.

앞에 라디오 동그라미에 검은점이 있어야(설마 모르시는분이...) 선택된겁니다.

다음을 누릅니다.

 

20. 필터 동작 설정

 좀전에 필터를 설정했다면 이제 그 필터를 어떻게 적용할지를 지정하는 부분입니다.

캡쳐된 사진에는 4가지 선택 사항이 있지만 4가지 중에서 [차단]은 제가 추가한겁니다.

같이 추가해보겠습니다. 추가(A)버튼을 눌러줍니다.

 

21. 필터동작 마법사

 다음을 눌러줍니다.

 

22. 필터 동작이름 지정

 여기서는 역할을 대표하는 이름이므로 신경써서 적어줬습니다. 거부인데 패스 라고 적을수는 없으므로 ;;;;

 

23. 필터 동작 옵션 선택

 필터가 어떤 행동을 하도록 할 것인지를 지정합니다. 허용, 거부, 보안 협상 이렇게 세 가지 선택이 가능합니다.

우리의 목적은 케이티가 못가져가도록 하는것이므로 거부(L)에 체크를 합니다. 다음!!

 

24. 필터동작 설정 완료

 휴. 드뎌 거의 끝났습니다. 마침을 눌러줍니다.

 

25. 동작 선택

 좀전에 추가한 [거부] 메뉴가 보입니다. 선택하고 다음!

 

26. 규칙 설정 완료~

속성을 다시 편집하지 않을 것이므로 속성편집(P) 에 체크를 지우고 마침을 눌러줍니다.

 

27. 등록된 규칙 확인 / 선택

 좀전에 등록한 정책이 추가되어 있고, 체크가 되어 있는것을 확인하실 수 있습니다.

확인 버튼을 누르면 모든 추가 과정이 끝납니다.

 

28. 정책 할당하기

 이제 추가된 규칙을 활성화 하기만 하면 됩니다.

새로 추가한 정책을 선택 한 후 오른쪽 클릭, 할당(A) 을 눌러줍니다.

이때 주의할 점이 보안서버 같은걸 선택하면 인터넷이 안됩니다.

정책 할당 후에 다음장에서 하는 방법으로 접속 시도를 해도 인터넷이 되지 않는다면

이 정책 설정이 잘못된 것이므로 정책할당을 해제 하신다음

추가된 규칙 내용을 처음부터 확인해보시기 바랍니다.

 

 

#. 인터넷에 접속.

위의 설정을 완료하고 정책이 할당되고 나면, http://www.daum.net  처럼 단순하게 도메인을 입력해서

홈페이지에 접속을 하려고 하면 한참동안 페이지 연결을 하지 못하다가 페이지를 찾을 수 없다는 메세지를 보여줍니다.

이때 http://www.daum.net/?abd 와 같이 뒤쪽에 임의의 인자(?표와 임의의 문자)를 붙여주면 이상없이 접속이 되실겁니다.

약간의 불편함이지만 KT에 내 정보를 보내지 않고 쓸 수 있는 좋은 방법입니다.

 

 

#. 마무리하며...

나에게 할당된 라인을 내가 어떻게 활용하는가 하는건 나의 선택이라고 생각합니다.

앞으로 한 가정에 IP들이 수없이 늘어날텐데, 그런 IP들마다 비용을 지불하고 사용할 수 없고,

그렇게 할 필요도 없다고 생각합니다.

저와 같은 생각을 가지신 분들이 KT 공유기 체크를 신경쓰지 않고 편안하게 인터넷을 즐기실 수 있기를 바라며

마무리하겠습니다.  즐거운 인터넷~~ 되시기를 ㅎㅎ

 

 

덧붙임. 이 글은 제가 직접 작성한 글이므로 누구던지 자유롭게 퍼가셔도 됩니다.

  단, 상업적 이용(할사람 없겠지만 ㅎㅎ)은 불허합니다.

 

퍼온글입니다. 원본은 http://blog.daum.net/iwittooh/7429948 입니다.

2010년 6월 5일 토요일

PostgreSql Modifying Tables

5.5. Modifying Tables

When you create a table and you realize that you made a mistake, or the requirements of the application change, then you can drop the table and create it again. But this is not a convenient option if the table is already filled with data, or if the table is referenced by other database objects (for instance a foreign key constraint). Therefore PostgreSQL provides a family of commands to make modifications to existing tables. Note that this is conceptually distinct from altering the data contained in the table: here we are interested in altering the definition, or structure, of the table.

You can

  • Add columns,

  • Remove columns,

  • Add constraints,

  • Remove constraints,

  • Change default values,

  • Change column data types,

  • Rename columns,

  • Rename tables.

All these actions are performed using the ALTER TABLE command.

5.5.1. Adding a Column

To add a column, use a command like this:

ALTER TABLE products ADD COLUMN description text;

The new column is initially filled with whatever default value is given (null if you don't specify a DEFAULT clause).

You can also define constraints on the column at the same time, using the usual syntax:

ALTER TABLE products ADD COLUMN description text CHECK (description <> '');

In fact all the options that can be applied to a column description in CREATE TABLE can be used here. Keep in mind however that the default value must satisfy the given constraints, or the ADD will fail. Alternatively, you can add constraints later (see below) after you've filled in the new column correctly.

5.5.2. Removing a Column

To remove a column, use a command like this:

ALTER TABLE products DROP COLUMN description;

Whatever data was in the column disappears. Table constraints involving the column are dropped, too. However, if the column is referenced by a foreign key constraint of another table, PostgreSQL will not silently drop that constraint. You can authorize dropping everything that depends on the column by adding CASCADE:

ALTER TABLE products DROP COLUMN description CASCADE;

See Section 5.11 for a description of the general mechanism behind this.

5.5.3. Adding a Constraint

To add a constraint, the table constraint syntax is used. For example:

ALTER TABLE products ADD CHECK (name <> '');
ALTER TABLE products ADD CONSTRAINT some_name UNIQUE (product_no);
ALTER TABLE products ADD FOREIGN KEY (product_group_id) REFERENCES product_groups;

To add a not-null constraint, which cannot be written as a table constraint, use this syntax:

ALTER TABLE products ALTER COLUMN product_no SET NOT NULL;

The constraint will be checked immediately, so the table data must satisfy the constraint before it can be added.

5.5.4. Removing a Constraint

To remove a constraint you need to know its name. If you gave it a name then that's easy. Otherwise the system assigned a generated name, which you need to find out. The psql command \d tablename can be helpful here; other interfaces might also provide a way to inspect table details. Then the command is:

ALTER TABLE products DROP CONSTRAINT some_name;

(If you are dealing with a generated constraint name like $2, don't forget that you'll need to double-quote it to make it a valid identifier.)

As with dropping a column, you need to add CASCADE if you want to drop a constraint that something else depends on. An example is that a foreign key constraint depends on a unique or primary key constraint on the referenced column(s).

This works the same for all constraint types except not-null constraints. To drop a not null constraint use

ALTER TABLE products ALTER COLUMN product_no DROP NOT NULL;

(Recall that not-null constraints do not have names.)

5.5.5. Changing a Column's Default Value

To set a new default for a column, use a command like this:

ALTER TABLE products ALTER COLUMN price SET DEFAULT 7.77;

Note that this doesn't affect any existing rows in the table, it just changes the default for future INSERT commands.

To remove any default value, use

ALTER TABLE products ALTER COLUMN price DROP DEFAULT;

This is effectively the same as setting the default to null. As a consequence, it is not an error to drop a default where one hadn't been defined, because the default is implicitly the null value.

5.5.6. Changing a Column's Data Type

To convert a column to a different data type, use a command like this:

ALTER TABLE products ALTER COLUMN price TYPE numeric(10,2);

This will succeed only if each existing entry in the column can be converted to the new type by an implicit cast. If a more complex conversion is needed, you can add a USING clause that specifies how to compute the new values from the old.

PostgreSQL will attempt to convert the column's default value (if any) to the new type, as well as any constraints that involve the column. But these conversions may fail, or may produce surprising results. It's often best to drop any constraints on the column before altering its type, and then add back suitably modified constraints afterwards.

5.5.7. Renaming a Column

To rename a column:

ALTER TABLE products RENAME COLUMN product_no TO product_number;

5.5.8. Renaming a Table

To rename a table:

ALTER TABLE products RENAME TO items;