Search Results for '전체 분류'


2051 posts related to '전체 분류'

  1. 2009/04/27 [시스템 관리] A.I v081210 XP/Vista/2008/Office 인증도구
  2. 2009/04/21 Trim 공백제거
  3. 2009/04/21 윈도우 DoS 공격 방어 레지스트리 권장값과, 보안관련 레지스트리 키
  4. 2009/04/21 vbscript decode
  5. 2009/04/21 프록시 리스트 proxy list
  6. 2009/04/21 테이블명세서생성스크립트::SQL Database documentation script
  7. 2009/04/21 FSO example
  8. 2009/04/21 read/write configuration class (xml version)
  9. 2009/04/21 dbhelper class
  10. 2009/04/21 view source &asp coloring
  11. 2009/04/21 Class implementation for using webservices in ASP
  12. 2009/04/21 ASP JSON Utility
  13. 2009/04/21 fckeditor 이미지 업로드 시 한글명 깨지는 문제
  14. 2009/04/21 경고없이 창닫기
  15. 2009/04/21 HTML, js 소스정리기 - editplus plugin
  16. 2009/04/21 mssql의 my sql의 password() function과 비슷한 함수
  17. 2009/04/21 보안면에서나 성능면에서 exec보다 유리한 sp_executesql
  18. 2009/04/21 먼저 아래와 같이 c#을 작성하여 test.cs로 저장합니다.
  19. 2009/04/21 DeZend (PHP 디코딩)
  20. 2009/04/20 PHP 파일 업로드 용량 제한 3
  21. 2009/04/16 [그래픽/한글] ADOBE CS4 Series 키젠입니다. 5
  22. 2009/04/16 알아두면 좋은 DBCC 명령어
  23. 2009/04/16 jQuery, Prototype 그리고 Ajax
  24. 2009/04/16 Semantic Web
  25. 2009/04/16 Semantic Web
  26. 2009/04/16 드림위버에서 jQuery를 쉽게 쓰자
  27. 2009/04/16 자바스크립트 라이브러리 Jquery 플러그인
  28. 2009/04/15 Ajax Loading Image 로딩 이미지 Resource
  29. 2009/04/13 워터마크삽입,이미지의 크기, 포맷 일괄 변경 "Portable ArtResize" v1.1.0
  30. 2009/04/13 메인보드 정보를 알고 싶습니다. Serial.vbs
음.. 브라우저별 핵. 뭐 꼼수죠? 어쨌든 정리했습니다.
참고용으로 하셔도 되고 실로 써먹어도 되겠지만..
우리나라 웹 현실에 쓸만한게 몇개나 있을까요?
어쨌든 착하게 정리했네요.

/***** 선택자 핵 ******/

/* IE 6 이상 */

* html #uno  { color: red }

/* IE 7 이상 */

*:first-child+html #dos { color: red }

/* IE 7 과 현대 브라우저 */

html>body #tres { color: red }

/* 현대 부라우저 (IE 7 빼고) */

html>/**/body #cuatro { color: red }

/* 오페라 9.27 이상 */

html:first-child #cinco { color: red }

/*사파리 */

html[xmlns*=""] body:last-child #seis { color: red }

/*사파리 3+, 크롬 1+, 오페라 9+, 불여우 3.5+ */

body:nth-of-type(1) #siete { color: red }

/* 사파리 3+, 크롬 1+,  오페라 9+, 불여우 3.5+ */

body:first-of-type #ocho {  color: red }

/* 사파리 3, 크롬 1+ */

@media screen and (-webkit-min-device-pixel-ratio:0) {

 #diez  { background: #FFDECE; border: 2px solid #ff0000  }

}

/***** 속성 핵 ******/

/* ie6 이상 */

#once { _color:blue }

/* ie7 이상 */

#doce { *color: blue } /* or #color:blue */

/* '현대 브라우저'는 IE8 을 포함합니다, 여기에 동의하던 말던.. :) */
2009/04/27 19:08 2009/04/27 19:08
팁이라기보단 참고정도로 봐주세요...^^;
prototypejs 를 이용하구요...일반적으로 사용하지 않는 분들도 테스트 해볼 수 있는 페이지를 따로 올려볼께욤 조만간에;;;
iframe resize 에 대해 질문도 많이 올라오고 해서 테스트 해보시라고 올립니다.

참고는 여기서...
http://ajaxstudy.net/demo/view.php?&uid=17&page=1

Event.observe(window,'load',function() {

    Event.observe('aa','load',function() {

        new ASiframeresize($('aa'));

    });

    new ASiframeresize($('aa'));

});

function ASiframeresize(el) {

    this.El = el;
    this.oldLocation = null;
    this.setCount = 0;
    this.maxCount = 10;
    this.setDelay = 200;
    this.setTimer = null;
    this.setup();


}

ASiframeresize.prototype = {

    setup : function() {

        var oThis = this;
        Event.observe(this.El.contentWindow.document,'mousedown', function(event) {

            if(Event.element(event).tagName.toLowerCase() != 'body') {

                if(oThis.setTimer) {
                    oThis.setCount = 0;
                    window.clearTimeout(oThis.setTimer);
                    oThis.setTimer = null;
                }
                oThis.resize();

            }

        });

        this.resize();

    },

    resize : function() {

        this.setCount++;

        if(this.El.contentWindow.document.body) {

            this.El.setStyle({
                
                height : this.El.contentWindow.document.body.offsetHeight + 'px'

            });

        } else {

            this.El.setStyle({
                
                height : this.El.contentWindow.document.documentElement.offsetHeight + 'px'

            });


        }
        this.move();

    },

    move : function() {

        if(this.setCount > this.maxCount) {

            this.setCount = 0;
            if(this.setTimer) {
                window.clearTimeout(this.setTimer);
                this.setTimer = null;
            }

        } else {

            var oThis = this;
            var fn = function(){ oThis.resize();}
            this.setTimer = window.setTimeout(fn,oThis.setDelay);

        }

    }

    

}

허접하지만 혹시라도 그럼^^;

출처: http://www.phpschool.com/gnuboard4/bbs/board.php?bo_table=ajax&wr_id=893&page=1
2009/04/27 19:07 2009/04/27 19:07

사용자 삽입 이미지

디스크 파티션 복구에 유용한 testdisk 입니다.
 
리눅스용과 윈도우용 2개입니다.
 
의외로 강력한 기능을 자랑합니다.
2009/04/27 17:18 2009/04/27 17:18
사용자 삽입 이미지

Tag&Rename은 MP3 파일에 포함된 가수 및 장르, 앨범 타이틀 등의 태그 정보를 편집할 수 있는 태그 편집기 입니다.


MP3 태그라 하면 MP3 파일의 마지막에 파일에 관련된 각종 정보를 저장하고 있는 부분을 말합니다. 이러한 태그에 제목 및 가수, 장르 등의 데이터를 정확히 입력, 관리 함으로써 좀더 편리하게 MP3 파일을 관리할 수 있도록 해주며 프로그램에서는 한 개의 태그에 대한 편집 뿐만 아니라 다수의 MP3 파일에 대해 손쉬운 방법으로 태그 편집이 가능합니다.


주요특징


멀티 파일 및 메뉴얼 태그 편집기

ID3v1 및 ID3v2 MP3 태그 지원

ID3v1를 ID3v2 태그 원 클릭 변환

CSV 추출 마법사

CDDB1 지원

ID3 태그 필드 Swap

M3U 플레이 리스트 생성 지원

외부 기본 재생기를 사용한 MP3 및 VQF 포맷 재생 연동
2009/04/27 17:16 2009/04/27 17:16
CD 또는 DVD 매체의 이미지 파일을 처리하는 툴입니다. 이미지 파일들을 열기, 추출, 생성, 편집, 압축, 암호화, 나누기, ISO 파일 변환, 가상 드라이브 구축 등의 기능이 있습니다.




  • ISO/DAA 파일 버닝 기능 추가
  • 8개 까지의 가상 드라이브 지원


    ISO, BIN을 포함한 대부분의 CD-ROM 이미지 파일들을 처리할 수 있다고 합니다.

    셰어웨어로서 비등록 버전에서는 300MB 이상의 이미지 파일을 생성하거나 편집할 수 없습니다.




  • 대부분의 CD/DVD-ROM 이미지 파일 포맷 지원 (ISO, BIN, NRG, CDI, DAA 등등)

  • ISO 파일의 열기 및 추출

  • 하드디스크 내의 파일들 또는 CD/DVD-ROM으로로부터 ISO 파일 생성

  • ISO 파일을 직접 편집

  • BIN 등 다른 포맷을 ISO 포맷으로 변환

  • 부팅가능 ISO 파일 만들기

  • 플로피 디스크 이미지 파일 만들기

  • 디스크 공간 절약을 위한 최적화된 ISO 파일 생성

  • ISO 파일을 이용해서 가상 드라이브 마운트

  • 쉘 결합, 컨텍스트 메뉴, 드래그 & 드롭, 클립보드 등의 간편한 인터페이스
  • 2009/04/27 17:14 2009/04/27 17:14
    사용자 삽입 이미지
    높은 호환성으로 세계적으로 많이 사용되고 있는 Adobe의 PDF(Portable Document Format) 파일을 볼 수 있는 프로그램 Adobe Reader 입니다
    2009/04/27 17:10 2009/04/27 17:10

    사용자 삽입 이미지

    오랜만에 업그레이드 되었군요
     
    카리스마조님의 윈도우즈 인증 패키지 입니다.
     
    간단하게 인증하실 분은 라이트 버전만 받아서 하시고 다른 추가적인 기능도 같이 변경하시고 싶을 경우는 풀버전 쓰시면됩니다.
     
    이번버전의 변경사항은 아직 공개를 안하셨네요
     
    XP / Vista / 2008 인증크렉이라고 보시면 됩니다.
    2009/04/27 17:05 2009/04/27 17:05

    String.prototype.trim = function() {

    return this.replace(/^\s+|\s+$/g,"");

    }

    String.prototype.ltrim = function() {

    return this.replace(/^\s+/,"");

    }

    String.prototype.rtrim = function() {

    return this.replace(/\s+$/,"");

    }

    2009/04/21 10:57 2009/04/21 10:57

    경고: 레지스트리 편집기를 잘못 사용하면 심각한 문제가 발생할 수 있으며 문제를 해결하기 위해 운영 체제를 다시 설치해야 할 수도 있습니다. 필자는 레지스트리 편집기를 잘못 사용함으로써 발생하는 문제에 대해 해결을 보증하지 않습니다. 레지스트리 편집기의 사용에 따른 모든 책임은 사용자에게 있습니다.

    HKLMSystemCurrentControlSetServicesTcpipParameters
    값 이름: SynAttackProtect
    키: TcpipParameters
    값 종류: REG_DWORD
    유효 범위: 0,1
    기본값: 0

    이 레지스트리 값은 TCP(Transmission Control Protocol)가 SYN-ACKS의 재전송을 조정하도록 합니다. 이 값을 구성하면 SYN 공격(서비스 거부 공격의 한 종류) 동안 연결 응답이 더 빨리 시간 초과됩니다.

    다음 매개 변수는 이 레지스트리 값과 함께 사용할 수 있습니다. ? 0(기본값): SYN 공격에 대한 일반적인 보호를 하려면 SynAttackProtect를 0으로 설정합니다.
    1 : SYN 공격에 대하여 보다 높은 수준의 보호를 하려면 SynAttackProtect를 1로 설정합니다. 이 매개 변수는 TCP가 SYN-ACKS의 재전송을 조정하도록 합니다. SynAttackProtect를 1로 설정하는 경우 시스템에서 SYN 공격이 이루어지고 있음을 감지하면 연결 응답이 더 빨리 시간 초과됩니다. Windows는 공격이 진행 중인지 확인하기 위하여 다음 값을 사용합니다.

    TcpMaxPortsExhausted
    TCPMaxHalfOpen
    TCPMaxHalfOpenRetried


    값 이름: EnableDeadGWDetect
    키: TcpipParameters
    값 종류: REG_DWORD
    유효 범위: 0, 1(False, True)
    기본값: 1(True)

    다음은 이 레지스트리 값과 함께 사용할 수 있는 매개 변수입니다. ? 1 : EnableDeadGWDetect를 1로 설정하면 TCP는 더 이상 작동하지 않는 게이트웨이를 검색할 수 있습니다. 더 이상 작동하지 않는 게이트웨이 감지가 사용되면 TCP는 여러 연결에 문제가 발생하는 경우 인터넷 프로토콜(IP)에 백업 게이트웨이를 변경하도록 요청할 수 있습니다. 백업 게이트웨이는 제어판의 네트워크 도구에 있는 TCP/IP 구성 대화 상자의 고급 섹션에서 정의됩니다.
    0: EnableDeadGWDetect 값은 0으로 설정하는 것이 좋습니다. 0으로 설정하지 않으면 공격으로 인하여 서버가 강제로 원하지 않는 게이트웨이로 전환될 수 있습니다.

    값 이름: EnablePMTUDiscovery
    키: TcpipParameters
    값 종류: REG_DWORD
    유효 범위: 0, 1(False, True)
    기본값: 1(True)

    다음은 이 레지스트리 값과 함께 사용할 수 있는 매개 변수입니다. ? 1 : EnablePMTUDiscovery를 1로 설정하면 TCP는 최대 전송 단위(MTU)나 원격 호스트 경로에 대한 최대 패킷 크기를 검색하려 합니다. TCP는 경로의 MTU를 검색하고 TCP 세그먼트를 이 크기로 제한하여 경로에 있는 각자 다른 MTU로 네트워크에 연결하는 라우터에서 조각을 제거할 수 있습니다. 조각이 있으면 TCP 처리량에 좋지 않은 영향을 줍니다.
    ? 0 : EnablePMTUDiscovery는 0으로 설정하는 것이 좋습니다. 이렇게 하면 로컬 서브넷에서 호스트하지 않는 모든 연결에 576바이트의 MTU가 사용됩니다. 이 값을 0으로 설정하지 않으면 공격자가 강제로 MTU를 아주 작은 값으로 설정하여 스택의 부하가 커집니다.

    값 이름: KeepAliveTime
    키: TcpipParameters
    값 종류: REG_DWORD - 시간(밀리초)
    유효 범위: 1 - 0xFFFFFFFF
    기본값: 7,200,000(2시간)

    이 값은 TCP가 Keep Alive 패킷을 보내어 유휴 연결이 열려 있는지 확인하는 빈도를 결정합니다. 연결이 유지되어 있다면 원격 컴퓨터가 Keep-Alive 패킷을 인식합니다. Keep-Alive 패킷은 기본적으로 보내지지 않습니다. 연결에서 이 값을 구성하기 위한 프로그램을 사용할 수 있습니다. 권장값은 300,000(5분)입니다.

    값 이름: NoNameReleaseOnDemand
    키: NetbtParameters
    값 종류: REG_DWORD
    유효 범위: 0, 1(False, True)
    기본값: 0(False)

    이 값은 컴퓨터가 이름 해제 요청을 받을 때 NetBIOS 이름을 해제할지 여부를 결정합니다. 이 값은 관리자가 악의적인 이름 해제 공격으로부터 컴퓨터를 보호할 수 있도록 추가되었습니다. NoNameReleaseOnDemand 값은 1로 설정하는 것이 좋습니다.


    DisableIPSourceRouting DWORD 2

    IP 원본 라우팅은 데이터그램이 네트워크를 통해 취해야 할 IP 경로를 보낸 사람이 결정할 수 있도록 하는 메커니즘입니다.
    보안 문제
    공격자는 원본에서 라우팅한 패킷을 사용하여 ID와 위치를 모호하게 만들 수 있습니다.
    패킷을 보내는 컴퓨터는 원본 라우팅을 통해 사용할 경로를 지정할 수 있습니다.
    이 레지스트리 값으로 사용할 수 있는 값은 다음과 같습니다.

    ? 0, 1 또는 2, 기본값은 0(원본에서 라우팅한 패킷 확인됨)


    TcpMaxConnectResponseRetransmissions DWORD 2

    TcpMaxConnectResponseRetransmissions: SYN ? ACK retransmissions when a connection request is not acknowledged
    이 항목은 SCE에서 MSS: SYN ? ACK retransmissions when a connection request is not acknowledged로 나타납니다. 이 매개 변수는 중단하기 전에 TCP에서 SYN을 재전송하는 횟수를 결정합니다. 재전송 제한 시간은 지정한 연결 시도에서 재전송이 연속될 때마다 두 배로 증가합니다. 초기 시간 제한 값은 3초입니다.

    보안 문제
    SYN 대규모 공격에서 공격자는 연속 SYN 패킷 스트림을 서버에 보내고 서버는 무력화되어 더 이상 합법적인 요청에 응답할 수 없을 때까지 부분 공개 연결을 열어 둡니다.

    대책
    MSS: SYN ? ACK retransmissions when a connection request is not acknowledged의 값을 3 seconds, half?open connections dropped after nine seconds로 구성하십시오.

    이 레지스트리 값으로 사용할 수 있는 값은 다음과 같습니다.

    ? 0?0xFFFFFFFF, 기본값은 2


    TcpMaxDataRetransmissions DWORD 3

    TcpMaxDataRetransmissions: How many times unacknowledged data is retransmitted (3 recommended, 5 is default)
    이 항목은 SCE에서 MSS: How many times unacknowledged data is retransmitted (3 recommended, 5 is default)로 나타납니다. 이 매개 변수는 연결을 중단하기 전에 TCP에서 개별 데이터 세그먼트(연결되지 않은 세그먼트)를 재전송하는 횟수를 결정합니다. 재전송 제한 시간은 연결에서 재전송이 연속될 때마다 두 배로 증가하고 응답이 재개되면 다시 설정됩니다. 기본 제한 시간 값은 연결 시 측정된 Round-Trip Time에 따라 동적으로 결정됩니다.

    보안 문제
    SYN 대규모 공격에서 공격자는 연속 SYN 패킷 스트림을 서버에 보내고 서버는 무력화되어 더 이상 합법적인 요청에 응답할 수 없을 때까지 부분 공개 연결을 열어 둡니다.

    대책
    MSS: How many times unacknowledged data is retransmitted (3 recommended, 5 is default)의 값을 3으로 구성하십시오. 이 레지스트리 값으로 사용할 수 있는 값은 다음과 같습니다.

    ? 0 ~ 0xFFFFFFFF, 기본값은 5


    PerformRouterDiscovery DWORD 0

    PerformRouterDiscovery: Allow IRDP to detect and configure Default Gateway addresses (could lead to DoS)
    이 항목은 SCE에서 MSS: Allow IRDP to detect and configure Default Gateway addresses (could lead to DoS)로 나타납니다. 이 설정은 IRDP(Internet Router Discovery Protocol)의 사용 여부를 설정하는 데 사용됩니다. IRDP를 사용하면 시스템에서 기본 게이트웨이 주소를 자동으로 검색하고 구성할 수 있습니다.

    보안 문제
    같은 네트워크 세그먼트에서 시스템을 제어하는 공격자는 네트워크에서 컴퓨터가 라우터를 가장하도록 구성할 수 있습니다. 그러면 IRDP를 사용하도록 설정된 다른 컴퓨터에서 이미 손상된 시스템을 통해 트래픽을 라우팅하려고 시도할 수 있습니다.

    대책
    MSS: Allow IRDP to detect and configure Default Gateway addresses (could lead to DoS)의 값을 사용 안 함으로 구성하십시오.

    이 레지스트리 값으로 사용할 수 있는 값은 다음과 같습니다.

    ? 1 또는 0, 기본값은 0(사용 안 함)


    TCPMaxPortsExhausted DWORD 5

    TCPMaxPortsExhausted: How many dropped connect requests to initiate SYN attack protection (5 is recommended)
    이 항목은 SCE에서 MSS: How many dropped connect requests to initiate SYN attack protection (5 is recommended)으로 나타납니다. 이 매개 변수는 SYN ? ATTACK 보호가 작동하기 시작하는 시점을 결정합니다. 사용 가능한 연결 백로그를 0으로 설정했기 때문에 시스템에서 TcpMaxPortsExhausted 연결 요청을 거부하면 SYN ? ATTACK 보호가 작동하기 시작합니다.

    보안 문제
    SYN 대규모 공격에서 공격자는 연속 SYN 패킷 스트림을 서버에 보내고 서버는 무력화되어 더 이상 합법적인 요청에 응답할 수 없을 때까지 부분 공개 연결을 열어 둡니다.

    대책
    MSS: How many dropped connect requests to initiate SYN attack protection (5 is recommended)의 값을 5로 구성하십시오.

    이 레지스트리 값으로 사용할 수 있는 값은 다음과 같습니다.

    ? 0 ~ 0xFFFF, 기본값은 5


    AFD 설정:

    DynamicBacklogGrowthDelta

    EnableDynamicBacklog
    MinimumDynamicBacklog

    MaximumDynamicBacklog
    FTP 서버 및 웹 서버와 같은 Windows 소켓 응용 프로그램의 연결 시도는 Afd.sys에 의해 처리됩니다. Afd.sys는 합법적 클라이언트에 대한 액세스를 거부하지 않고 부분 공개 상태에서 여러 번의 연결을 지원하도록 수정되었습니다.
    관리자가 동적 백로그를 구성할 수 있도록 함으로써 이러한 지원이 가능해졌습니다.
    DynamicBacklogGrowthDelta는 연결이 더 필요할 때 만들 사용 가능 연결 수를 결정합니다. 값이 크면 free 연결 할당이 폭주할 수 있으므로 이 값을 주의하여 설정하십시오.
    SYN 대규모 공격에서 공격자는 연속 SYN 패킷 스트림을 서버에 보내고 서버는 무력화되어 더 이상 합법적인 요청에 응답할 수 없을 때까지 부분 공개 연결을 열어 둡니다.


    DisableIPSourceRouting
    IP 원본 라우팅은 데이터그램이 네트워크를 통해 취해야 할 IP 경로를 보낸 사람이 결정할 수 있도록 하는 메커니즘입니다. 이 값을 2로 설정하면 원본에서 라우팅한 모든 들어오는 패킷이 삭제됩니다.
    공격자는 원본에서 라우팅한 패킷을 사용하여 ID와 위치를 모호하게 만듭니다. 패킷을 보내는 컴퓨터는 원본 라우팅을 통해 취할 경로를 지정할 수 있게 됩니다.


    PerformRouterDiscovery
    이 매개 변수는 IRDP(Internet Router Discovery Protocol)를 지원하는 Windows 2000이 컴퓨터에서 기본 게이트웨이 주소를 자동으로 검색 및 구성하지 못하도록 하기 위해 설정됩니다.
    같은 네트워크 세그먼트에서 시스템을 제어하는 공격자는 네트워크에서 컴퓨터가 라우터를 가장하도록 구성할 수 있습니다.
    그러면 IRDP를 사용하도록 설정된 다른 컴퓨터에서 이미 손상된 시스템을 통해 트래픽을 라우팅하려고 시도할 수 있습니다.

    자동 실행 사용 안 함: 모든 드라이브에 대해 자동 실행 사용 안 함
    이 항목은 SCE에서 MSS: 모든 드라이브에 대해 자동 실행 사용 안 함으로 나타납니다. 자동 실행은 컴퓨터의 드라이브에 미디어가 삽입되는 즉시 읽기를 시작하는 기능입니다. 따라서 프로그램의 설치 파일과 오디오 미디어의 사운드가 즉시 시작됩니다.

    다음과 같은 레지스트리 값 항목이 템플릿 파일의 HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionPoliciesExplorer 레지스트리 키에 추가되었습니다.

    표 5. 자동 실행을 사용하지 않도록 구성하기 위해 레지스트리에 추가된 설정

    하위 키 레지스트리 값 항목 형식 권장 값(10진수)
    NoDriveTypeAutoRun
    DWORD
    0xFF


    다음 설정의 값을 1로 설정하여 CD/DVD 자동 실행만 사용할 수 없도록 할 수도 있습니다. 다음과 같은 레지스트리 값 항목이 템플릿 파일의 HKEY_LOCAL_MACHINE SYSTEMCurrentControlSetServicesCdrom 레지스트리 키에 추가되었습니다.

    표 6. 자동 실행을 사용하지 않도록 구성하기 위해 레지스트리에 추가할 설정

    하위 키 레지스트리 값 항목 형식 권장 값(10진수)
    AutoRun
    DWORD
    0


    보안 문제
    미디어를 삽입할 때 악의적인 프로그램이 시작되지 않도록 하기 위해 그룹 정책을 통해 모든 드라이브에서 자동 실행을 사용하지 않도록 합니다.

    시스템에 실제로 액세스할 수 있는 공격자는 자동 실행이 가능한 DVD 또는 CD를 컴퓨터에 삽입할 수 있으므로 이로 인해 악의적인 코드가 자동으로 시작됩니다. 이 악의적 프로그램에는 공격자가 원하는 모든 코드가 포함되어 있습니다.

    화면 보호기 암호 보호 즉시 적용: 화면 보호기 유예 기간 만료 시간(초)(0 권장)
    이 항목은 SCE에서 MSS: 화면 보호기 유예 기간 만료 시간(초)(0 권장)으로 나타납니다. Windows에는 화면 보호기 잠금이 활성화되어 있는 경우 화면 보호기가 실행된 후 실제로 콘솔이 자동으로 잠길 때까지의 유예 기간이 설정되어 있습니다.

    다음과 같은 레지스트리 값 항목이 템플릿 파일의 HKEY_LOCAL_MACHINESYSTEMSoftwareMicrosoftWindows NTCurrentVersionWinlogon 레지스트리 키에 추가되었습니다.

    표 7. 화면 보호기 암호 보호를 즉시 적용하기 위해 레지스트리에 추가된 설정

    하위 키 레지스트리 값 항목 형식 권장 값(10진수)
    ScreenSaverGracePeriod
    String
    0


    보안 문제
    화면 보호기 잠금이 실행되기 전에 사용자 동작에 허용된 기본 유예 기간은 5초입니다. 기본 유예 기간의 기본 설정을 그대로 유지하면 화면 보호기 잠금이 실행되기 전에 시스템에 로그온하기 위해 콘솔에 들어가는 사람으로부터 컴퓨터가 쉽게 공격을 받을 수 있습니다. 레지스트리 항목을 만들어 유예 기간을 조정할 수 있습니다.

    대책
    MSS: 화면 보호기 유예 기간 만료 시간(초)(0 권장)의 값을 0으로 구성하십시오.

    이 레지스트리 값으로 사용할 수 있는 값은 다음과 같습니다.

    ? 0 ~ 255, 기본값은 5초

    보안 로그 용량 경고: 시스템에서 경고를 생성할 보안 이벤트 로그 용량에 대한 백분율 임계값
    이 항목은 SCE에서 MSS: 시스템에서 경고를 생성할 보안 이벤트 로그 용량에 대한 백분율 임계값으로 나타납니다. Windows Server 2003과 Windows 2000 서비스 팩 3에는 보안 로그가 사용자 정의된 임계값에 도달하면 보안 이벤트 로그에 보안 감사를 생성하는 새로운 기능이 포함되어 있습니다. 예를 들어 이 값이 90으로 설정된 경우에는 보안 로그가 용량의 90%에 도달하면 eventID 523에 대한 이벤트 항목과 보안 이벤트 로그가 90% 찼습니다.라는 텍스트가 표시됩니다.

    참고: 필요에 따라 이벤트를 덮어쓰도록 보안 이벤트 로그를 구성한 경우에는 이 설정이 적용되지 않습니다.

    다음과 같은 레지스트리 값 항목이 템플릿 파일의 HKEY_LOCAL_MACHINE SYSTEMCurrentControlSetServicesEventlogSecurity 레지스트리 키에 추가되었습니다.

    표 8. 안전한 DLL 검색 모드를 사용할 수 있도록 레지스트리에 추가된 설정

    하위 키 레지스트리 값 항목 형식 권장 값(10진수)
    WarningLevel
    DWORD
    0


    보안 문제
    필요에 따라 이벤트를 덮어쓰도록 컴퓨터를 구성하지 않은 경우 보안 로그가 꽉 차면 최신 이벤트가 로그에 기록되지 않습니다. 보안 로그에 더 이상 이벤트를 기록할 수 없을 때 컴퓨터를 종료하도록 구성한 경우 로그가 꽉 차면 컴퓨터가 종료되고 네트워크 서비스를 더 이상 제공할 수 없게 됩니다.

    대책
    MSS: 시스템에서 경고를 생성할 보안 이벤트 로그 용량에 대한 백분율 임계값의 값을 90으로 구성하십시오.

    이 레지스트리 값으로 사용할 수 있는 값은 다음과 같습니다.

    ? 0 ~ 100, 기본값은 0(경고 이벤트가 생성되지 않음)

    안전한 DLL 검색 순서 사용: 안전한 DLL 검색 모드 사용(권장)
    이 항목은 SCE에서 MSS: 안전한 DLL 검색 모드 사용(권장)으로 나타납니다. 다음 두 가지 중 한 가지 방법으로 프로세스를 실행하여 요청된 DLL(동적 연결 라이브러리)을 검색하도록 DLL 검색 순서를 구성할 수 있습니다.

    ? 시스템 경로에 지정된 폴더를 먼저 검색한 다음 현재 작업 중인 폴더를 검색합니다.

    ? 현재 작업 중인 폴더를 먼저 검색한 다음 시스템 경로에 지정된 폴더를 검색합니다.


    이 레지스트리 값은 1로 설정되어 있습니다. 이 경우 시스템에서는 시스템 경로에 지정된 폴더를 먼저 검색한 다음 현재 작업 중인 폴더를 검색합니다. 0으로 설정하면 시스템에서는 현재 작업 중인 폴더를 먼저 검색한 다음 시스템 경로에 지정된 폴더를 검색합니다.

    다음과 같은 레지스트리 값 항목이 템플릿 파일의 HKEY_LOCAL_MACHINE SYSTEMCurrentControlSetControlSession Manager 레지스트리 키에 추가되었습니다.

    표 9. 안전한 DLL 검색 모드를 사용할 수 있도록 레지스트리에 추가된 설정

    하위 키 레지스트리 값 항목 형식 권장 값(10진수)
    SafeDllSearchMode
    DWORD
    0


    보안 문제
    사용자가 실수로 악성 코드를 실행하는 경우 이 코드가 수정된 버전의 시스템 DLL을 포함하여 추가 파일과 함께 패키지되어 있으면 해당 DLL의 고유 버전이 로드되어 코드에서 렌더링할 수 있는 손상 유형 및 정도가 커집니다.

    대책
    MSS: 안전한 DLL 검색 모드 사용(권장)의 값을 사용으로 구성하십시오.

    이 레지스트리 값으로 사용할 수 있는 값은 다음과 같습니다.

    ? 1 또는 0, 기본값은 0

    최종 로그온 사용자 이름 감추기
    레지스트리를 아래와 같이 설정하여 최종 로그온 한 사용자의 이름을 감추십시오.

    Win NT

    하이브
    HKEY_LOCAL_MACHINESOFTWARE


    MicrosoftWindows NTCurrent VersionWinlogon

    이름
    DontDisplayLastUserName

    형식
    REG_SZ (Win 2000 > REG_DWORD)


    1

    win NT

    공개 로컬 보안 인증(LSA)의 정보에 대한 액세스 제한

    시스템의 모든 사용자를 식별하여, 익명 사용자를 제한하고 Windows NT Security Subsystem의 LSA 구성 요소에 대해 얻을 수 있는 공개 정보를 최소화해야 합니다. LSA는 로컬 컴퓨터의 액세스와 사용 권한을 포함한 보안 관리 항목을 처리합니다. 이 제한을 적용하려면 아래와 같이 레지스트리 항목을 만들고 설정하십시오. 하이브

    HKEY_LOCAL_MACHINE SYSTEM


    CurrentControlSetControlLSA


    값 이름

    RestrictAnonymous


    종류

    REG_DWORD


    1

    win 2000
    RestrictAnonymous 레지스트리 값
    레지스트리 편집기를 사용하여 다음 레지스트리 키를 보고 이 키에 다음 값을 추가하거나 값이 이미 있는 경우 값을 수정하십시오.
    HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlLSA
    값: RestrictAnonymous
    값 종류: REG_DWORD
    값 데이터: 0x2(16진수)

    윈도우 기본 공유 폴더 생성 또는 제거

    HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesLanmanServerParametersAutoShareServer

    AutoShareServer의 값을 0으로 한경우 재시작시 공유 만들지 않음.
    1인경우 재시작시 공유 만들거나 복원.
    출처 : [기타] 인터넷 : support.microsoft.com 검색 내용

    2009/04/21 10:56 2009/04/21 10:56
    2009/04/21 10:55 2009/04/21 10:55
    http://www.samair.ru/proxy/type-01.htm
    2009/04/21 10:54 2009/04/21 10:54
    --//SQL Database documentation script
    --//Description: T-SQL script to generate the database document for SQL server 2000/2005

    Declare @i Int, @maxi Int
    Declare @j Int, @maxj Int
    Declare @sr int
    Declare @Output varchar(4000)
    --Declare @tmpOutput varchar(max)
    Declare @SqlVersion varchar(5)
    Declare @last varchar(155), @current varchar(255), @typ varchar(255), @description varchar(4000)

    create Table #Tables  (id int identity(1, 1), Object_id int, Name varchar(155), Type varchar(20), [description] varchar(4000))
    create Table #Columns (id int identity(1,1), Name varchar(155), Type Varchar(155), Nullable varchar(2), [description] varchar(4000))
    create Table #Fk(id int identity(1,1), Name varchar(155), col Varchar(155), refObj varchar(155), refCol varchar(155))
    create Table #Constraint(id int identity(1,1), Name varchar(155), col Varchar(155), definition varchar(1000))
    create Table #Indexes(id int identity(1,1), Name varchar(155), Type Varchar(25), cols varchar(1000))

     If (substring(@@VERSION, 1, 25 ) = 'Microsoft SQL Server 2005')
       set @SqlVersion = '2005'
    else if (substring(@@VERSION, 1, 26 ) = 'Microsoft SQL Server  2000')
       set @SqlVersion = '2000'
    else
       set @SqlVersion = '2005'


    Print '<head>'
    Print '<title>::' + DB_name() + '::</title>'
    Print '<style>'
       
    Print '      body {'
    Print '      font-family:verdana;'
    Print '      font-size:9pt;'
    Print '      }'
         
    Print '      td {'
    Print '      font-family:verdana;'
    Print '      font-size:9pt;'
    Print '      }'
         
    Print '      th {'
    Print '      font-family:verdana;'
    Print '      font-size:9pt;'
    Print '      background:#d3d3d3;'
    Print '      }'
    Print '      table'
    Print '      {'
    Print '      background:#d3d3d3;'
    Print '      }'
    Print '      tr'
    Print '      {'
    Print '      background:#ffffff;'
    Print '      }'
    Print '   </style>'
    Print '</head>'
    Print '<body>'

    set nocount on
       if @SqlVersion = '2000'
          begin
          insert into #Tables (Object_id, Name, Type, [description])
             --FOR 2000
             select object_id(table_name),  '[' + table_schema + '].[' + table_name + ']', 
             case when table_type = 'BASE TABLE'  then 'Table'   else 'View' end,
             cast(p.value as varchar(4000))
             from information_schema.tables t
             left outer join sysproperties p on p.id = object_id(t.table_name) and smallid = 0 and p.name = 'MS_Description'
             order by table_type, table_schema, table_name
          end
       else if @SqlVersion = '2005'
          begin
          insert into #Tables (Object_id, Name, Type, [description])
          --FOR 2005
          Select o.object_id,  '[' + s.name + '].[' + o.name + ']',
                case when type = 'V' then 'View' when type = 'U' then 'Table' end, 
                cast(p.value as varchar(4000))
                from sys.objects o
                   left outer join sys.schemas s on s.schema_id = o.schema_id
                   left outer join sys.extended_properties p on p.major_id = o.object_id and minor_id = 0 and p.name = 'MS_Description'
                where type in ('U', 'V')
                order by type, s.name, o.name
          end
    Set @maxi = @@rowcount
    set @i = 1

    print '<table border="0" cellspacing="0" cellpadding="0" width="550px" align="center"><tr><td colspan="3" style="height:50;font-size:14pt;text-align:center;"><a name="index"></a><b>Index</b></td></tr></table>'
    print '<table border="0" cellspacing="1" cellpadding="0" width="550px" align="center"><tr><th>Sr</th><th>Object</th><th>Type</th></tr>'
    While(@i <= @maxi)
    begin
       select @Output =  '<tr><td align="center">' + Cast((@i) as varchar) + '</td><td><a href="#' + Type + ':' + name + '">' + name + '</a></td><td>' + Type + '</td></tr>'
             from #Tables where id = @i
      
       print @Output
       set @i = @i + 1
    end
    print '</table><br />'

    set @i = 1
    While(@i <= @maxi)
    begin
       --table header
       select @Output =  '<tr><th align="left"><a name="' + Type + ':' + name + '"></a><b>' + Type + ':' + name + '</b></th></tr>',  @description = [description]
             from #Tables where id = @i
      
       print '<br /><br /><br /><table border="0" cellspacing="0" cellpadding="0" width="750px"><tr><td align="right"><a href="#index">Index</a></td></tr>'
       print @Output
       print '</table><br />'
       print '<table border="0" cellspacing="0" cellpadding="0" width="750px"><tr><td><b>Description</b></td></tr><tr><td>' + isnull(@description, '') + '</td></tr></table><br />'

       --table columns
       truncate table #Columns
       if @SqlVersion = '2000'
          begin
          insert into #Columns  (Name, Type, Nullable, [description])
          --FOR 2000
          Select c.name,
                   type_name(xtype) + (
                   case when (type_name(xtype) = 'varchar' or type_name(xtype) = 'nvarchar' or type_name(xtype) ='char' or type_name(xtype) ='nchar')
                      then '(' + cast(length as varchar) + ')'
                    when type_name(xtype) = 'decimal' 
                         then '(' + cast(prec as varchar) + ',' + cast(scale as varchar)   + ')'
                   else ''
                   end           
                   ),
                   case when isnullable = 1 then 'Y' else 'N'  end,
                   cast(p.value as varchar(8000))
                from syscolumns c
                   inner join #Tables t on t.object_id = c.id
                   left outer join sysproperties p on p.id = c.id and p.smallid = c.colid and p.name = 'MS_Description'
                where t.id = @i
                order by c.colorder
          end
       else if @SqlVersion = '2005'
          begin
          insert into #Columns  (Name, Type, Nullable, [description])
          --FOR 2005  
          Select c.name,
                   type_name(user_type_id) + (
                   case when (type_name(user_type_id) = 'varchar' or type_name(user_type_id) = 'nvarchar' or type_name(user_type_id) ='char' or type_name(user_type_id) ='nchar')
                      then '(' + cast(max_length as varchar) + ')'
                    when type_name(user_type_id) = 'decimal' 
                         then '(' + cast([precision] as varchar) + ',' + cast(scale as varchar)   + ')'
                   else ''
                   end           
                   ),
                   case when is_nullable = 1 then 'Y' else 'N'  end,
                   cast(p.value as varchar(4000))
          from sys.columns c
                inner join #Tables t on t.object_id = c.object_id
                left outer join sys.extended_properties p on p.major_id = c.object_id and p.minor_id  = c.column_id and p.name = 'MS_Description'
          where t.id = @i
          order by c.column_id
          end
       Set @maxj =   @@rowcount
       set @j = 1

       print '<table border="0" cellspacing="0" cellpadding="0" width="750px"><tr><td><b>Table Columns</b></td></tr></table>'
       print '<table border="0" cellspacing="1" cellpadding="0" width="750px"><tr><th>Sr.</th><th>Name</th><th>Datatype</th><th>Nullable</th><th>Description</th></tr>'
      
       While(@j <= @maxj)
       begin
          select @Output = '<tr><td width="20px" align="center">' + Cast((@j) as varchar) + '</td><td width="150px">' + isnull(name,'')  + '</td><td width="150px">' +  upper(isnull(Type,'')) + '</td><td width="50px" align="center">' + isnull(Nullable,'N') + '</td><td>' + isnull([description],'') + '</td></tr>'
             from #Columns  where id = @j
         
          print    @Output   
          Set @j = @j + 1;
       end

       print '</table><br />'

       --reference key
       truncate table #FK
       if @SqlVersion = '2000'
          begin
          insert into #FK  (Name, col, refObj, refCol)
       --      FOR 2000
          select object_name(constid), s.name,  object_name(rkeyid) ,  s1.name 
                from sysforeignkeys f
                   inner join sysobjects o on o.id = f.constid
                   inner join syscolumns s on s.id = f.fkeyid and s.colorder = f.fkey
                   inner join syscolumns s1 on s1.id = f.rkeyid and s1.colorder = f.rkey
                   inner join #Tables t on t.object_id = f.fkeyid
                where t.id = @i
                order by 1
          end  
       else if @SqlVersion = '2005'
          begin
          insert into #FK  (Name, col, refObj, refCol)
    --      FOR 2005
          select f.name, COL_NAME (fc.parent_object_id, fc.parent_column_id) , object_name(fc.referenced_object_id) , COL_NAME (fc.referenced_object_id, fc.referenced_column_id)    
          from sys.foreign_keys f
             inner  join  sys.foreign_key_columns  fc  on f.object_id = fc.constraint_object_id  
             inner join #Tables t on t.object_id = f.parent_object_id
          where t.id = @i
          order by f.name
          end
      
       Set @maxj =   @@rowcount
       set @j = 1
       if (@maxj >0)
       begin

          print '<table border="0" cellspacing="0" cellpadding="0" width="750px"><tr><td><b>Refrence Keys</b></td></tr></table>'
          print '<table border="0" cellspacing="1" cellpadding="0" width="750px"><tr><th>Sr.</th><th>Name</th><th>Column</th><th>Reference To</th></tr>'

          While(@j <= @maxj)
          begin

             select @Output = '<tr><td width="20px" align="center">' + Cast((@j) as varchar) + '</td><td width="150px">' + isnull(name,'')  + '</td><td width="150px">' +  isnull(col,'') + '</td><td>[' + isnull(refObj,'N') + '].[' +  isnull(refCol,'N') + ']</td></tr>'
                from #FK  where id = @j

             print @Output
             Set @j = @j + 1;
          end

          print '</table><br />'
       end

       --Default Constraints
       truncate table #Constraint
       if @SqlVersion = '2000'
          begin
          insert into #Constraint  (Name, col, definition)
          select object_name(c.constid), col_name(c.id, c.colid), s.text
                from sysconstraints c
                   inner join #Tables t on t.object_id = c.id
                   left outer join syscomments s on s.id = c.constid
                where t.id = @i
                and
                convert(varchar,+ (c.status & 1)/1)
                + convert(varchar,(c.status & 2)/2)
                + convert(varchar,(c.status & 4)/4)
                + convert(varchar,(c.status & 8)/8)
                + convert(varchar,(c.status & 16)/16)
                + convert(varchar,(c.status & 32)/32)
                + convert(varchar,(c.status & 64)/64)
                + convert(varchar,(c.status & 128)/128) = '10101000'
          end
       else if @SqlVersion = '2005'
          begin
          insert into #Constraint  (Name, col, definition)
          select c.name,  col_name(parent_object_id, parent_column_id), c.definition
          from sys.default_constraints c
             inner join #Tables t on t.object_id = c.parent_object_id
          where t.id = @i
          order by c.name
          end
       Set @maxj =   @@rowcount
       set @j = 1
       if (@maxj >0)
       begin

          print '<table border="0" cellspacing="0" cellpadding="0" width="750px"><tr><td><b>Default Constraints</b></td></tr></table>'
          print '<table border="0" cellspacing="1" cellpadding="0" width="750px"><tr><th>Sr.</th><th>Name</th><th>Column</th><th>Value</th></tr>'

          While(@j <= @maxj)
          begin

             select @Output = '<tr><td width="20px" align="center">' + Cast((@j) as varchar) + '</td><td width="250px">' + isnull(name,'')  + '</td><td width="150px">' +  isnull(col,'') + '</td><td>' +  isnull(definition,'') + '</td></tr>'
                from #Constraint  where id = @j

             print @Output
             Set @j = @j + 1;
          end

       print '</table><br />'
       end


       --Check  Constraints
       truncate table #Constraint
       if @SqlVersion = '2000'
          begin
          insert into #Constraint  (Name, col, definition)
             select object_name(c.constid), col_name(c.id, c.colid), s.text
                from sysconstraints c
                   inner join #Tables t on t.object_id = c.id
                   left outer join syscomments s on s.id = c.constid
                where t.id = @i
                and ( convert(varchar,+ (c.status & 1)/1)
                   + convert(varchar,(c.status & 2)/2)
                   + convert(varchar,(c.status & 4)/4)
                   + convert(varchar,(c.status & 8)/8)
                   + convert(varchar,(c.status & 16)/16)
                   + convert(varchar,(c.status & 32)/32)
                   + convert(varchar,(c.status & 64)/64)
                   + convert(varchar,(c.status & 128)/128) = '00101000'
                or convert(varchar,+ (c.status & 1)/1)
                   + convert(varchar,(c.status & 2)/2)
                   + convert(varchar,(c.status & 4)/4)
                   + convert(varchar,(c.status & 8)/8)
                   + convert(varchar,(c.status & 16)/16)
                   + convert(varchar,(c.status & 32)/32)
                   + convert(varchar,(c.status & 64)/64)
                   + convert(varchar,(c.status & 128)/128) = '00100100')

          end
       else if @SqlVersion = '2005'
          begin
          insert into #Constraint  (Name, col, definition)
             select c.name,  col_name(parent_object_id, parent_column_id), definition
             from sys.check_constraints c
                inner join #Tables t on t.object_id = c.parent_object_id
             where t.id = @i
             order by c.name
          end
       Set @maxj =   @@rowcount
      
       set @j = 1
       if (@maxj >0)
       begin

          print '<table border="0" cellspacing="0" cellpadding="0" width="750px"><tr><td><b>Check  Constraints</b></td></tr></table>'
          print '<table border="0" cellspacing="1" cellpadding="0" width="750px"><tr><th>Sr.</th><th>Name</th><th>Column</th><th>Definition</th></tr>'

          While(@j <= @maxj)
          begin

             select @Output = '<tr><td width="20px" align="center">' + Cast((@j) as varchar) + '</td><td width="250px">' + isnull(name,'')  + '</td><td width="150px">' +  isnull(col,'') + '</td><td>' +  isnull(definition,'') + '</td></tr>'
                from #Constraint  where id = @j
             print @Output
             Set @j = @j + 1;
          end

          print '</table><br />'
       end


       --Triggers
       truncate table #Constraint
       if @SqlVersion = '2000'
          begin
          insert into #Constraint  (Name)
             select tr.name
             FROM sysobjects tr
                inner join #Tables t on t.object_id = tr.parent_obj
             where t.id = @i and tr.type = 'TR'
             order by tr.name
          end
       else if @SqlVersion = '2005'
          begin
          insert into #Constraint  (Name)
             SELECT tr.name
             FROM sys.triggers tr
                inner join #Tables t on t.object_id = tr.parent_id
             where t.id = @i
             order by tr.name
          end
       Set @maxj =   @@rowcount
      
       set @j = 1
       if (@maxj >0)
       begin

          print '<table border="0" cellspacing="0" cellpadding="0" width="750px"><tr><td><b>Triggers</b></td></tr></table>'
          print '<table border="0" cellspacing="1" cellpadding="0" width="750px"><tr><th>Sr.</th><th>Name</th><th>Description</th></tr>'

          While(@j <= @maxj)
          begin
             select @Output = '<tr><td width="20px" align="center">' + Cast((@j) as varchar) + '</td><td width="150px">' + isnull(name,'')  + '</td><td></td></tr>'
                from #Constraint  where id = @j
             print @Output
             Set @j = @j + 1;
          end

          print '</table><br />'
       end

       --Indexes
       truncate table #Indexes
       if @SqlVersion = '2000'
          begin
          insert into #Indexes  (Name, type, cols)
             select i.name, case when i.indid = 0 then 'Heap' when i.indid = 1 then 'Clustered' else 'Nonclustered' end , c.name
             from sysindexes i
                inner join sysindexkeys k  on k.indid = i.indid  and k.id = i.id
                inner join syscolumns c on c.id = k.id and c.colorder = k.colid
                inner join #Tables t on t.object_id = i.id
             where t.id = @i and i.name not like '_WA%'
             order by i.name, i.keycnt
          end
       else if @SqlVersion = '2005'
          begin
          insert into #Indexes  (Name, type, cols)
             select i.name, case when i.type = 0 then 'Heap' when i.type = 1 then 'Clustered' else 'Nonclustered' end,  col_name(i.object_id, c.column_id)
                from sys.indexes i
                   inner join sys.index_columns c on i.index_id = c.index_id and c.object_id = i.object_id
                   inner join #Tables t on t.object_id = i.object_id
                where t.id = @i
                order by i.name, c.column_id
          end

       Set @maxj =   @@rowcount
      
       set @j = 1
       set @sr = 1
       if (@maxj >0)
       begin

          print '<table border="0" cellspacing="0" cellpadding="0" width="750px"><tr><td><b>Indexes</b></td></tr></table>'
          print '<table border="0" cellspacing="1" cellpadding="0" width="750px"><tr><th>Sr.</th><th>Name</th><th>Type</th><th>Columns</th></tr>'
          set @Output = ''
          set @last = ''
          set @current = ''
          While(@j <= @maxj)
          begin
             select @current = isnull(name,'') from #Indexes  where id = @j
                   
             if @last <> @current  and @last <> ''
                begin  
                print '<tr><td width="20px" align="center">' + Cast((@sr) as varchar) + '</td><td width="150px">' + @last + '</td><td width="150px">' + @typ + '</td><td>' + @Output  + '</td></tr>'
                set @Output  = ''
                set @sr = @sr + 1
                end
            
               
             select @Output = @Output + cols + '<br />' , @typ = type
                   from #Indexes  where id = @j
            
             set @last = @current   
             Set @j = @j + 1;
          end
          if @Output <> ''
                begin  
                print '<tr><td width="20px" align="center">' + Cast((@sr) as varchar) + '</td><td width="150px">' + @last + '</td><td width="150px">' + @typ + '</td><td>' + @Output  + '</td></tr>'
                end

          print '</table><br />'
       end

        Set @i = @i + 1;
       --Print @Output
    end


    Print '</body>'
    Print '</html>'

    drop table #Tables
    drop table #Columns
    drop table #FK
    drop table #Constraint
    drop table #Indexes
    set nocount off

    2009/04/21 10:53 2009/04/21 10:53

    FSO example

    프로그래밍/Asp 2009/04/21 10:53

    2001년도쯤에 작성한걸로 기억하는 코드인데 괴상한 목적으로 사용하지 않는게 좋고 관리를 목적으로 사용하려면 security validation정도는 해주시는 센스필요하구요. 잘 응용하고 파일전송을 안정적으로 할 수 있는 application을 개발하시면 웹하드 용도로도 괜찮을 것 같은데. 그냥 생각일 뿐입니다.

    <%@ language=vbscript %>
    <%
    option explicit

    On Error Resume Next

    dim command

    command = request.querystring("command")

    select case command

     case "drives"
      call drivelist
     case "folders"
      call folderlist
     case "viewfile"
      call viewfile
     case "downfile"
      call downfile
     case "delfile"
      call delFile
     case "editfile"
      call editFile
     case "upload"
      call upload
     case "copyfile"
      call copyfile
     case "movefile"
      call movefile
     case "pastefile"
      call pastefile
     case "dumplist"
      call dumplist
     case else
      call drivelist
    end select

    if err.description <> "" then
     response.clear
     response.write "<script language=javascript> alert (""" & err.description & """); history.back();</script>"
     err.clear
    end if

    Function CalcByte(xspace)
     If xspace < 1024 Then
      CalcByte = xspace
     ElseIf xspace >= 1024 And xspace < 1048576 Then
      CalcByte = FormatNumber((xspace / 1024),2) & " K"
     ElseIf xspace >= 1048576  And xspace < 1073741824 Then
      CalcByte = FormatNumber((xspace / 1048576),2) & " M"
     ElseIf xspace >= 1073741824 then
      CalcByte = FormatNumber((xspace/1073741824),2) & "G"
     End If
    End Function

    Function FileAttributes(intAttribute)

    select case intAttribute
     case 0
      FileAttributes = "Normal"
     case 1
      FileAttributes = "Read Only"
     case 2
      FileAttributes = "Hidden"
     case 4
      FileAttributes = "System"
     case 16
      FileAttributes = "Directory"
     case 32
      FileAttributes = "Archive"
     case 1024
      FileAttributes = "Alias"
     case 2048
      FileAttributes = "Compressed"
     case else
      FileAttributes = intAttribute
    end select

    End Function

    Function xLeft(strTemp, intPoint)
     if Len(strTemp) <= intPoint then
      xLeft = strTemp
     else
      xLeft = mid(strTemp,1, intPoint) & "..."
     end if
    End Function

    Function  FileExists(strFilename)
    Dim  FSO
    Set  FSO  =  server.createobject("Scripting.FileSystemObject")
    FileExists  =  FSO.FileExists(strFilename)
    Set  FSO  =  Nothing
    End  Function

    Sub goBack(Msg)
    response.clear
    response.write "<html><body><form action=""" & request.servervariables("HTTP_REFERER") & """ method=post name=form1></form>"
    response.write "<script language=javascript>"
    if Msg <> "" then
     response.write " alert (""" & Msg & """);"
    end if
    response.write " document.form1.submit();</script>"
    response.write "</body></html>"
    if err.description = "" then
     response.end
    end if
    End Sub
    Sub drivelist
    dim fso
    dim objDrive
    dim drivetype(5)
    dim strDriveTypeImg
    dim strDriveLetter
    dim strDriveName
    dim intFreeSpace
    dim intTotalSpace

    drivetype(0) = "알 수 없음"
    drivetype(1) = "<img src=""images/drivetype1.jpg"">"
    drivetype(2) = "<img src=""images/drivetype2.jpg"">"
    drivetype(3) = "<img src=""images/drivetype3.jpg"">"
    drivetype(4) = "<img src=""images/drivetype4.jpg"">"
    drivetype(5) = "RAM"

    set fso = server.createobject("scripting.filesystemobject")
    response.write "<table border=0 cellpadding=5 cellspacing=1 bgcolor=black align=center width=95% >"
    response.write "<tr bgcolor=#eeeeee align=center><td>종류</td><td>드라이브 이름</td><td>공간(빈/총)</td></tr>"
    for each objDrive in fso.drives

     strDriveTypeImg = drivetype(objDrive.drivetype)
     strDriveLetter = objDrive
     if objDrive.drivetype = 3 then

      if objDrive.isReady then
       strDriveName = objDrive.ShareName
       intFreeSpace = objDrive.FreeSpace
       intTotalSpace = objDrive.TotalSize
      else
       strDriveName = "연결안됨"
       intFreeSpace = 0
       intTotalSpace = 0
      end if

     else

      if objDrive.isReady then
       strDriveName = objDrive.VolumeName
       intFreeSpace = objDrive.FreeSpace
       intTotalSpace = objDrive.TotalSize
      else
       strDriveName = "비어있음"
       intFreeSpace = 0
       intTotalSpace = 0
      end if

     end if

     response.write "<tr bgcolor=white><td align=center>" & strDriveTypeImg & "</td><td align=center>"
     if objDrive.isReady then
      response.write "<a href=""?command=folders&folder=" & server.urlencode(strDriveLetter) & """>"
     end if
     response.write strDriveName & " (" & strDriveLetter & ")"
     if objDrive.isReady then
      response.write "</a>"
     end if
     response.write "</td><td>" & CalcByte(intFreeSpace) & " / " & CalcByte(intTotalSpace) & "</td></tr>"

    next
    response.write "</table>"
    set fso = nothing


    end sub

    sub folderlist
    dim fso
    dim objFolder
    dim objSubFolder
    dim objFile
    dim strName
    dim intSize
    dim strSort
    dim strEditDate
    dim strFolder
    strFolder = request("folder")
    response.write "<table border=0 cellpadding=5 cellspacing=0 align=center width=95% >"
    response.write "<tr><td><img src=""images/move.jpg"" border=0 alt=""잘라내기"" style=""cursor:hand;"" onclick=""javascript:document.explorer.action='?command=movefile';document.explorer.submit();""> <img src=""images/copy.jpg"" border=0 alt=""복사"" style=""cursor:hand;""  onclick=""javascript:document.explorer.action='?command=copyfile';document.explorer.submit();""> <img src=""images/paste.jpg"" border=0 alt=""붙여넣기"""
    if request.cookies("webexplorer")("filelist") <> "" then
     response.write " style=""cursor:hand;"" onclick=""javascript:document.explorer.action='?command=pastefile&folder=" & server.urlencode(strFolder) & "';document.explorer.submit();"""
    end if
    response.write "> <img src=""images/del.jpg"" border=0 alt=""삭제"" style=""cursor:hand;"" onclick=""javascript:document.explorer.action='?command=delfile';document.explorer.submit();""> <img src=""images/viewfile.jpg"" border=0 alt=""대기작업보기"""
    if request.cookies("webexplorer")("filelist") <> "" then
     response.write " style=""cursor:hand;"" onclick=""javascript:document.explorer.action='?command=dumplist';document.explorer.submit();"""
    end if
    response.write "></td></tr>"
    response.write"<tr><td align=center><form action=""?command=upload"" name=frmupload method=post enctype=multipart/form-data><input type=file name=ufile> <input type=hidden name=folder value=""" & strFolder & """><input type=button value=""파일올리기"" onclick=""uploadform()""></form></td></tr>"
    response.write "</table>" & vbcrlf
    response.write "<script language=""javascript"">" & vbcrlf
    response.write "function uploadform()" & vbcrlf
    response.write "{" & vbcrlf
    response.write "if (document.frmupload.ufile.value == """") " & vbcrlf
    response.write "  {" & vbcrlf
    response.write " alert (""업로드할 파일을 선택해주십시요."");" & vbcrlf
    response.write "  return false;" & vbcrlf
    response.write "  }" & vbcrlf
    response.write "document.frmupload.submit();" & vbcrlf
    response.write "}" & vbcrlf
    response.write "</script>" & vbcrlf
    response.write "<form name=explorer method=post>"
    response.write "<table border=0 cellpadding=5 cellspacing=1 bgcolor=black align=center width=95% >"
    response.write "<tr bgcolor=#eeeeee align=center><td>&nbsp;</td><td>&nbsp;</td><td>이름</td><td>크기</td><td>종류</td><td>수정된 날짜</td></tr>"

    set fso = server.createobject("scripting.filesystemobject")
    set objFolder = fso.getfolder( strFolder & "\")

    if objFolder.IsRootFolder then
     response.write "<tr bgcolor=white><td>&nbsp;</td><td align=center><img src=""images/filefolder.jpg""></td><td><a href=""?command=drives"">..</a></td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>"
    else
     response.write "<tr bgcolor=white><td>&nbsp;</td><td align=center><img src=""images/filefolder.jpg""></td><td><a href=""?command=folders&folder=" & server.urlencode(objFolder.ParentFolder) & """>..</a></td><td>&nbsp;</td><td>&nbsp;</td><td>&nbsp;</td></tr>"
    end if


    for each objSubFolder in objFolder.subfolders
     strName = objSubFolder.Name
     strSort = objSubFolder.Type
     strEditDate = objSubFolder.DateLastModified
     response.write "<tr bgcolor=white><td><input type=checkbox name=""" & objSubFolder & """></td><td align=center><img src=""images/filefolder.jpg""></td><td><a href=""?command=folders&folder=" & server.urlencode(objSubFolder) & """>" & strName & "</a></td><td>&nbsp;</td><td>" & xLeft(strSort,5) & "</td><td>" & mid(strEditDate,1,10) & "</td></tr>"
    next

    set objSubFolder = nothing

    for each objFile in objFolder.files
     strName = objFile.Name
     intSize = objFile.Size
     strSort = objFile.Type
     strEditDate = objFile.DateLastModified
     response.write "<tr bgcolor=white><td><input type=checkbox name=""" & objFile & """></td><td align=center><a href=""?command=downfile&file=" & server.urlencode(objFile) & """><img src=""images/unknownfiletype.jpg"" border=0></a></td><td><a href=""?command=viewfile&file=" & server.urlencode(objFile) & """>" & strName & "</a></td><td align=right>" & CalcByte(intSize) & "</td><td>" & xLeft(strSort,5) & "</td><td>" & mid(strEditDate,1,10) & "</td></tr>"
    next

    set objFile = nothing

    set objFolder = nothing
    set fso = nothing

    response.write "</table>"
    response.write "</form>"
    end sub

    Sub downFile()

    Dim DownFileName
    Dim xDownFileName
    Dim fso
    Dim file

    DownFileName  =  Request("file")

    If  Not  FileExists(DownFileName)  Then
            Err.Raise  3,  "한머리의  조언",  "해당  파일이  존재하지  않습니다."
            Exit  Sub
    End  If

    Response.Clear
    Response.Buffer  =  true
    Response.Expires  =  0
    Response.ExpiresAbsolute  =  Now()  -  1
    Response.AddHeader  "pragma",  "no-cache"
    Response.AddHeader  "cache-control",  "private"
    Response.CacheControl  =  "no-cache"

            xDownFileName  =  Mid(DownFileName,  InStrRev(DownFileName,  "\")  +  1,  Len(DownFileName)  -  InStrRev(DownFileName,  "\"))

    Response.clear
    Response.AddHeader  "Content-Disposition",  "  inline;  filename="  &  xDownFileName  &  ";"
    Response.ContentType  =  "application/unknown"

    set  fso  =  server.CreateObject("SiteGalaxyUpload.FileSystemObject")
    set  file  =  fso.OpenBinaryFile(DownFileName,  1,  false)
    Response.BinaryWrite  file.ReadAll
    Response.End
    set  file  =  nothing
    set  fso  =  nothing

    End Sub

    Sub viewfile()
    dim fso
    set fso  = server.createobject("scripting.filesystemobject")
    if fso.getfile(request("file")).size > 1048576 then
     Err.Raise  3,  "한머리의  조언",  "1M이상의 파일을 열 수 없습니다."
    else
     response.write "<form action=""?command=editfile&file=" & server.urlencode(request("file")) & """ method=post>"
     response.write "<textarea name=editfile cols=65 rows=20>"
     response.write fso.opentextfile(request("file")).readall
     response.write "</textarea>"
     response.write "<input type=submit value=""수정하기""> <input type=reset>"
     response.write "</form>"
    end if
    set fso = nothing
    End Sub

    Sub editFile()
    Dim fso

    Set fso = Server.CreateObject("Scripting.FileSystemObject")
    fso.opentextfile(request("file"),2).write request("editfile")
    Set fso = Nothing
    response.redirect "?command=folders&folder=" & server.urlencode(mid(request("file"),1,instrrev(request("file"),"\")-1))
    End Sub

    Sub delFile()
    Dim key
    Dim fso

    Set fso = server.createobject("scripting.filesystemobject")
    if request.form.count=0 then
     call goback("폴더나 파일을 선택해주십시요")
    else
     for each key in request.form
      if fso.FolderExists(key) then
       fso.DeleteFolder(key)
      else
       fso.DeleteFile(key)
      end if
     next
     Set fso = Nothing

     call goback("요청하신 폴더및 파일이 삭제되었습니다.")
    end if
    End Sub

    Sub upload()
    dim uploadform
    dim fso
    dim fn

    Set uploadform = Server.CreateObject("SiteGalaxyUpload.Form")

    if uploadform.ContentDisposition <> "form-data" then
     err.raise 3,"한머리의 조언", "잘못된 파일 전송 포멧입니다. 관리자에게 연락해주세요"
     Exit Sub
    end if

    if uploadform.Item("ufile").Size > (1048576 * 5) then
     Err.Raise 3,"한머리의 조언", "5M이상의 파일을 업로드 할 수 없습니다."
     Exit Sub
    end if

    set fso = server.CreateObject("Scripting.FileSystemObject")
    fn = uploadform.item("folder") & "\" & fso.GetFileName(uploadform("ufile").FilePath)
    set fso = Nothing

    uploadform("ufile").SaveAs(fn)

    Set uploadform = Nothing

    call goback("파일이 성공적으로 업로드되었습니다.")

    End Sub

    Sub copyFile()
    dim Key
    if request.form.count = 0 then
     call goback("폴더나 파일을 선택해주십시요.")
    else
     Response.Cookies("webexplorer")("cmd")="copy"
     Response.Cookies("webexplorer")("filelist")=""
     For Each Key In request.form
      Response.Cookies("webexplorer")("filelist")=Request.Cookies("webexplorer")("filelist") & Key & "/"
     Next
     call goback("")
    end if
    End Sub

    Sub moveFile()
    dim Key
    if request.form.count = 0 then
     call goback("폴더나 파일을 선택해주십시요.")
    else
     Response.Cookies("webexplorer")("cmd")="move"
     Response.Cookies("webexplorer")("filelist")=""
     For Each Key In request.form
      Response.Cookies("webexplorer")("filelist")=Request.Cookies("webexplorer")("filelist") & Key & "/"
     Next
     call goback("")
    end if
    End Sub

    Sub pasteFile()
    dim fso
    dim strFileList
    dim i

    if Request.Cookies("webexplorer")("cmd")="move" then
     strFileList = split(Request.Cookies("webexplorer")("filelist"),"/")
     Set fso = server.createobject("scripting.filesystemobject")
     For i = 0 to Ubound(strFileList)-1
      if fso.FolderExists(strFileList(i)) then
       fso.MoveFolder strFileList(i), request.querystring("folder") & "\"
      else
       fso.MoveFile strFileList(i), request.querystring("folder") & "\"
      end if
     Next
     set fso = Nothing
     response.cookies("webexplorer")("filelist")=""
     call goback("폴더 또는 파일 이동을 완료하였습니다.")
    else
     strFileList = split(Request.Cookies("webexplorer")("filelist"),"/")
     Set fso = server.createobject("scripting.filesystemobject")
     For i = 0 to Ubound(strFileList)-1
      if fso.FolderExists(strFileList(i)) then
       fso.CopyFolder strFileList(i), request.querystring("folder") & "\"
      else
       fso.CopyFile strFileList(i), request.querystring("folder") & "\"
      end if
     Next
     set fso = Nothing
     call goback("폴더 또는 파일 복사를 완료하였습니다.")
    end if
    End Sub

    Sub dumpList()
    dim strFileList
    dim i
    Response.write "대기 작업 : " & Request.Cookies("webexplorer")("cmd") & "<br>"
    strFileList = split(Request.Cookies("webexplorer")("filelist"),"/")
    For i = 0 to Ubound(strFileList)
     response.write strFileList(i) & "<br>"
    Next
    End Sub
    %>

    2009/04/21 10:53 2009/04/21 10:53

    <%
    'Option Explicit

    Class configs

    Private mClassName
    Private mConfigRootPath
    Private mItems
    Private mXmlRootNodeName
    Private mConfigName

    Private Sub Class_Initialize()
     mClassName = "configs class"
     mXmlRootNodeName = "configs"
     mConfigRootPath = server.mappath("./")
    End Sub

    Public Sub Load(configname)
     Dim xdom
     Dim i
     
     mConfigName = configname
     Set mItems = Server.CreateObject("scripting.dictionary")
     Set xdom = server.CreateObject("microsoft.xmldom")
     xdom.load mconfigrootpath & "\" & configname & ".xml"
     If xdom.parseerror.errorcode <> 0 Then
      Err.raise vbObjectError, mClassName, xdom.parseerror.reason
     Else
      if xdom.documentelement.nodename = mXmlRootNodeName Then
       For i=0 To xdom.documentelement.childnodes.length-1
        mItems.add xdom.documentelement.childnodes(i).nodename, xdom.documentelement.childnodes(i).text
       Next
      Else
       Err.raise vbObjectError, mClassName, "Invalid Configuration File"
      End If
     End If
     Set xdom = nothing
    End Sub

    Public Sub Save()
     Dim xdom
     Dim i

     Set xdom = server.CreateObject("microsoft.xmldom")
     xdom.load mconfigrootpath & "\" & mConfigName & ".xml"
     If xdom.parseerror.errorcode <> 0 Then
      Err.raise vbObjectError, mClassName, xdom.parseerror.reason
     Else
      if xdom.documentelement.nodename = mXmlRootNodeName Then
       For i= xdom.documentelement.childnodes.length-1 To 0 Step -1
        xdom.documentelement.removechild(xdom.documentelement.childnodes(i))
       Next
       Dim keys, items, newelement
       keys = mItems.keys()
       items = mItems.items()
       For i=0 To mItems.count-1
        Set newelement = xdom.createElement(keys(i))
        newelement.text = items(i)
        xdom.documentelement.appendchild newelement
        Set newelement = Nothing
       Next
       xdom.save mconfigrootpath & "\" & mConfigName & ".xml"
      Else
       Err.raise vbObjectError, mClassName, "Invalid Configuration File"
      End If
     End If
     Set xdom = nothing
     Set mItems = Nothing
    End Sub

    Public Sub Add(key, value)
     mItems.Add key, value
    End Sub

    Public Function Item(key)
     Item = mItems.Item(key)
    End Function

    End Class

    'example.asp
    '
    'Dim a
    'Set a = new configs
    'a.load "example"
    'response.write a.item("test1")
    'a.add "test4", "33>3"
    'a.save
    'Set a = nothing

    'example.xml
    '
    '<configs><test1>1111</test1><test2>2222</test2><test3>3333</test3></configs>
    %>

    2009/04/21 10:52 2009/04/21 10:52

    dbhelper class

    프로그래밍/Asp 2009/04/21 10:52

    <!--METADATA TYPE= "typelib"  NAME= "ADODB Type Library"
          FILE="C:\Program Files\Common Files\SYSTEM\ADO\msado15.dll"  -->
    <%
     Class clsDBHelper
      Private DefaultConnString
      Private DefaultConnection
     
      private sub Class_Initialize()
       DefaultConnString = "Provider=SQLOLEDB;Data Source=(local);Initial Catalog=pubs;User Id=sa;Password=1;"
       Set DefaultConnection = Nothing
      End Sub

        '---------------------------------------------------
        ' SP를 실행하고, RecordSet을 반환한다.
        '---------------------------------------------------
        Public Function ExecSPReturnRS(spName, params, connectionString)
          If IsObject(connectionString) Then
            If connectionString is Nothing Then
              If DefaultConnection is Nothing Then
                Set DefaultConnection = CreateObject("ADODB.Connection")
                DefaultConnection.Open DefaultConnString       
              End If     
              Set connectionString = DefaultConnection
            End If
          End If
         
         Set rs = CreateObject("ADODB.RecordSet")
         Set cmd = CreateObject("ADODB.Command")

         cmd.ActiveConnection = connectionString
         cmd.CommandText = spName
         cmd.CommandType = adCmdStoredProc
         Set cmd = collectParams(cmd, params)
         'cmd.Parameters.Refresh

         rs.CursorLocation = adUseClient
         rs.Open cmd, ,adOpenStatic, adLockReadOnly
        
         For i = 0 To cmd.Parameters.Count - 1  
           If cmd.Parameters(i).Direction = adParamOutput OR cmd.Parameters(i).Direction = adParamInputOutput OR cmd.Parameters(i).Direction = adParamReturnValue Then
             If IsObject(params) Then    
               If params is Nothing Then
                 Exit For        
               End If      
             Else
               params(i)(4) = cmd.Parameters(i).Value
             End If
           End If
         Next

         Set cmd.ActiveConnection = Nothing
         Set cmd = Nothing
         Set rs.ActiveConnection = Nothing

         Set ExecSPReturnRS = rs
        End Function

        '---------------------------------------------------
        ' SQL Query를 실행하고, RecordSet을 반환한다.
        '---------------------------------------------------
        Public Function ExecSQLReturnRS(strSQL, params, connectionString)
          If IsObject(connectionString) Then
            If connectionString is Nothing Then
              If DefaultConnection is Nothing Then
                Set DefaultConnection = CreateObject("ADODB.Connection")
                DefaultConnection.Open DefaultConnString       
              End If     
              Set connectionString = DefaultConnection
            End If
          End If
         
         Set rs = CreateObject("ADODB.RecordSet")
         Set cmd = CreateObject("ADODB.Command")

         cmd.ActiveConnection = connectionString
         cmd.CommandText = strSQL
         cmd.CommandType = adCmdText
         Set cmd = collectParams(cmd, params)
        
         rs.CursorLocation = adUseClient
         rs.Open cmd, , adOpenStatic, adLockReadOnly
        
         Set cmd.ActiveConnection = Nothing
         Set cmd = Nothing
         Set rs.ActiveConnection = Nothing
        
         Set ExecSQLReturnRS = rs
        End Function

        '---------------------------------------------------
        ' SP를 실행한다.(RecordSet 반환없음)
        '---------------------------------------------------
        Public Sub ExecSP(strSP,params,connectionString)
          If IsObject(connectionString) Then
            If connectionString is Nothing Then
              If DefaultConnection is Nothing Then
                Set DefaultConnection = CreateObject("ADODB.Connection")
                DefaultConnection.Open DefaultConnString       
              End If     
              Set connectionString = DefaultConnection
            End If
          End If
         
         Set cmd = CreateObject("ADODB.Command")

         cmd.ActiveConnection = connectionString
          cmd.CommandText = strSP
          cmd.CommandType = adCmdStoredProc
         Set cmd = collectParams(cmd, params)

         cmd.Execute , , adExecuteNoRecords
        
         For i = 0 To cmd.Parameters.Count - 1  
           If cmd.Parameters(i).Direction = adParamOutput OR cmd.Parameters(i).Direction = adParamInputOutput OR cmd.Parameters(i).Direction = adParamReturnValue Then
             If IsObject(params) Then    
               If params is Nothing Then
                 Exit For        
               End If      
             Else
               params(i)(4) = cmd.Parameters(i).Value
             End If
           End If
         Next

         Set cmd.ActiveConnection = Nothing
         Set cmd = Nothing
        End Sub

        '---------------------------------------------------
        ' SP를 실행한다.(RecordSet 반환없음)
        '---------------------------------------------------
        Public Sub ExecSQL(strSQL,params,connectionString)     
          If IsObject(connectionString) Then
            If connectionString is Nothing Then
              If DefaultConnection is Nothing Then
                Set DefaultConnection = CreateObject("ADODB.Connection")
                DefaultConnection.Open DefaultConnString       
              End If     
              Set connectionString = DefaultConnection
            End If
          End If
         
         Set cmd = CreateObject("ADODB.Command")

         cmd.ActiveConnection = connectionString
         cmd.CommandText = strSQL
         cmd.CommandType = adCmdText
         Set cmd = collectParams(cmd, params)

         cmd.Execute , , adExecuteNoRecords

         Set cmd.ActiveConnection = Nothing
         Set cmd = Nothing
        End Sub

        '---------------------------------------------------
        ' 트랜잭션을 시작하고, Connetion 개체를 반환한다.
        '---------------------------------------------------
        Public Function BeginTrans(connectionString)
          If IsObject(connectionString) Then
            If connectionString is Nothing Then
              connectionString = DefaultConnString
            End If
          End If

          Set conn = Server.CreateObject("ADODB.Connection")
          conn.Open connectionString
          conn.BeginTrans
          Set BeginTrans = conn
        End Function

        '---------------------------------------------------
        ' 활성화된 트랜잭션을 커밋한다.
        '---------------------------------------------------
        Public Sub CommitTrans(connectionObj)
          If Not connectionObj Is Nothing Then
            connectionObj.CommitTrans
            connectionObj.Close
            Set ConnectionObj = Nothing
          End If
        End Sub

        '---------------------------------------------------
        ' 활성화된 트랜잭션을 롤백한다.
        '---------------------------------------------------
        Public Sub RollbackTrans(connectionObj)
          If Not connectionObj Is Nothing Then
            connectionObj.RollbackTrans
            connectionObj.Close
            Set ConnectionObj = Nothing
          End If
        End Sub

        '---------------------------------------------------
        ' 배열로 매개변수를 만든다.
        '---------------------------------------------------
        Public Function MakeParam(PName,PType,PDirection,PSize,PValue)
          MakeParam = Array(PName, PType, PDirection, PSize, PValue)
        End Function

        '---------------------------------------------------
        ' 매개변수 배열 내에서 지정된 이름의 매개변수 값을 반환한다.
        '--------------------------------------------------- 
        Public Function GetValue(params, paramName)
          For Each param in params
            If param(0) = paramName Then
              GetValue = param(4)
              Exit Function
            End If
          Next
        End Function

        Public Sub Dispose
      if (Not DefaultConnection is Nothing) Then
       if (DefaultConnection.State = adStateOpen) Then DefaultConnection.Close
       Set DefaultConnection = Nothing
      End if
        End Sub

        '---------------------------------------------------------------------------
        'Array로 넘겨오는 파라메터를 Parsing 하여 Parameter 객체를
        '생성하여 Command 객체에 추가한다.
        '---------------------------------------------------------------------------
        Private Function collectParams(cmd,argparams)
         If VarType(argparams) = 8192 or VarType(argparams) = 8204 or VarType(argparams) = 8209 then
          params = argparams
          For i = LBound(params) To UBound(params)
           l = LBound(params(i))
           u = UBound(params(i))
           ' Check for nulls.
           If u - l = 4 Then
           
            If VarType(params(i)(4)) = vbString Then
             If params(i)(4) = "" Then
              v = Null
             Else
              v = params(i)(4)
             End If
            Else
             v = params(i)(4)
            End If
            cmd.Parameters.Append cmd.CreateParameter(params(i)(0), params(i)(1), params(i)(2), params(i)(3), v)
           End If
          Next

          Set collectParams = cmd
          Exit Function
         Else
          Set collectParams = cmd
         End If
        End Function

     End Class
    %>


    2009/04/21 10:52 2009/04/21 10:52
    interesting my example

    <%

    Sub viewCode(codefile)
    response.write "<p style=""background-color=#eeeeee;"">"
    set fso = server.createobject("scripting.filesystemobject")
    set f = fso.opentextfile(server.mappath(codefile),1)
    allViewCode = viewHTML(f.readall)
    set f = nothing
    response.write codingcolor(allviewcode,"brown")
    response.write "</p>"
    End Sub

    'Coding부분을  찾아서  Coloring함수로...
    function  CodingColor(strTemp,strFontColor)
              Dim  firstPos
              Dim  lastPos
              Dim  leftString
              Dim  midString
              Dim  rightString
              Dim  xmidString

              firstPos  =1
              lastPos  =  1
              do  until  lastPos  >=  len(strTemp)
                        firstPos  =  instr(lastPos,  strTemp,  "&lt;%")
                        if  firstPos  <=  0  then
                                  exit  do
                        end  if
                        lastPos  =  instr(firstPos,  strTemp,  "%&gt;")
                        if  lastPos  <=  0  then
                                  lastPos  =  len(strTemp)
                        end  if
                        lastPos  =  lastPos  +  len("%&gt;")  -  1
                        leftString  =  left(strTemp,firstPos-1)
                        midString  =  mid(strTemp,firstPos,lastPos-firstPos+1)
                        rightString  =  mid(strTemp,lastPos+1,len(strTemp)-lastPos)
                        xmidString  =  coloring(midString)
    '                    strTemp  =  leftString  &  xmidString  &  rightString
    '                    lastPos  =  firstPos  +  len(xmidString)-1
                        strTemp  =  leftString  &  "<span  style=color:"  &  strFontColor  &  ";>"  &  xmidString  &  "</span>"  &  rightString
                        lastPos  =  firstPos  +  len("<span  style=color:"  &  strFontColor  &  ";>"  &  xmidString  &  "</span>")-1
              loop

              CodingColor  =  strTemp
    end  function

    function  coloring(strViewCode)
              Dim  Reservedwords
              Dim  aryReservedword
              Dim  i
              Dim  strFunction
              Dim  aryFunction

              Reservedwords="And|Call|Case|Const|Dim|Do|Each|Else|ElseIf|Empty|End|Eqv|Erase|Error|Exit|Explicit|False|For|Function|If|Imp|In|Is|Loop|Mod|Next|Not|Nothing|Null|On|Option|Or|Private|Public|Randomize|ReDim|Resume|Select|Set|Step|Sub|Then|To|True|Until|Wend|While|Xor"
              aryReservedword=split(Reservedwords,"|")
              for  i  =  0  to  ubound(aryReservedword)
                        strViewCode  =  wordReplace(strViewCode,aryReservedword(i),"blue")
              next
             
              strFunction="Anchor|Array|Asc|Atn|CBool|CByte|CCur|CDate|CDbl|Chr|CInt|CLng|Cos|CreateObject|CSng|CStr|Date|DateAdd|DateDiff|DatePart|DateSerial|DateValue|Day|Dictionary|Document|Element|Err|Exp|FileSystemObject|Filter|Fix|Int|Form|FormatCurrency|FormatDateTime|FormatNumber|FormatPercent|GetObject|Hex|History|Hour|InputBox|InStr|InstrRev|IsArray|IsDate|IsEmpty|IsNull|IsNumeric|IsObject|Join|LBound|LCase|Left|Len|Link|LoadPicture|Location|Log|LTrim|RTrim|Trim|Mid|Minute|Month|MonthName|MsgBox|Navigator|Now|Oct|Replace|Right|Rnd|Round|ScriptEngine|ScriptEngineBuildVersion|ScriptEngineMajorVersion|ScriptEngineMinorVersion|Second|Sgn|Sin|Space|Split|Sqr|StrComp|String|StrReverse|Tan|Time|TextStream|TimeSerial|TimeValue|TypeName|UBound|UCase|VarType|Weekday|WeekDayName|Window|Year"
              aryFunction=split(strFunction,"|")
              for  i  =  0  to  ubound(aryFunction)
                        strViewCode  =  wordReplace(strViewCode,aryFunction(i),"red")
              next
              strviewcode  =  blockcomment(strviewcode,"""""magenta")
              strviewcode  =  linecomment(strviewcode,"'""green")
              coloring  =  linecomment(strviewcode,"Rem""green")
    end  function

    'HTML  보기에서  단어에  색상입히기
    Function  wordReplace(strSearchWithin,strSearchFor,fontcolor)
              Dim  lngStartingPosition
              Dim  lngFoundPosition
              Dim  strReplaced
              Dim  ascBlank
            lngStartingPosition=1
            lngFoundPosition=InStr(lngStartingPosition,strSearchWithin,strSearchFor,1)
            do  while  lngFoundPosition  >  0
                        ascBlank=asc(Mid(strSearchWithin,lngFoundPosition-1,1))
                        if  (ascBlank>=48  and  ascBlank<=57)  or  (ascBlank>=65  and  ascBlank<=90)  or  (ascBlank>=97  and  ascBlank<=122)  then
                                            strReplaced=strReplaced  &  Mid(strSearchWithin,lngStartingPosition,lngFoundPosition-lngStartingPosition)  &  mid(strSearchWithin,lngFoundPosition,len(strSearchFor))
                        else
                                  ascBlank=asc(Mid(strSearchWithin,lngFoundPosition+len(strSearchFor),1))
                                  if  (ascBlank>=48  and  ascBlank<=57)  or  (ascBlank>=65  and  ascBlank<=90)  or  (ascBlank>=97  and  ascBlank<=122)  then
                                            strReplaced=strReplaced  &  Mid(strSearchWithin,lngStartingPosition,lngFoundPosition-lngStartingPosition)  &  mid(strSearchWithin,lngFoundPosition,len(strSearchFor))
                                  else
                                            'found
                                            strReplaced=strReplaced  &  Mid(strSearchWithin,lngStartingPosition,lngFoundPosition-lngStartingPosition)  &  "<font  color="  &  fontcolor  &  ">"  &  mid(strSearchWithin,lngFoundPosition,len(strSearchFor))  &  "</font>"
                                  end  if
                        end  if
                    lngStartingPosition=lngFoundPosition+len(strSearchFor)
                    lngFoundPosition=InStr(lngStartingPosition,strSearchWithin,strSearchFor,1)
            Loop 
            wordReplace=strReplaced  &  Mid(strSearchWithin,lngStartingPosition)  'catch the  last  one
    End  Function

    'HTML  보기
    function  viewHTML(strHTML)
              viewHTML    =  replace(replace(replace(replace(replace(replace(strHTML,"&","&amp;"),"<","&lt;"),">","&gt;"),"  ","&nbsp;  "),"          ","&nbsp;  &nbsp;  &nbsp;  &nbsp;  &nbsp;  "),vbcrlf,"<br>"  &  vbcrlf)
    end  function

    '줄단위  주석문  처리
    function  linecomment(strTemp,  strCommentChar,  strFontColor)
              Dim  firstPos
              Dim  lastPos
              Dim  leftString
              Dim  midString
              Dim  rightString
              Dim  xmidString

              firstPos  =1
              lastPos  =  1
              do  until  lastPos  >=  len(strTemp)
                        firstPos  =  instr(lastPos,  strTemp,  strCommentChar)
                        if  firstPos  <=  0  then
                                  exit  do
                        end  if
                        lastPos  =  instr(firstPos,  strTemp,  "<br>"  &  vbcrlf)  +  5
                        if  lastPos  <=  0  then
                                  lastPos  =  len(strTemp)
                        end  if
                        'Single  Quotation  &  "Rem"  String  Exception  ("'",  "Rem")
                        If  not(mid(strTemp,  firstPos-1,  1)=""""  And  mid(strTemp,firstPos  +  Len(strCommentChar),1)="""")    Then
                                  leftString  =  left(strTemp,firstPos-1)
                                  midString  =  mid(strTemp,firstPos,lastPos-firstPos+1)
                                  rightString  =  mid(strTemp,lastPos+1,len(strTemp)-lastPos)
                                  xmidString  =  extractColor(midString)
                                  strTemp  =  leftString  &  "<font  color="  &  strFontColor  &  ">"  &  xmidString  &  "</font>"  &  rightString
                                  lastPos  =  instr(firstPos,  strTemp,  "<br>"  &  vbcrlf)  +  6
                        Else
                                  lastPos  =  lastPos  +  1
                        End  If
              loop

              linecomment  =  strTemp
    end  function

    '블럭단위  주석문  처리
    function  blockcomment(strTemp,  strCommentChar,  strFontColor)
              Dim  firstPos
              Dim  lastPos
              Dim  leftString
              Dim  midString
              Dim  rightString
              Dim  xmidString

              firstPos  =1
              lastPos  =  1
              do  until  lastPos  >=  len(strTemp)
                        firstPos  =  instr(lastPos,  strTemp,  strCommentChar)
                        if  firstPos  <=  0  then
                                  exit  do
                        end  if
                        lastPos  =  instr(firstPos+len(strCommentChar),  strTemp,  strCommentChar)
                        if  lastPos  <=  0  then
                                  lastPos  =  len(strTemp)
                        end  if
                        lastPos  =  lastPos  +  len(strCommentChar)-1
                        leftString  =  left(strTemp,firstPos-1)
                        midString  =  mid(strTemp,firstPos,lastPos-firstPos+1)
                        rightString  =  mid(strTemp,lastPos+1,len(strTemp)-lastPos)
                        xmidString  =  extractColor(midString)
                        strTemp  =  leftString  &  "<font  color="  &  strFontColor  &  ">"  &  xmidString  &  "</font>"  &  rightString
                        lastPos  =  firstPos  +  len("<font  color="  &  strFontColor  &  ">"  &  xmidString  &  "</font>")
              loop

              blockcomment  =  strTemp
    end  function

    function  extractColor(strColor)
              dim  exfirstPos
              dim  exlastPos
              Dim  xleftString
              Dim  xmidString
              Dim  xrightString

              extractColor  =  strColor
    '          exit  function

              exfirstPos  =1
              exlastPos  =  1
              do  until  exlastPos  >=  len(strColor)
                        exfirstPos  =  instr(exlastPos,  strColor,  "<font  color=")
                        if  exfirstPos  <=  0  then
                                  exit  do
                        end  if
                        exlastPos  =  instr(exfirstPos  +  11,  strColor,  ">")
                        if  exlastPos  <=  0  then
                                  exit  do
                        end  if
                        xleftString  =  left(strColor,exfirstPos-1)
                        xmidString  =  mid(strColor,exfirstPos,exlastPos-exfirstPos+1)
                        xrightString  =  mid(strColor,exlastPos+1,len(strColor)-exlastPos)
                        strColor  =  xleftString  &  xrightString
                        exlastPos  =  exfirstPos-1
                        exfirstPos  =  exlastPos
              loop
              extractColor  =  replace(strColor,"</font>","")
    end  function
    %>

    2009/04/21 10:51 2009/04/21 10:51

    http://www.codeproject.com/KB/asp/aspcallwebservice.aspx


    Introduction
    Recently, I tried to use for the first time a webservice from an ASP page and I really had problems, after hours I could access to my webservice from ASP with Microsoft.XMLHTTP, but the code was not very easy (if it is your first time), so I decided to package the implementation in a simple vbscript class with a few properties that allow to access to a webservice.

    The page that use the vbscript class is:
    <!--#include virtual="/webservice.asp"-->
    <html>
    <head>
    <title>testws</title>
    </head>
    <body>
    <%
        dim ws
     
        set ws = new webservice
        ws.url = "http://localhost/yourwebservice.asmx"
        ws.method = "MethodName"
        ws.parameters.Add "ParamName1",1
        ws.parameters.Add "ParamName2",300
        ws.parameters.Add "ParamNameN",500
     
        ws.execute
        response.Write ws.response
     
        set ws = nothing
    %>
    </body>
    </html>Like you can see, it is very simple to use; define the properties, call the execute method and the property response will return the information from webservice.

    The class that implement the call to webservice is:
    <%
    option explicit
    class WebService
      public Url
      public Method
      public Response
      public Parameters
     
      public function execute()
        dim xmlhttp
        Set xmlhttp = CreateObject("Microsoft.XMLHTTP")
        xmlhttp.open "POST", Url & "/" & Method, false
        xmlhttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
        xmlhttp.send Parameters.toString
        response = xmlhttp.responseText
        set xmlhttp = nothing
      end function
      Private Sub Class_Initialize()
        Set Parameters = new wsParameters
      End Sub
      Private Sub Class_Terminate()
        Set Parameters = Nothing
      End Sub
    End class
    class wsParameters
      public mCol
      public function toString()
        dim nItem
        dim buffer
        buffer = ""
        for nItem = 1 to Count
          buffer = buffer & Item(nItem).toString & "&"
        next
        if right(buffer,1)="&" then
          buffer = left(buffer,len(buffer)-1)
        end if
        toString = buffer
      end function
      public sub Clear
        set mcol = nothing
        Set mCol = CreateObject("Scripting.Dictionary")
      end sub
      public sub Add(pKey,pValue)
        dim newParameter
     
        set newParameter = new wsParameter
        newParameter.Key = pKey
        newParameter.Value = pValue
        mCol.Add mCol.count+1, newParameter
     
        set newParameter = nothing
      end sub
      public function Item(nKey)
        set Item=mCol.Item(nKey)
      end function
      public function ExistsXKey(pKey)
        dim nItem
     
        for nItem = 1 to mcol.count
          if mCol.Item(nItem).key = pKey then
            ExistsXKeyword = true
            exit for
          end if
        next
      end function
      public sub Remove(nKey)
        mCol.Remove(nKey)
      end sub
      public function Count()
        Count=mCol.count
      end function
      Private Sub Class_Initialize()
        Set mCol = CreateObject("Scripting.Dictionary")
      End Sub
      Private Sub Class_Terminate()
        Set mCol = Nothing
      End Sub
    end class
    class wsParameter
       public Key
       public Value
       public function toString()
         toString = Key & "=" & Value
       end function
    end class
    %>
    I hope that this small code of my implementation can help you, thanks, and if any question please send me an email.


    License
    This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

    A list of licenses authors might use can be found here

    About the Author
    asanoguera


     Estudie computacion desde los 12 años, a los 18 ya estaba trabajando en una empresa que desarrollaba soluciones para clinicas y laboratorios bioquimicos en QuickBasic y BTrieve, a los 21 comence a trabajar en una consultora que desarrollaba soluciones a medida para empresas en QBX, VB5 y MSAccess, tambien me desempeñé como programador senior durante 5 años en un ente gubernamental realizando analisis y desarrollando sistemas de gestion y estadisticas para la toma de decisiones en VB6, ASP y MS-SQL 2000, independientemente desarrolle varios proyectos y trabaje tambien para empresas en el extranjero en ASP/ASP.NET y MS-SQL 2000, actualmente desarrollo aplicaciones web en ASP.NET 2.0, Atlas, con WebServices y MS-SQL 2000
    Occupation:  Web Developer
    Location:   Argentina

    2009/04/21 10:51 2009/04/21 10:51

    <%
    '**************************************************************************************************************
    '* GAB_LIBRARY Copyright (C) 2003 - This file is part of GAB_LIBRARY
    '* For license refer to the license.txt
    '**************************************************************************************************************

    '**************************************************************************************************************

    '' @CLASSTITLE: JSON
    '' @CREATOR: Michal Gabrukiewicz (gabru at grafix.at), Michael Rebec
    '' @CONTRIBUTORS: - Cliff Pruitt (opensource at crayoncowboy.com)
    '' - Sylvain Lafontaine
    '' @CREATEDON: 2007-04-26 12:46
    '' @CDESCRIPTION: Comes up with functionality for JSON (http://json.org) to use within ASP.
    '' Correct escaping of characters, generating JSON Grammer out of ASP datatypes and structures
    '' @REQUIRES: -
    '' @OPTIONEXPLICIT: yes
    '' @VERSION: 1.4.1

    '**************************************************************************************************************
    class JSON

    'private members
    private output, innerCall

    'public members
    public toResponse ''[bool] should generated results be directly written to the response? default = false

    '**********************************************************************************************************
    '* constructor
    '**********************************************************************************************************
    public sub class_initialize()
    newGeneration()
    toResponse = false
    end sub

    '******************************************************************************************
    '' @SDESCRIPTION: STATIC! takes a given string and makes it JSON valid
    '' @DESCRIPTION: all characters which needs to be escaped are beeing replaced by their
    '' unicode representation according to the
    '' RFC4627#2.5 - http://www.ietf.org/rfc/rfc4627.txt?number=4627
    '' @PARAM: val [string]: value which should be escaped
    '' @RETURN: [string] JSON valid string
    '******************************************************************************************
    public function escape(val)
    dim cDoubleQuote, cRevSolidus, cSolidus
    cDoubleQuote = &h22
    cRevSolidus = &h5C
    cSolidus = &h2F

    dim i, currentDigit
    for i = 1 to (len(val))
    currentDigit = mid(val, i, 1)
    if asc(currentDigit) > &h00 and asc(currentDigit) < &h1F then
    currentDigit = escapequence(currentDigit)
    elseif asc(currentDigit) >= &hC280 and asc(currentDigit) <= &hC2BF then
    currentDigit = "\u00" + right(padLeft(hex(asc(currentDigit) - &hC200), 2, 0), 2)
    elseif asc(currentDigit) >= &hC380 and asc(currentDigit) <= &hC3BF then
    currentDigit = "\u00" + right(padLeft(hex(asc(currentDigit) - &hC2C0), 2, 0), 2)
    else
    select case asc(currentDigit)
    case cDoubleQuote: currentDigit = escapequence(currentDigit)
    case cRevSolidus: currentDigit = escapequence(currentDigit)
    case cSolidus: currentDigit = escapequence(currentDigit)
    end select
    end if
    escape = escape & currentDigit
    next
    end function

    '******************************************************************************************************************
    '' @SDESCRIPTION: generates a representation of a name value pair in JSON grammer
    '' @DESCRIPTION: the generation is done fully recursive so the value can be a complex datatype as well. e.g.
    '' toJSON("n", array(array(), 2, true), false) or toJSON("n", array(RS, dict, false), false), etc.
    '' @PARAM: name [string]: name of the value (accessible with javascript afterwards). leave empty to get just the value
    '' @PARAM: val [variant], [int], [float], [array], [object], [dictionary], [recordset]: value which needs
    '' to be generated. Conversation of the data types (ASP datatype -> Javascript datatype):
    '' NOTHING, NULL -> null, ARRAY -> array, BOOL -> bool, OBJECT -> name of the type,
    '' MULTIDIMENSIONAL ARRAY -> generates a 1 dimensional array (flat) with all values of the multidim array
    '' DICTIONARY -> valuepairs. each key is accessible as property afterwards
    '' RECORDSET -> array where each row of the recordset represents a field in the array.
    '' fields have properties named after the column names of the recordset (LOWERCASED!)
    '' e.g. generate(RS) can be used afterwards r[0].ID
    '' INT, FLOAT -> number
    '' OBJECT with reflect() method -> returned as object which can be used within JavaScript
    '' @PARAM: nested [bool]: is the value pair already nested within another? if yes then the {} are left out.
    '' @RETURN: [string] returns a JSON representation of the given name value pair
    '' (if toResponse is on then the return is written directly to the response and nothing is returned)
    '******************************************************************************************************************
    public function toJSON(name, val, nested)
    if not nested and not isEmpty(name) then write("{")
    if not isEmpty(name) then write("""" & escape(name) & """: ")
    generateValue(val)
    if not nested and not isEmpty(name) then write("}")
    toJSON = output

    if innerCall = 0 then newGeneration()
    end function

    '******************************************************************************************************************
    '* generate
    '******************************************************************************************************************
    private function generateValue(val)
    if isNull(val) then
    write("null")
    elseif isArray(val) then
    generateArray(val)
    elseif isObject(val) then
    if val is nothing then
    write("null")
    elseif typename(val) = "Dictionary" then
    generateDictionary(val)
    elseif typename(val) = "Recordset" then
    generateRecordset(val)
    else
    generateObject(val)
    end if
    else
    'bool
    dim varTyp
    varTyp = varType(val)
    if varTyp = 11 then
    if val then write("true") else write("false")
    'int, long, byte
    elseif varTyp = 2 or varTyp = 3 or varTyp = 17 or varTyp = 19 then
    write(cLng(val))
    'single, double, currency
    elseif varTyp = 4 or varTyp = 5 or varTyp = 6 or varTyp = 14 then
    write(replace(cDbl(val), ",", "."))
    else
    write("""" & escape(val & "") & """")
    end if
    end if
    generateValue = output
    end function

    '******************************************************************************************************************
    '* generateArray
    '******************************************************************************************************************
    private sub generateArray(val)
    dim item, i
    write("[")
    i = 0
    'the for each allows us to support also multi dimensional arrays
    for each item in val
    if i > 0 then write(",")
    generateValue(item)
    i = i + 1
    next
    write("]")
    end sub

    '******************************************************************************************************************
    '* generateDictionary
    '******************************************************************************************************************
    private sub generateDictionary(val)
    dim keys, i
    innerCall = innerCall + 1
    write("{")
    keys = val.keys
    for i = 0 to uBound(keys)
    if i > 0 then write(",")
    toJSON keys(i), val(keys(i)), true
    next
    write("}")
    innerCall = innerCall - 1
    end sub

    '******************************************************************************************************************
    '* generateRecordset
    '******************************************************************************************************************
    private sub generateRecordset(val)
    dim i
    write("[")
    while not val.eof
    innerCall = innerCall + 1
    write("{")
    for i = 0 to val.fields.count - 1
    if i > 0 then write(",")
    toJSON lCase(val.fields(i).name), val.fields(i).value, true
    next
    write("}")
    val.movenext()
    if not val.eof then write(",")
    innerCall = innerCall - 1
    wend
    write("]")
    end sub

    '******************************************************************************************************************
    '* generateObject
    '******************************************************************************************************************
    private sub generateObject(val)
    dim props
    on error resume next
    set props = val.reflect()
    if err = 0 then
    on error goto 0
    innerCall = innerCall + 1
    toJSON empty, props, true
    innerCall = innerCall - 1
    else
    on error goto 0
    write("""" & escape(typename(val)) & """")
    end if
    end sub

    '******************************************************************************************************************
    '* newGeneration
    '******************************************************************************************************************
    private sub newGeneration()
    output = empty
    innerCall = 0
    end sub

    '******************************************************************************************
    '* JsonEscapeSquence
    '******************************************************************************************
    private function escapequence(digit)
    escapequence = "\u00" + right(padLeft(hex(asc(digit)), 2, 0), 2)
    end function

    '******************************************************************************************
    '* padLeft
    '******************************************************************************************
    private function padLeft(value, totalLength, paddingChar)
    padLeft = right(clone(paddingChar, totalLength) & value, totalLength)
    end function

    '******************************************************************************************
    '* clone
    '******************************************************************************************
    public function clone(byVal str, n)
    dim i
    for i = 1 to n : clone = clone & str : next
    end function

    '******************************************************************************************
    '* write
    '******************************************************************************************
    private sub write(val)
    if toResponse then
    response.write(val)
    else
    output = output & val
    end if
    end sub

    end class
    %>

    2009/04/21 10:50 2009/04/21 10:50

    editor/dialog 폴더에 있는 fck_image.html을 열어 27 라인쯤에 있는

     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

    라는 부분을 아래와 같이 수정한다.

    <meta http-equiv="Content-Language" content="ko">
    <meta http-equiv="Content-Type" content="text/html; charset=euc-kr">


    그럼 해결됩니다.

    2009/04/21 10:48 2009/04/21 10:48

    <script language="javascript">

      self.opener=self;

      self.close();
    </script>


    방법 2 : 프래임 속에있을때 닫는 법

    <script language="javascript">

      top.opener=self;

      top.close();

    </script>

    2009/04/21 10:47 2009/04/21 10:47
    htmlarg은?
    에디트플러스2에 붙여쓸수 있는 태그 정리기 입니다.
    복잡한 태그들과 php, js코드들을 정렬시켜줍니다.

    실행파일 다운로드 : htmlarg.exe v2.0.2
    소스코드 다운로드 : htmlarg.cpp


    $2



    $2
    1. htmlarg.exe를 다운로드를 받아 Editplus 폴더에 넣는다.
    2. 에디트 플러스를 실행,, 메뉴->도구->사용자 도구 구성
    3. 추가버튼을 눌러 위와 같이 프로그램을 추가한다.
    4. 텍스트 필터 사용에 꼭 체크한다
    5. 저장하고 사용



    $2
    [들여쓰기][코드들여쓰기] [태그리스트1] [태그리스트2] [태그리스트3] ($CurSel)
    --------
    ex) 2t D D D $(CurSel)
    • 들여쓰기
      0~9까지의 숫자, 탭문자를 이용하고 싶으면 t를 사용
    • 코드들여쓰기
      0~9까지의 숫자, 탭문자를 이용하고 싶으면 t를 사용
      코드 정렬을 안하려면 n을 사용한다
    • 태그리스트1
      들여쓰기할 태그 리스트, D를 이용하면 기본 태그를 사용한다.
      기본 목록은 tr,td,div,ol,ul,li 이다.
      추가하고 싶다면, D뒤에 컴마(,)를 이용 추가하면 가능하다.
      D를 없애고 직접 적어주는것도 가능하다.
    • 태그리스트2
      들여쓰기는 안하지만 한줄에 하나만 있어야할 태그 리스트.
      D를 이용하면 기본 태그를 사용한다.
      기본 목록은 html,head,body,title,meta,table,link,map,select 이다.
    • 태그리스트3
      정리를 안할 태그 리스트, D를 이용하면 기본 태그를 사용한다.
      기본 목록은 pre,style 이다.
      script와 ? 를 넣어두면 php와 jacsript가 html의 정렬과 상관없이 정렬된다.


    $2
    • php javascript의 정렬
    • 주석제거, PHP코드 제거 기능 제거


    $2
    • 2.0.1 : 정렬무시 기능 오작동 수정
    • 2.0.2 : 태그이름이 겹치는경우(ex link,li) 옵션이 무시되는 버그수정

    출처 : http://www.killrain.net/channel/lab/dev.php?mode=view&no=310

    2009/04/21 10:46 2009/04/21 10:46
    USE TEMPDB
    GO
    declare @hash varbinary (255)
    CREATE TABLE tempdb..h (id_num int, hash varbinary (255))
    SET @hash = pwdencrypt('123') -- encryption
    INSERT INTO tempdb..h (id_num,hash) VALUES (1,@hash)
    SET @hash = pwdencrypt('123')
    INSERT INTO tempdb..h (id_num,hash) VALUES (2,@hash)
    SELECT TOP 1 @hash = hash FROM tempdb..h WHERE id_num = 2
    SELECT pwdcompare ('123', @hash) AS [Success of check] -- Comparison
    SELECT * FROM tempdb..h
    INSERT INTO tempdb..h (id_num,hash) 
    VALUES (3,CONVERT(varbinary (255),
    0x01002D60BA07FE612C8DE537DF3BFCFA49CD9968324481C1A8A8FE612C8DE537DF3BFCFA49CD9968324481C1A8A8))
    SELECT TOP 1 @hash = hash FROM tempdb..h WHERE id_num = 3
    SELECT pwdcompare ('123', @hash) AS [Success of check] -- Comparison
    SELECT * FROM tempdb..h
    DROP TABLE tempdb..h
    GO
    

    Results

    (1 row(s) affected)
    (1 row(s) affected)
    Success of check ------------------- 1 (1 row(s) affected)
    id_num hash ----------- ------------------------------------------------------ 1 0x01004A335DCEDB366D99F564D460B1965B146D6184E4E1025195 2 0x0100E11D573F359629B344990DCD3D53DE82CF8AD6BBA7B638B6 (2 row(s) affected)
    (1 row(s) affected)
    Success of check
    -------------------
    1
    (1 row(s) affected)
    id_num hash ----------- ------------------------------------------------------ 1 0x01004A335DCEDB366D99F564D460B1965B146D6184E4E1025195 2 0x0100E11D573F359629B344990DCD3D53DE82CF8AD6BBA7B638B6 3 0x01002D60BA07FE612C8DE537DF3BFCFA49CD9968324481C1A8A8FE612C8DE537DF3BFCFA49CD9968324481C1A8A8 (3 row(s) affected)
    2009/04/21 10:43 2009/04/21 10:43
    프로그래밍을 하다보면 불가피하게 dynamic query를 사용해야하는 경우가 발생한다.

    stored procedure를 사용하면서 exec statement를 사용하게 되는데 이렇게 되면 조금만 부주의해도 injection에 의한 공격이 허용되는 경우도 있고 같은 유형의 쿼리가 들어가도 미리 만들어진 실행계획을 이용하지 못하는 문제가 있어서 성능면에서 그 효과가 많이 줄어든다.

    그에 반해 sp_executesql을 이용하게 되면 parameters를 이용할 수 있으므로 injection에 의한 공격에도 자유로울 수 있고 아래의 옮겨 놓은 ms sql의 도움말에 적혀 있듯이 비슷한 유형의 경우 기 실행계획을 이용하게 되는 경우가 있으니 상대적으로 성능면에서 유리한 면이 있고 이를 보고 일석이조라고 해야 하지 않을까 한다.

    == 아래 == :: ms sql 도움말 옮김

    sp_executesql

    여러 번 사용할 수 있거나, 동적으로 만들어진 Transact-SQL문 또는 일괄 처리를 실행합니다. Transact-SQL문 또는 일괄 처리는 포함 매개 변수를 포함할 수 있습니다.

    구문

    sp_executesql [@stmt =] stmt[
       
    {, [@params =] N'@parameter_name  data_type [,...n]' }
         {, [@param1 =] 'value1' [,...n] }
    ]

    인수

    [@stmt =] stmt

    Transact-SQL문 또는 일괄 처리를 포함한 유니코드 문자열입니다. stmt는 암시적으로 ntext로 변환될 수 있는 변수 또는 유니코드 상수여야 합니다. + 연산자로 두 개의 문자열을 연결한 식 등과 같은 보다 복잡한 유니코드식은 사용할 수 없습니다. 문자 상수도 사용할 수 없습니다. 상수가 지정된 경우에는 N이라는 접두사가 있어야 합니다. 예를 들어, N'sp_who'라는 유니코드 상수는 사용할 수 있지만 'sp_who'는 사용할 수 없습니다. 문자열의 크기는 사용 가능한 데이터베이스 서버의 메모리의 용량에 따라서만 제한됩니다.

    stmt는 변수 이름과 동일한 형식의 매개 변수를 포함할 수 있습니다. 예를 들면 다음과 같습니다.

    N'SELECT * FROM Employees WHERE EmployeeID = @IDParameter'
    

    stmt에 포함된 각 매개 변수에는 @params 매개 변수 정의 목록과 매개 변수 값 목록 모두에 해당되는 항목이 있어야 합니다.

    [@params =] N'@parameter_name  data_type [,...n]'

    stmt에 포함된 모든 매개 변수의 정의를 포함하는 하나의 문자열입니다. 문자열은 암시적으로 ntext로 변환될 수 있는 변수 또는 유니코드 상수여야 합니다. 각 매개 변수의 정의는 매개 변수 이름과 데이터 형식으로 구성됩니다. n은 추가 매개 변수 정의를 나타내는 자리 표시자입니다. stmt에서 지정된 모든 매개 변수는 반드시 @params에서 정의되어야 합니다. stmt의 Transact-SQL문 또는 일괄 처리에 매개 변수가 없는 경우에는 @params가 필요하지 않습니다. 이 매개 변수의 기본값은 NULL입니다.

    [@param1 =] 'value1'

    매개 변수 문자열에서 정의된 첫번째 매개 변수의 값입니다. 값은 상수 또는 변수가 될 수 있습니다. stmt에 포함된 모든 매개 변수에 대해 제공되는 매개 변수 값이 있어야 합니다. stmt의 Transact-SQL문 또는 일괄 처리에 매개 변수가 없는 경우에는 값이 필요하지 않습니다.

    n

    추가 매개 변수의 값에 대한 자리 표시자입니다. 값은 상수 또는 변수만 가능합니다. 값은 함수 또는 연산자를 사용하여 작성된 표현식 등과 같이, 보다 복잡한 표현식이 될 수 없습니다.

    반환 코드 값

    0(성공) 또는 1(실패)

    결과 집합

    SQL 문자열에 작성된 모든 SQL문에서 결과 집합을 반환합니다.

    비고

    sp_executesql은 일괄 처리, 이름의 범위 및 데이터베이스 컨텍스트면에서 EXECUTE와 동작이 동일합니다. sp_executesql stmt 매개 변수의 Transact-SQL문 또는 일괄 처리는 sp_executesql이 실행될 때까지 컴파일되지 않습니다. stmt의 내용은 sp_executesql이라는 일괄 처리의 실행 계획과 별도로 컴파일되고 실행됩니다. sp_executesql 일괄 처리는 sp_executesql을 호출하는 일괄 처리에서 선언된 변수를 참조할 수 없습니다. sp_executesql 일괄 처리의 로컬 커서 또는 변수는 sp_executesql을 호출하는 일괄 처리에는 보이지 않습니다. 데이터베이스 컨텍스트 내의 변경 사항은 sp_executesql문이 종료될 때까지만 지속됩니다.

    문에 대한 매개 변수의 변경 사항이 변형뿐인 경우, Transact-SQL문을 여러 번 실행하기 위해 저장 프로시저 대신 sp_executesql을 사용할 수 있습니다. Transact-SQL문 자체에 상수가 남아 있으며 매개 변수 값만이 변경되었으므로 Microsoft® SQL Server™ 쿼리 최적화 프로그램이 첫번째 실행에 대해 생성된 실행 계획을 다시 사용할 확률이 높습니다.

    참고   문의 문자열에 있는 개체 이름이 정식으로 규정되지 않은 경우에는 실행 계획이 다시 사용되지 않습니다.

    sp_executesql은 Transact-SQL 문자열과 별도로 매개 변수 값의 설정을 지원합니다.

    DECLARE @IntVariable INT
    DECLARE @SQLString NVARCHAR(500)
    DECLARE @ParmDefinition NVARCHAR(500)
    
    /* Build the SQL string once.*/
    SET @SQLString =
         N'SELECT * FROM pubs.dbo.employee WHERE job_lvl = @level'
    SET @ParmDefinition = N'@level tinyint'
    /* Execute the string with the first parameter value. */
    SET @IntVariable = 35
    EXECUTE sp_executesql @SQLString, @ParmDefinition,
                          @level = @IntVariable
    /* Execute the same string with the second parameter value. */
    SET @IntVariable = 32
    EXECUTE sp_executesql @SQLString, @ParmDefinition,
                          @level = @IntVariable
    

    sp_executesql에서 매개 변수를 대치할 수 있는 경우에는 EXECUTE문을 사용하여 문자열을 실행하는 데 있어서 다음과 같은 장점이 있습니다.

    • sp_executesql 문자열에 있는 Transact-SQL문의 실제 텍스트가 실행 사이에 변경되지 않으므로 쿼리 최적화 프로그램이 두 번째 실행의 Transact-SQL문과 첫번째 실행에 대해 생성된 실행 계획을 일치시킬 가능성이 있습니다. 따라서 SQL Server가 두 번째 문을 컴파일할 필요가 없습니다.

    • Transact-SQL 문자열이 단 한 번만 작성됩니다.

    • 정수 매개 변수는 자신의 기본 형식으로 지정됩니다. 유니코드를 캐스팅할 필요가 없습니다.
    사용 권한

    public 역할에 대한 기본 권한을 실행합니다.

    예제
    A. 단순 SELECT문 실행

    다음은 @level이라는 포함 매개 변수를 포함한 단순 SELECT 문을 작성하고 실행하는 예제입니다.

    execute sp_executesql 
              N'select * from pubs.dbo.employee where job_lvl = @level',
              N'@level tinyint',
              @level = 35
    
    B. 동적으로 작성된 문자열 실행

    다음은 sp_executesql을 사용하여 동적으로 작성된 문자열을 실행하는 예제입니다. 예로 든 저장 프로시저는 일 년 간의 판매 데이터를 파티션으로 분리하는데 사용되는 일련의 테이블에 데이터를 삽입하는 데 사용됩니다. 일 년의 각 달에는 다음과 같은 형식의 테이블이 한 개씩 있습니다.

    CREATE TABLE May1998Sales
        (OrderID      INT      PRIMARY KEY,
        CustomerID      INT      NOT NULL,
        OrderDate      DATETIME   NULL
            CHECK (DATEPART(yy, OrderDate) = 1998),
        OrderMonth      INT
            CHECK (OrderMonth = 5),
        DeliveryDate   DATETIME   NULL,
            CHECK (DATEPART(mm, OrderDate) = OrderMonth)
        )
    

    파티션으로 분리된 테이블에서 데이터를 검색하는 것에 관한 자세한 내용은 파티션으로 분리된 데이터로 보기 사용을 참조하십시오.

    각 테이블의 이름은 달 이름의 첫 세 글자, 연도를 표시하는 네 자리 수 및 상수인 Sales로 구성됩니다. 이름은 주문 날짜에서 동적으로 작성될 수 있습니다.

    /* Get the first three characters of the month name. */
    SUBSTRING( DATENAME(mm, @PrmOrderDate), 1, 3) +
    /* Concatenate the four-digit year; cast as character. */
    CAST(DATEPART(yy, @PrmOrderDate) AS CHAR(4) ) +
    /* Concatenate the constant 'Sales'. */
    'Sales'
    

    이러한 견본 저장 프로시저는 동적으로 INSERT 문을 작성하고 실행하여 새 주문을 올바른 테이블에 삽입합니다. 또한 반드시 데이터를 포함해야 하는 테이블의 이름을 작성하는 데 주문 날짜를 사용하며, 작성된 이름은 INSERT 문에 병합됩니다. 이는 sp_executesql의 단순한 예입니다. 여기에는 오류 확인 및 테이블 간에 주문 번호가 중복되지 않았는지를 확인하는 등의 업무 규칙 확인이 포함되지 않습니다.

    CREATE PROCEDURE InsertSales @PrmOrderID INT, @PrmCustomerID INT,
                     @PrmOrderDate DATETIME, @PrmDeliveryDate DATETIME
    AS
    DECLARE @InsertString NVARCHAR(500)
    DECLARE @OrderMonth INT
    
    -- Build the INSERT statement.
    SET @InsertString = 'INSERT INTO ' +
           /* Build the name of the table. */
           SUBSTRING( DATENAME(mm, @PrmOrderDate), 1, 3) +
           CAST(DATEPART(yy, @PrmOrderDate) AS CHAR(4) ) +
           'Sales' +
           /* Build a VALUES clause. */
           ' VALUES (@InsOrderID, @InsCustID, @InsOrdDate,' +
           ' @InsOrdMonth, @InsDelDate)'
    
    /* Set the value to use for the order month because
       functions are not allowed in the sp_executesql parameter
       list. */
    SET @OrderMonth = DATEPART(mm, @PrmOrderDate)
    
    EXEC sp_executesql @InsertString,
         N'@InsOrderID INT, @InsCustID INT, @InsOrdDate DATETIME,
           @InsOrdMonth INT, @InsDelDate DATETIME',
         @PrmOrderID, @PrmCustomerID, @PrmOrderDate,
         @OrderMonth, @PrmDeliveryDate
    
    GO
    

    이 프로시저에서는 EXECUTE를 실행하는 것보다 sp_executesql을 실행하여 문자열을 실행하는 것이 더 효과적입니다. sp_executesql을 실행하는 경우, 각 개월별 테이블에 대해 한 개씩, 12 버전의 INSERT 문자열만이 생성됩니다. EXECUTE의 경우, 매개 변수 값이 다르므로 각 INSERT 문자열이 고유합니다. 두 가지 방법 모두 같은 수의 일괄 처리를 생성하지만 sp_executesql에 의해 생성된 INSERT 문자열의 유사성으로 인해 쿼리 최적화 프로그램이 실행 계획을 다시 사용할 확률이 높습니다.

    2009/04/21 10:43 2009/04/21 10:43
    먼저 아래와 같이 c#을 작성하여 test.cs로 저장합니다.

    public class testvbscriptcallabledll
    {
    	public string testmethod()
    	{
    		return "this is a string returned from .net compiled library";
    	}
    }
    
    

    콘솔에서 해당 경로로 이동 아래와 같이 컴파일 합니다.
    csc /nologo /t:library test.cs
    그리고 어셈블리에 등록 합니다.
    regasm /nologo /codebase test.dll

    그리고 아래와 같이 test.vbs를 작성합니다.

    
    Dim f
    
    Set f = CreateObject("testvbscriptcallabledll")
    msgbox f.testmethod
    Set f = Nothing
    
    
    


    test.vbs를 실행합니다. :)
    2009/04/21 10:40 2009/04/21 10:40
    출처: http://blog.w2.ro/zend로 인코딩(?)되어 있는 프로그램을 소스로 바꿔주는 프로그램입니다.

    저는 해봤는데 잘 됩니다.

    남의 창작물을 도둑질하는 용도로만 사용 안되길 바랄 뿐입니다.

    좋은 용도로 사용되길....
    2009/04/21 10:38 2009/04/21 10:38

    많은 분들이 PHP로파일업로드를 처리하면서 일정용량이나 대용량 파일의 업로드에 문제가 있는것 같습니다.
    저도 같은 문제로 고민하던 중 외부의 도움을 얻어 해결했기에 조금이나마 도움이 되고자 적어 봅니다.

    우선 저의 경우

    정상적으로 레드헷 9.0과 PHP 4.2 버전을 설치하였고 파일 업로드 코드도 정상적으로 코딩하였습니다.
    그런데 500k 이상의 파일에서 업로드가 되지 않는 현상이 일어났습니다.
    500k이하의 파일은 정상적으로 올라가나 그 이상크기의 파일은 반응이 없거나 페이지를 찾을 수 없는 에러가 나거나 하였습니다.

    누구나 그렇듯이 저도 php.ini의 파일 업로드 용량 설정 문제인것으로 생각하고 php.ini 파일에서파일업로드용량을 20메가로 늘려 주었습니다.
    참고로 php.ini파일에서 용량과 관련하여 설정해 주어야 하는 부분은 5부분입니다.

    file_uploads = On
    파일 업로드를 허용할지 설정하는 부분으로 당연히 ON으로 되어 있어야 합니다.

    upload_max_filesize = 20M
    최대 업로드 파일 사이즈입니다. 원하시는 용량만큼 설정하시면 됩니다.

    post_max_size = 20M
    Post방식으로 넘겨질 최대 데이터 사이즈입니다.

    max_execution_time = 300
    최대 실행시간입니다. 대용량 파일일수록 시간이 많이 걸리니 당연 실행시간을 늘려 주어야 합니다. 0으로 세팅하면 무한대이니 알아서 적당히 세팅해 주십시요

    memory_limit = 20M
    잘 모르겠는데 여하튼 이부분도 같이 세팅되어야 합니다.


    upload_max_filesize, post_max_size, memory_limit는 보통 같은 값으로 세팅을 하는데여. PHP메뉴얼에서 크기를 memory_limit > post_max_size > upload_man_filesize 로 해야 한다고 보았던것 같습니다.
    즉 Memory_limit설정값이 post_max_size보다 커야하고 post_max_size는 upload_man_filesize보다 커야한다고여...
    그런데 걍 같은 값으로 설정해도 문제가 없는듯 합니다.

    이렇게 설정하셨으면 아파치를 재시동 합니다.

    /etc/rc.d/init.d/httpd restart

    재시동 후 PHP설정이 제대로 적용되었는지 phpinfo()로 확인해 봅니다.
    그러면 위 설정값들이 적용된것을 확인할 수 있습니다.

    그리고파일업로드를 다시 테스트 해 보십시요..
    정상적으로 파일이 올라가나요?
    된다면 좋겠지만 분명 않되시는 분들도 계실것입니다.
    제가 그랬으니까요....

    자 이제부터 대략 무지난감하죠...
    우선파일업로드중 에러가 발생한 것이니 로그를 아파치의 에러로그를 살펴봐야 겠습니다.

    vi /var/log/httpd/error_log

    그럼 에러로그들이 쫙 있는데여....
    다음과 같은 문장을 볼 수 있습니다.

    [Thu Aug 12 17:56:31 2004] [error] [client xxx.xxx.xxx.xxx] Requested content-length of 818331 is larger than the configured limit of 524288, referer: http://xxx.xxx.xxx.xxx/form.htm

    음 짧은 영어실력이지만 대충 읽어보면 다음과 같죠

    8월 12일날 에러가 났는데 누구냐면 xxx.xxx.xxx.xxx야... 에러가 뭐라고 왔냐면 올리는 파일이 818331바이트인데 이게 524288 값으로 제한되어 있는 설정값보다 더 크다는 거지..

    헉~~!

    구럼 도대체 어느넘이 php.ini와 상관없이파일업로드를 방해하는 것인지가...?
    찾아보았더니..

    /etc/httpd/conf.d/php.conf

    이넘을 열어보면

    LimitRequestBody

    라는 설정값이 있습니다.이넘의 초기값이 524288 이군여.. 이넘의 값을 대략 20메가 20000000 정도로 해보져....
    당근 아파치 재시작...

    그리고 파일을 업로드 해보면... ㅋ~~ 감동 .. 정상적으로 올라가는군여....
    ㅋㅋㅋ
    이상이 제가 해결한 방법이었습니다.
    혹시파일업로드하시면서 도저히 일정용량 않된다 하시는분 저처럼 해 보시구여...
    혹시라도 제 내용이 있으신 분들도 리플 달아주시면 아는한 최대로 수정하겠습니다.

    참고 : 시스템 설치 방법에 따라 위에서 설정한 php.conf 파일이 없는 경우도 있습니다.
    제가 노트북에 설치한 리눅스 시스템엔 php.conf 파일을 찾을 수 없었습니다.
    그런데 이넘은파일업로드가 문제가 없어서 걍 잘 쓰고 있습니다.

    2009/04/20 20:24 2009/04/20 20:24
    CS4 통합 받아서 사용하던 중 씨디키가 막혀서 울고 있다가 찾았습니다~
     
    적용 방법

    C:\Windows\System32\drivers\etc 아래 hosts 파일을 열어서
    127.0.0.1 activate.adobe.com 추가해 주세요.

    2009/04/16 11:07 2009/04/16 11:07

    ============================================================================
    1. DBCC CHECKALLOC

    - 디스크 공간 할당 구조의 일관성을 검사
    ============================================================================

       DBCC CHECKALLOC
         ( '데이터베이스이름'
                 [ , NOINDEX -- 시스템 테이블이 아닌 테이블의 클러스터되지 않은 인덱스를 검사하지 않음
                    |
                     { -- 단일사용자모드에서만 사용가능
             REPAIR_ALLOW_DATA_LOSS  -- 일부데이터손실 될 수 있음
                         | REPAIR_FAST   -- 대충복구
                         | REPAIR_REBUILD   -- 모든복구작업수행 (인덱스다시생성)
                    } ]
        )     [ WITH { [ ALL_ERRORMSGS | NO_INFOMSGS ] -- 에러메시지 표시여부
                         [ , [ TABLOCK ] ]   -- 공유잠금 (여기서는 무시)
                         [ , [ ESTIMATEONLY ] ]   -- 명령의 실행에 필요한 tempdb 공간의 예상크기를 표시
                    }
            ]



    ============================================================================
    2. DBCC CHECKCATALOG

    - 시스템 테이블의 일관성과 시스템 테이블 간의 일관성을 검사
    ============================================================================

     DBCC CHECKCATALOG
          ( '데이터베이스이름'
         )    
     [ WITH NO_INFOMSGS ]  
     


    ============================================================================
    3. DBCC CHECKCONSTRAINTS

    - 지정한 테이블에서 특정 제약 조건이나 모든 제약조건의 무결성을 검사
    ============================================================================

     DBCC CHECKCONSTRAINTS
          [( '테이블이름' | '제약조건' )]
     [ WITH { ALL_ERRORMSGS | ALL_CONSTRAINTS } ]


    ============================================================================
    4. DBCC CHECKDB

    - 지정한 데이터베이스에서 모든 개체의 할당과 구조적 무결성을 검사
    - 데이터베이스안에 있는 모든 내용의 무결성을 검사
    - 가장 안정한 복구문
    - DBCC CHECKDB 문을 최근에 실행했다면 CHECKALLOC, CHECKTABLE 을 실행할 필요가 없다.
    - 병렬로 검사 수행 ( 추적 플래그 2528 을 쓰면 병렬검사를 해제할수 있다 )

    - 검사내용
     - 인덱스와 데이터 페이지가 제대로 연결되어있는가?
     - 인덱스 정렬순서가 제대로 인가?
     - 포인터가 일치하는가?
     - 각 페이지의 데이터가 적절한가?
     - 페이지 오프셋이 적절한가?
    ============================================================================

     DBCC CHECKDB
          ( '데이터베이스명'
                  [ , NOINDEX   -- 시스템 테이블이 아닌 테이블의 클러스터되지 않은 인덱스를 검사하지 않도록 지정합니다.
                     | { REPAIR_ALLOW_DATA_LOSS
                         | REPAIR_FAST
                         | REPAIR_REBUILD
                        } ]
         )    
     [
      WITH { [ ALL_ERRORMSGS ] -- 개체당 오류수를 무제한으로 표시
                         [ , [ NO_INFOMSGS ] ] -- 모든 정보 메시지와 사용한 공간보고서를 표시안함
                         [ , [ TABLOCK ] ]  -- 공유테이블 잠금
                         [ , [ ESTIMATEONLY ] ]  -- DBCC CHECKDB 실행에 필요한 tempdb 공간의 예상크기와 지정된 다른 옵션을 모두 표시
                        [ , [ PHYSICAL_ONLY ] ]  -- 검사를 제한 (페이지와 레코드헤더의 실제구조의 무결성, 페이지의 개체ID 와 인덱스 ID 간의 일관성 및 할당구조로 검사를 제한
                        }
            ]



    ============================================================================
    5. DBCC CHECKFILEGROUP

    - 지정한 파일 그룹에서 현재 데이터 베이스에 있는 모든 테이블의 할당과 구조적 무결성을 검사
    ============================================================================

     DBCC CHECKFILEGROUP
          ( [ { 'filegroup' | filegroup_id } ]
             [ , NOINDEX ]
         )    
     [
      WITH { [ ALL_ERRORMSGS | NO_INFOMSGS ]
                         [ , [ TABLOCK ] ]
                         [ , [ ESTIMATEONLY ] ]
                        }
            ]


    ============================================================================
    6. DBCC CHECKIDENT

    - 지정한 테이블의 현재 ID 값을 검사하고 필요하면 수정합니다.
    ============================================================================

     DBCC CHECKIDENT
          ( '테이블 이름'
              [ ,  { NORESEED
                          | { RESEED [ , new_reseed_value ] }
                 }
              ]
         )


    ============================================================================
    7. DBCC CHECKTABLE

    - 지정한 테이블이나 인덱스된 뷰에 대해 데이터, 인덱스, text, ntext, image 페이지의 무결성을 검사합니다.
    - 검사내용
     - 인덱스와 데이터 페이지가 제대로 연결되어 있는가?
     - 인덱스 정렬순서가 제대로 되어 있는가?
     - 포인터가 일치하는가?
     - 각 페이지의 데이터가 적절한가?
     - 페이지 오프셋이 적절한가?

    - 테이블 잠금을 얻지 못하여 데이터 변경은 허용되지만 메타데이터의 변경을 방지하는 스키마 잠금을 허용
    ============================================================================

     DBCC CHECKTABLE
          ( '테이블이름' | '뷰명'

              [ ,  NOINDEX
                  |  index_id   -- 인덱스 ID 번호
                  | {  
        REPAIR_ALLOW_DATA_LOSS
                      |  REPAIR_FAST
                      |  REPAIR_REBUILD
        }
             ]

         )    
     [ WITH {
      [  ALL_ERRORMSGS
          |  NO_INFOMSGS
      ]
                    [ , [ TABLOCK ] ]
                    [ , [ ESTIMATEONLY ] ]
                    [ , [ PHYSICAL_ONLY ] ]
                   }
            ]


    ============================================================================
    8. DBCC CLEANTABLE

    - 삭제된 가변길이 열과 텍스트 열의 공간을 다시 사용
    - ALTER TABLE DROP COLUMN 문을 사용하여 가변길이 열이나 text 열을 삭제한 후 공간을 반환하지만 고정길이 열이 삭제된 후에는 공간을 반환하지 않는다.

    ============================================================================

     DBCC CLEANTABLE
          ( { '데이터베이스이름' | 데이터베이스아이디 }
             , { '테이블이름' | 테이블아이디 | '뷰명' | 뷰아이디 }
             [ , batch_size ]  - 트랜잭션 당 처리되는 행 수 ( 값 지정 않으면 한 트랜잭션에서 전체테이블을 처리 )
         )



    ============================================================================
    9. DBCC DBREINDEX

    - 지정한 데이터베이스의 테이블에 대해 하나 이상의 인덱스를 다시 작성
    - 시스템 테이블에 대해 사용할 수 없습니다.
    ============================================================================

     DBCC DBREINDEX
         (    
      [  'database.owner.table_name'   
                   [ , index_name
        [ , fillfactor ]
       ]
             ]
         )    
     [ WITH NO_INFOMSGS ]


    ============================================================================
    10. DBCC DBREPAIR

    - 손상된 데이터베이스를 삭제합니다.
    - 손상된 데이터베이스를 삭제할 경우에는 DROP DATABASE 를 사용하는 것이 좋습니다.

    ============================================================================



    ============================================================================
    11. DBCC dllname(FREE)

    - 지정한 확장 저장 프로시저의 동적 연결 라이브러리를 메모리에서 언로드합니다.

    ============================================================================

     DBCC DLL이름 ( FREE )


    ============================================================================
    12. DBCC DROPCLEANBUFFERS

    - 버퍼 풀에서 빈 버퍼를 모두 제거

    ============================================================================
     
     DBCC DROPCLEANBUFFERS



    ============================================================================
    13. DBCC FREEPROCCACHE

    - 프로시저 캐시에서 모든 요소를 제거
    - 프로시저 캐시를 해제하면 임의 SQL 문이 캐시에서 다시 사용되지 않고 다시 컴파일됩니다.
    ============================================================================

     DBCC FREEPROCCACHE

    ============================================================================
    14. DBCC INDEXDEFRAG

    - 지정한 테이블이나 뷰의 클러스터된 인덱스와 보조 인덱스의 조각을 모음
    - 인덱스 스캔성능을 향상시키기 위해 페이지의 물리적 순서가 왼쪽에서 오른쪽으로 잎 노드의 논리적 순서와 일치하다고 인덱스 잎 수준의 조각을 모음
    ============================================================================

     DBCC INDEXDEFRAG
          (
      { 데이터베이스이름 | 데이터베이스아이디 | 0 }
         ,  { 테이블이름 | 테이블아이디 | '뷰명' | 뷰아이디 }
                ,  { 인덱스이름 | 인덱스아이디 }
         )   


    ============================================================================
    15. DBCC INPUTBUFFER

    - 클라이언트에서 MSSQL 로 보낸 최종 명령문을 표시
    - SP_WHO2 를 이용해서 spid 를 얻은후에 해당 spid 쿼리를 볼 수 있다.
    - EventType, Parameters, EventInfo
    ============================================================================

     DBCC INPUTBUFFER (spid)


    ============================================================================
    16. DBCC OPENTRAN

    - 지정한 데이터베이스에서 가장 오래된 활성 트랜잭션과 가장 오래된 분산 및 비분산 복제된 트랜잭션에 대한 정보를 표시
    ============================================================================

     DBCC OPENTRAN
         (     { '데이터베이스이름' | 데이터베이스아이디} )
            [ WITH TABLERESULTS
                 [ , NO_INFOMSGS ]
            ]


    ============================================================================
    17. DBCC OUTPUTBUFFER

    - 지정한 시스템 프로세스 ID 의 현재 출력버퍼를 16진수와 ASCII 형식으로 반환
    ============================================================================

     DBCC OUTPUTBUFFER ( spid )


    ============================================================================
    18. DBCC PINTABLE / DBCC UNPINTABLE (해제)

    - 테이블을 메모리에 고정 (플러시 하지 않음)
    - 정말 자주 쓰이는 테이블의 경우
    - 주의 : PINTABLE 은 성능을 향상시킬 수 있지만 주의해서 사용해야 합니다.
     커다란 테이블을 고정할 경우 많은 용량의 버퍼캐시를 사용하므로 다른 테이블에서 사용할 캐시가 부족하게 되어 성능저하가 발생 할 수 있음.

    - UNPINTABLE 로 해제
    ============================================================================

     DBCC PINTABLE ( database_id , table_id )
     DBCC UNPINTABLE ( database_id , table_id )



    ============================================================================
    19. DBCC PROCCACHE

    - 프로시저 캐시에 대한 정보를 테이블 형식으로 반환
    - SQL Server 성능 모니터는 프로시저 캐시에 대한 정보를 얻기위해 DBCC PROCCACHE 를 사용함
    - 결과 집합

     num proc buffs    프로시저 캐시에 저장할 수 있는 저장 프로시저의 개수
     num proc buffs used   저장 프로시저를 보관하는 캐시 슬롯의 개수
     num proc buffs active   현재 실행 중인 저장 프로시저를 보관하는 캐시 슬롯의 개수
     proc cache size   프로시저 캐시의 전체 크기
     proc cache used   저장 프로시저를 보관하는 프로시저 캐시의 용량
     proc cache active   현재 실행 중인 저장 프로시저를 보관하는 프로시저 캐시의 용량

    ============================================================================

     DBCC PROCCACHE


    ============================================================================
    20. DBCC SHOW_STATISTICS

    - 지정한 테이블에서 특정 대상의 현재 배포 통계를 표시
    - 결과집합

     Updated   통계가 마지막으로 업데이트된 날짜와 시간
     Rows    테이블의 행 수
     Rows Sampled   통계 정보를 위해 샘플링된 행 수
     Steps    배포 단계 수
     Density   첫 번째 인덱스 열 접두사의 선택도(자주 사용하지 않음)
     Average key length  첫 번째 인덱스 열 접두사의 평균 길이
     All density   인덱스 열 접두사 집합의 선택도(자주 사용함)
     Average length   인덱스 열 접두사 집합의 평균 길이
     Columns   전체 밀도 및 평균 길이가 표시되는 인덱스 열 접두사의 이름
     RANGE_HI_KEY   히스토그램 단계의 상위 바운드 값
     RANGE_ROWS   상위 바운드를 제외한 히스토그램 단계에 해당하는 예제의 행 수
     EQ_ROWS   히스토그램 단계의 상위 바운드 값과 동일한 예제의 행 수
     DISTINCT_RANGE_ROWS  상위 바운드를 제외한 히스토그램 단계에 있는 고유한 값 수
     AVG_RANGE_ROWS   상위 바운드(DISTINCT_RANGE_ROWS에 대해 RANGE_ROWS / DISTINCT_RANGE_ROWS > 0)를 제외한, 히스토그램 단계에 있는 중복 값의 평균 수
     
    ============================================================================
     
     DBCC SHOW_STATISTICS ( table , target )



    ============================================================================
    21. DBCC SHOWCONTIG

    - 지정한 테이블의 데이터와 인덱스에 대한 조각화 정보를 표시
    - 인덱스가 심하게 조각난 경우에 조각난 정보를 감소시키는 방법
     - 클러스터된 인덱스를 삭제한 후 다시 만듬
     - DBCC INDEXDEFRAG | DBCC DBREINDEX 로 인덱스 다시 구성
    - 결과집합

     Pages Scanned   테이블이나 인덱스의 페이지 수입니다.

     Extents Scanned  테이블이나 인덱스의 익스텐트 수입니다.

     Extent Switches  DBCC 문이 테이블이나 인덱스 페이지를 스캔하는 동안의 익스텐트 전환 횟수입니다.

     Avg. Pages per Extent  페이지 체인에서 익스텐트 당 페이지 수입니다.

     Scan Density [Best Count: Actual Count]
        Best count는 모든 데이터가 인접하여 있는 경우 이상적인 익스텐트 변경 횟수이고  
        Actual count는 실제 익스텐트 변경 횟수입니다. 스캔 밀도가 100이면 모든 데이터가 인접해 있고 100보다 작으면 일부 데이터가 조각화된 것입니다. 스캔 밀도는 % 단위입니다.

     Logical Scan Fragmentation
        인덱스의 잎 페이지 스캔에서 반환된 순서가 바뀐 페이지의 비율입니다. 이 값은 힙이나 텍스트 인덱스와는 관계가 없습니다.
        (순서가 바뀐 페이지란 IAM에 지정된 다음 페이지가 잎 페이지의 다음 페이지 포인터에서 가리키는 페이지와 다른 경우입니다.)

     Extent Scan Fragmentation
        인덱스의 잎 페이지 스캔에서 순서가 바뀐 익스텐트의 비율입니다. 이 값은 힙과는 관계가 없습니다.     (순서가 바뀐 익스텐트란 인덱스의 현재 페이지가 포함된 익스텐트가 물리적으로 이전 페이지가 포함된 익스텐트의 다음 익스텐트가 아닌 경우입니다. )

     Avg. Bytes free per page
        스캔된 페이지에서 사용 가능한 평균 바이트 수입니다. 이 값이 클수록 페이지의 채우기 비율이 낮으므로 값이 작을수록 좋습니다. 이 값은 행 크기에 따라 달라지며 행 크기가 크면 값이 커집니다.

     Avg. Page density (full) 평균 페이지 밀도입니다(단위: %). 이것은 행 크기를 고려한 값이므로 페이지의 채우기 비율을 더욱 정확하게 알 수 있습니다. 값이 클수록 좋습니다.

    ============================================================================

     DBCC SHOWCONTIG
         [    
      ( { table_name | table_id | view_name | view_id }
                  [ , index_name | index_id ]
            )
         ]
          [ WITH {  ALL_INDEXES
                     |  FAST    -- 인덱스의 잎 또는 데이터 수준 페이지를 읽지 않음 (빠름)
       [ , ALL_INDEXES ]
                     |  TABLERESULTS   --결과를 추가 정보와 함께 행 집합으로 표시
       [ , { ALL_INDEXES } ]
                     [ , { FAST | ALL_LEVELS } ]
                }
         ]




    ============================================================================
    22. DBCC SHRINKDATABASE

    - 지정한 데이터베이스에서 데이터 파일의 크기를 축소시킴
    - 파일 단위로 데이터 파일을 축소
    - 데이터 파일과 로그파일의 대상 크기는 파일의 최소크기보다 작을수 없음
    - NOTRUNCATE / TRUNCATEOLNY 는 데이터파일에는 적용되나 로그파일에는 적용되지 않는다.
    ============================================================================

     DBCC SHRINKDATABASE
          ( 데이터베이스이름 [ , 데이터베이스에 남겨둘 여유공간비율 ]

              [ , {   NOTRUNCATE  - 해제된 파일 공간을 데이터베이스 파일에서 보유
       |  TRUNCATEONLY  - 해제된 파일 공간을 운영체제에 반환
          }
      ]
         )



    ============================================================================
    23. DBCC SHRINKFILE

    - 관련 데이터베이스에 대해 지정한 데이터 파일이나 로그파일의 크기를 축소 시킴
    ============================================================================

     DBCC SHRINKFILE
          (  
      {
      파일이름 | 파일아이디 }
               { [ , 변경할크기 ]
                   | [ ,
        {
         EMPTYFILE  -- 지정한 파일의 모든 데이터를 동일한 파일 그룹의 다른파일로 마이그레이션, 더 이상 데이터를 저장할 수 없음.
        |  NOTRUNCATE  -- 해제된 파일 공간을 파일에 보유
        |  TRUNCATEONLY  -- 해제된 파일 공간을 운영체제에 반환
        }
         ]
             }
         )



    ============================================================================
    24. DBCC SQLPERF

    - 모든 데이터베이스에서 트랜잭션 로그공간의 사용에 관한 통계를 제공


    - DBCC SQLPERF(LOGSPACE)
     
     결과 집합
     
     Database Name   로그 통계가 표시될 데이터베이스의 이름입니다.
     Log Size(MB)   로그에 사용 가능한 실제 공간의 크기입니다. Microsoft�� SQL Server™는 내부 헤더 정보를 위해 적은 양의 디스크 공간을 예약하므로 이것은 로그 공간에 원래 할당된 크기보다 작습니다.
     Log Space Used (%)  로그 파일에서 현재 트랜잭션 로그 정보가 차지하는 비율입니다.
     Status    로그 파일의 상태입니다(항상 0임).


    - DBCC SQLPERF(UMSSTATS) : This Option returns data about SQL Server thread management.

     결과 집합

     Statistic                        Value
     -------------------------------- ------------------------
     Scheduler ID                     0.0  
     num users                        18.0  -- This is the number of SQL Server threads currently in the scheduler.
     num runnable                     0.0  -- This is the number of actual SQL Server threads that are runnable.
     num workers                      13.0  -- This is the actual number of worker there are to process threads. (This is the size of the thread pool.)
     idle workers                     11.0  -- The number of workers that are currently idle.
     work queued                      0.0  
     cntxt switches                   2.2994396E+7 -- The number of context switches between runnable threads.
     cntxt switches(idle)             1.7793976E+7 -- The number of context switches to the idle thread.
     Scheduler ID                     1.0
     num users                        15.0
     num runnable                     0.0
     num workers                      13.0
     idle workers                     10.0
     work queued                      0.0
     cntxt switches                   2.4836728E+7
     cntxt switches(idle)             1.6275707E+7
     Scheduler ID                     2.0
     num users                        17.0
     num runnable                     0.0
     num workers                      12.0
     idle workers                     11.0
     work queued                      0.0
     cntxt switches                   1.1331447E+7
     cntxt switches(idle)             1.6273097E+7
     Scheduler ID                     3.0
     num users                        16.0
     num runnable                     0.0
     num workers                      12.0
     idle workers                     11.0
     work queued                      0.0
     cntxt switches                   1.1110251E+7
     cntxt switches(idle)             1.624729E+7
     Scheduler Switches               0.0
     Total Work                       3.1632352E+7



    - DBCC SQLPERF(WAITSTATS) : This Option returns data about wait types for SQL Server  resources.

    - DBCC SQLPERF(IOSTATS)  : This Option returns data about outstanding SQL Server  reads and writers.

    - DBCC SQLPERF(RASTATS)  : SQL Server read-ahead activity

    - DBCC SQLPERF(THREADS)  : I/O, CPU, and memory usage per SQL Server Thread.



    ============================================================================

     DBCC SQLPERF ( LOGSPACE )


    ============================================================================
    25. DBCC TRACEON / TRACEOFF
     
    - 지정한 추적플래그를 설정 / 해제

    ============================================================================

     DBCC TRACEON ( trace# [ ,...n ] )
     DBCC TRACEOFF ( trace# [ ,...n ] )


    ============================================================================
    26. DBCC TRACESTATUS
     
    - 추적 플래그의 상태를 표시
    - DBCC TRACESTATUS(-1) 로 하면 모든 추적 플래그의 상태를 표시
    ============================================================================

     DBCC TRACESTATUS ( trace# [ ,...n ] )



    ============================================================================
    27. DBCC UPDATEUSAGE
     
    - sp_spaceused 시스템 저장프로시저에서 잘못된 공간 사용정보가 보고되도록 하는 sysindexes 테이블의 부정확성을 보고하고 수정
    - 테이블과 클러스터된 인덱스에 대해 sysindexes 테이블의 rows, used, reserved, dpages 열을 수정함
    ============================================================================

     DBCC UPDATEUSAGE
         (     { 'database_name' | 0 }
              [ , { 'table_name' | 'view_name' }
              [ , { index_id | 'index_name' } ] ]
         )
          [
      WITH    
       [ COUNT_ROWS ]   -- sysindexes 의 rows 열이 테이블이나 뷰의 현재 행 개수로 업데이트되도록 지정함. 단 indid 가 0 또는 1 인 sysindexes 행에만 작용 (커다란테이블과 인덱스된 뷰의 성능에만 영향을 줌)
       [ , NO_INFOMSGS ]  -- 모든 정보 메시지를 표시하지 않음
            ]



    ============================================================================
    28. DBCC USEROPTIONS
     
    - 현재 연결에 활성화된 SET 옵션을 반환함
    ============================================================================

     DBCC USEROPTIONS


    ============================================================================
    29. DBCC CACHESTATS
     
    - 현재 버퍼캐시안에 있는 오프젝트에 대한 정보를 보여줌
     - hit rates
     - compiled objects and plans

    - 결과집합
     - Hit Ratio : Displays the percentage of time that this particular object was found in SQL Server's cache.
         The bigger this number, the better

     - Object Count  : Displays the total number of objects of the specified type that are cached.

     - Avg. Cost : A value used by SQL Server that measures how long it takes to compile a plan, along with the amount of memory needed by the plan. This value is used by SQL Server to determine if the plan should be cached or not.

     - Avg. Pages  : Measures the total number of 8K pages used, on average, for cached objects.

     - LW Object Count, LW Avg Cost, WL Avg Stay, LW Ave Use :
       All these columns indicate how many of the specified objects have been removed from the cache by the Lazy Writer.
       The lower the figure, the better.


    ============================================================================

     DBCC CACHESTATS



    ============================================================================
    30. DBCC ERRORLOG

    - 현재의 에러로그를 TRUNCATE
    - sp_cycle_errorlog 도 같은 역할
    ============================================================================

     DBCC ERRORLOG


    ============================================================================
    31. DBCC FLUSHPROCINDB

    - 지정한 데이터베이스에 있는 스토어드 프로시저 캐시를 지운다. (전체가아님)
    ============================================================================
     
     DBCC FLUSHPROCINDB (데이터베이스이름)


    ============================================================================
    32. DBCC MEMORYSTATUS

    - 버퍼 캐시안에 있는 메모리 상태를 보여줌
    -
     Buffer Distribution
     Buffer Counts
     Procedure Cache
     Dynamic Memory Manager
     Global Memory Objects
     Query Memory Objects
     Optimization Queue

    ============================================================================
     
     DBCC MEMORYSTATUS


    ============================================================================
    33. DBCC PAGE

    - SQL Server 안에 저장된 데이터 페이지의 컨텐츠를 볼수 있는 명령
    - View the data page structure

    ============================================================================
     
     DBCC PAGE (
       {dbid|dbname}
      ,  pagenum   - 페이지넘버
      [, print option ]  - 페이지 헤더 정보를 출력하는 옵션
           0 : This option causes DBCC PAGE to print out only the page header information. (default)
           1 : page header information, each row of information from the page, and then page's offset table.
           2 : the same as option 1, except a single block of information (rather then separating the individual rows)

      [, cache ]  - 0 : 디스크로부터 페이지 번호를 반환
            1 : 캐시로 부터 페이지 번호를 반환 (default)

      [, logical ]  - 0 : virtual page number
            1 : logical page number
        )



    ============================================================================
    34. DBCC SQLMGRSTATS

    - ad-hoc , prepared Transact-SQL 구문이 어떻게 캐싱이 되는 지를 알수 있도록 함
    - 결과집합
     Memory Used (8k Pages) - 메모리 페이지의 사용량
     Number CSql Objects - 캐시된 전체 수
     Number False Hits - Hit 실패수 (적을수록 좋다)
    ============================================================================
     
     DBCC FLUSHPROCINDB (데이터베이스이름)


    ============================================================================
    35. DBCC BUFFER

    - This Command can be used to display buffer headers and pages from the buffer cache.

    - ex )
     DBCC TRACEON (3604)
     DBCC BUFFER(master, 'sysobjects')
    ============================================================================
     
     DBCC BUFFER ( [dbid | dbname]
       [, objid | objname ]
       [, nbufs]  -- number of buffers to examine
       [, printopt ]
        -- 0 : print out only the buffer header and page header (default)
        -- 1 : print out each row separately and the offset table
        -- 2 : print out each row as a whole and the offset table
          )



    ============================================================================
    36. DBCC BYTES

    - This command can be used to dump out bytes from a specific address.

    - ex )
     DBCC TRACEON (3604)
     DBCC BYTES (10000000, 100)
    ============================================================================

     DBCC BYTES (startaddress, length)


    ============================================================================
    37. DBCC DBINFO

    - Displays DBINFO structure form the specified database.

    - ex )
     DBCC TRACEON (3604)
     DBCC DBINFO(master)
    ============================================================================

     DBCC DBINFO (dbname)


    ============================================================================
    38. DBCC DBTABLE

    - This command displays the contents of then DBTABLE structure.
    - This parameter keeps track of how many users are in the database.

    - ex )
     DBCC TRACEON (3604)
     DBCC DBTABLE (master)
    ============================================================================

     DBCC DBTABLE ( [ dbid | dbname ] )


    ============================================================================
    39. DBCC DES

    - Prints the contents of the specified DES(descriptor).

    - ex )
     DBCC TRACEON (3604)
     DBCC DES
    ============================================================================

     DBCC DES


    ============================================================================
    40. DBCC IND

    - Shows all pages in use by indexes of the specified table.

    - ex )
     DBCC TRACEON (3604)
     DBCC IND (master, sysobjects, 0)
    ============================================================================

     DBCC IND ( [dbid | dbname] , [objid | objname], printopt )


    ============================================================================
    41. DBCC LOG

    - This command is used to view the transaction log for the specified database.

    - ex )
     DBCC TRACEON (3604)
     DBCC LOG (master)
    ============================================================================

     DBCC LOG (
       [ dbid | dbname ]
       [, type ]  -- 0 : minimum infomation (operation, context, transaction id)
          -- 1 : more information ( plus flags, tags, row length, description )
          -- 2 : very detailed infomation (plus object name, index name, page id, slot id)
          -- 3 : full information about each operation
          -- 4 : full information about each operation plus hexadecimal dump of then current transaction log's row
          -- -1 : full information about each operaion plus hexadecimal dump of then current transaction log's row, plus Checkpoint Begin, DB version, Max XDESID
       )    


    ============================================================================
    42. DBCC PROCBUF

    - This command displays procedure buffer headers and stored procedure headers from the procedure cache.

    - ex )
     DBCC TRACEON (3604)
     DBCC PROCBUF (master, 'sp_help', 1, 0)
    ============================================================================

     DBCC PROCBUF (
        [ dbid | dbname ]
       , [ objid | objname ]
       , nbufs
       , printopt -- 0 : only the proc buff and proc header
          -- 1 : proc buff, proc header, and contents of buffer.
           )


    ============================================================================
    43. DBCC PRTIPAGE

    - This command prints the page number pointed to by each row on the specified index page.

    - ex )
     DBCC TRACEON (3604)

     DECLARE @dbid  int
     , @objectid int
     select @dbid = DB_ID('master')
     select @objectid = object_id('sysobjects')

     DBCC PRTIPAGE (@dbid, @objectid, 1, 0)
    ============================================================================

     DBCC PRTIPAGE ( dbid, objid, indexid, indexpage )


    ============================================================================
    44. DBCC PSS

    - This command shows info about processes currently connected to the server.

    - ex )
     DBCC TRACEON (3604)
     DBCC PSS
    ============================================================================

     DBCC PSS (
       suid
      , spid
      , printopt -- 0 : standard output
         -- 1 : all open DES's and current sequence tree
       )


    ============================================================================
    45. DBCC RESOURCE

    - This command shows the server's level RESOURCE, PERFMON, and DS_CONFIG information.
     RESOURCE - shows addresses of various data structures used by the server.
     PERFMON  - structure contains master..spt_monitor field info.
     DS_CONFIG - structure contains master..syscurconfigs field information.

    - ex )
     DBCC TRACEON (3604)
     DBCC RESOURCE
    ============================================================================

     DBCC RESOURCE


    ============================================================================
    46. DBCC TAB

    - view the data pages structure (in comparison with DBCC PAGE, this command will return information about all data pages for viewed table, not only for particular number)

    - ex )
     DBCC TRACEON (3604)

     DECLARE @dbid  int
     , @objectid int
     select @dbid = DB_ID('master')
     select @objectid = OBJECT_ID('sysdatabases')

     DBCC TAB (@dbid, @objectid)
    ============================================================================

     DBCC TAB(dbid, objid)

    2009/04/16 00:18 2009/04/16 00:18

    Prototype과 jQuery.. 아직도 어떤게 더 많이 사용되고 있는지는 잘 모릅니다. 하지만 개인적인 기분상 예전엔 Prototype을 많이 썼고 유명했는데 요즘은 jQuery가 더 많이 쓰이는 것 같은 느낌입니다.

    개인적으로 jQuery를 조금씩 끄적거려 보고 있는 편이기도 하구요.

    http://www.jquery.com

    jQuery 공식 홈페이지 입니다. 현재 버전은 1.3.2 군요.

    jQuery나 Prototype을 사용하면 JavaScript 개발이 더욱 편리해 집니다.

    document.getElementById(‘test’) 같은 긴 함수 대신 $(‘test’) 를 사용할 수 있게 되는 것이죠. 그 외에도 Ajax관련 함수를 간편하게 사용 가능하며 브라우저 호환성 코드도 자체 지원하고 추가적인 UI효과를 위한 플러그인 라이브러리들도 많이 지원됩니다.

    http://malsup.com/jquery/cycle/

    이 링크를 한번 참조해 보시기 바랍니다. 좀더 액티브한 홈페이지를 만드는데 도움이 될 것입니다 ^^

    이런걸 직접 구현하려고 하면 재미야 있을 수 있지만 시간이 오래 걸리겠죠? ^^;

    2009/04/16 00:14 2009/04/16 00:14

    미래의 웹은 시맨틱웹이며, 웹2.0은 시맨틱웹을 경제적 관점에서 본 말이다.

    시맨틱웹이 보급되려는 시점에 웹2.0이라는 말이 나와 혼란을 주고 있다. 결론부터 내리자면 W3C나 팀 버너스 리가 제시하고 있는 차세대웹(NGWeb = Next Generation Web)은 1998년부터 확정되어 전개되고 있는 시맨틱웹 이다.

    웹2.0(Web 2.0)은 초창기 웹을 1.0이라 생각하고 다음 세대 웹을 2.0으로 구분한 것인데, 이 낱말은 경제적 관점에서 만들어졌다. 시맨틱웹이 RSS 등을 통해 점차 구현되기 시작하자 오라일리(O'Reilly Media, www.oreilly.com)는 2004년 10월 5일부터 일주일 동안 미국 샌프란시스코에서 '웹2.0컨퍼런스(www.web2con.com)'를 개최한다. 이때부터 퍼진 웹2.0 용어는 시맨틱웹의 다른 낱말로 이해되고 있다.

    기본적으로 웹2.0과 시맨틱웹은 목적지가 거의 동일하다. 다만 시맨틱웹이 목적지를 향한 기술에 관심을 두고 있다면 웹2.0은 시맨틱웹의 기술을 어떻게 응용하여 경제와 인간생활에 적용시킬 것인가에 관심을 두고 있다는 정도의 차이가 있다

    정리하자면 차세대 웹이라는 의미로 '웹2.0'을 사용하는 것은 큰 무리가 없으나 컴퓨터끼리 대화하고 자동화된 지능형 웹을 뜻할 때는 '시맨틱웹'으로 표현하는 것이 좀더 정확한 사용법이 될 것이다.


    시맨틱웹은 자동화처리를 위해 숨은자료를 적극 활용하고 있다.

    기계끼리 일을 처리하려면 기계끼리 서로 대화를 나누고 대화 내용을 이해할 수 있어야 한다. 이를 위해선 컴퓨터가 이해할 수 있는 언어로 웹을 구성해야 한다. RDF, 온톨로지(Ontology, 존재론), OWL(Ontology Web Language, 존재론 웹언어) 등은 이를 위해 논의되고 있는 기술이다. 현재 시맨틱웹은 W3C를 중심으로 숨은자료(meta data, 메타데이터)를 통해 정보의 의미를 이해하고 처리하도록 하는 자원 설명 기술과 지식 설명 기술이 결합된 연구방향이 한 줄기를 이루고 있다. W3C는 RDF 기반의 온톨로지(Ontology) 기술에 관심을 가지고 있다. 다른 한 줄기는 ISO를 중심으로 XTM 언어를 이용한 정보와 지식의 분산 처리, 통합 관리 등에 중점을 두는 방향이다. ISO 쪽은 토픽맵(Topic Maps) 기술에 중점을 두고 있다. 토픽맵은 ISO/IEC 13250 표준으로 XML 기반의 XTM(XML Topic Maps)이라는 언어를 사용해 정보와 지식의 분산 관리를 지원한다. 이 중에서 현재 가장 활발하게 논의되고 있고 실제로 사용하고 있는 기술은 숨은자료(메타데이터)를 이용한 자동화처리 부분이다.

    빠르고 강력하며 확장성이 좋은 Ajax

    HTML만으로 구현하기 어려운 복잡하고 정교한 작업을 구현해줌으로써 좀더 윤택한 사이트를 꾸며주는 인터넷 기술을 RIA(Rich Internet Application)라고 한다. 가장 대중적인 윤택인터넷응용(RIA) 기술로 매크로미디어사의 플래시와 마이크로소프트의 액티브엑스, 자바애플릿 기술을 들 수 있다. 플렉스(Flex), 위젯(Widget), 대시보드(Dash Board)를 비롯한 불여우(Firefox)의 확장도 RIA 기술로 분류할 수 있다. 그런데 구글이 Ajax를 활용하면서 빠른 속도로 Ajax 기술이 전파됨에 따라 기존 RIA 개발사의 영향력이 약해지고 있다. 대신 XML과 자바스크립트를 활용한 기술이 큰 흐름을 형성하며 떠오르고 있다. Ajax와 같은 기술은 빠른 속도와 강력한 기능 외에도 표준과 개방성, 확장성이 좋다는 것이 큰 장점이다. XML 자료를 주고받기 때문에 자료 관리가 쉬워지고 자동화가 쉽다는 점도 장점이다.

    액티브엑스는 강력하지만 윈도와 익스플로러에서만 동작하는 폐쇄성 문제가 있으며, 플래시는 덩치가 크고 느리며 무겁다. 자바애플릿은 자바가상머신을 설치해야 하는 문제가 있다. 이들 기술로 웹표준을 준수하거나 다양한 기계, 다양한 브라우저와 호환성을 갖추기는 쉽지 않다. 반면 XML을 이용하는 Ajax는 기기나 브라우저에 구애받지 않으며 웹표준을 준수하기 쉽다. 호환성, 확장성도 좋다.


    시맨틱 웹 기술은 사람의 머리 속에 있는 언어에 대한 이해를 컴퓨터 언어로 표현하고 이것을 컴퓨터가 사용할 수 있게 만드는 것인데, 특별한 분산환경을 갖춘 웹에 구현하자는 것이다. 이 것은 기계가 정보검색과 같은 사람의 요구를 더 잘 이해하고 적절하게 반응하기 위해서이다. 사람과 기계 사이에 진정한 커뮤니케이션이 가능하기 위해서는 사람이 이해하는 수준으로 기계도 언어를 이해할 수 있어야 한다. 사람들이 언어를 이해하는 방식을 보통 개념화라고 하는데, 즉 사람들은 세상에 있는 각각의 사물이나 사건들을 경험하면서 이 들 속에 들어있는 특징을 파악해서 언어로 개념화한다. 이렇게 컴퓨터에서도 사람이 갖고 있는 개념과 같은 것을 일종의 데이터베이스 형태로 만드는 기술을 온톨로지 기술 이라고 부른다.

    온톨로지는 자연어의 기계 번역과 인공지능 분야에서 활용되며, 최근에는 특정 분야의 인터넷 자원과 그 사이의 관계를 기술하는 온톨로지를 사용하는 시맨틱 웹과 이것에서 파생된 시맨틱 웹 서비스 등의 핵심 요소로서 주목받고 있다.


    시맨틱 웹 언어

    시맨틱 웹에서 Subject, Predicate, Object는 XML의 URI 형태로 표현되며, 이는 웹 환경에 산재한 자원에 대한 온톨로지를 기술하는데 목적이 있다. 현재 시맨틱 웹 온톨로지를  기술하는 표준 언어로 W3C에서 제안한 RDF, OWL 그리고 ISO에서 제안한 TopicMaps 등이 있으나 국지적으로는 N3, N-Triple 또는 인공지능 분야에서 예전부터 쓰이던 KIF 형태로도 온톨로지가 작성된다


    대중적으로 가장 널리 알려진 시맨틱 웹의 활용 예는 RSS 이다. RSS(RDF Site Summary) 첫 버전인 0.9와 1.0은 바로 RDF로 작성되어 있다. 이후 버전에서는 RDF를 사용하지 않으며 이름도 Really Simple Syndication 또는 Rich Site Summary로 혼재되어 사용되고 있다.

    2006년 현재 시맨틱 웹을 시맨틱 웹 서비스(OWL-S, WSDL-S), 시맨틱 PDM/PLM, 기존 KMS 시스템의 시맨틱 웹화, 바이오 인포매틱스 등으로 응용하려는 연구가 진행중이다. 그리고 웹 2.0의 정보 공유 수단으로 시맨틱 웹 온톨로지가 주목받는 중이다.

    원본 주소 ‘http://ko.wikipedia.org/wiki/%EC%8B%9C%EB%A7%A8%ED%8B%B1_%EC%9B%B9’

    ==========================
    RDF(Resource Description Framework)은 월드 와이드 웹 컨소시엄에서 정의한, 웹상의 자원의 정보를 표현하기 위한 XML 규격이다.

    ==========================


    RSS 혹은 Really Simple Syndication (직역하면 매우 간단한 배급)은 XML 기반의 문서 표준으로 다음과 같은 세부 표준을 갖고 있다.

    Rich Site Summary (RSS 0.9x and RSS 2.0)
    RDF Site Summary (RSS 0.9 and 1.0) (RDF: Resource Description Framework)
    RSS는 뉴스나 블로그 사이트에서 주로 사용하는 컨텐츠 표현 방식이다. 웹 사이트 관리자는 RSS 형식으로 웹 사이트 내용을 보여 준다. 이 정보를 받는 사람은 다른 형식으로 이용할 수 있다. 예로, 모질라 파이어폭스의 라이브 북마크나 한RSS 등의 RSS 리더 프로그램에서 읽을 수 있다.

    RSS가 등장하기 전에는 원하는 정보를 얻기 위해 해당 사이트를 직접 방문하여야 했으나, RSS 관련 프로그램(혹은 서비스)을 이용하여 자동 수집이 가능해졌기 때문에 사용자는 각각의 사이트 방문 없이 최신 정보들만 골라 한 자리에서 볼 수 있다.

    또한 RSS 는 포드캐스팅과 같은 미디어 배포의 용도로도 사용된다. RSS 2.0 의 〈enclosure〉태그 내에 MP3 나 MOV 등의 미디어 파일을 첨부하여 배포하면, 포드캐스팅 클라이언트 등에서 미디어 파일을 인식하고 사용자에게 들려주거나 자신의 포터블 미디어 플레이어로 옮겨준다.

    RSS 2.0은 공식적으로 완료된 것으로 선언되었으며, 하버드 대학교가 저작권을 보유하고 있다.

    RSS 파일들은 표준 XML 기반 파일로서, 웹 콘텐트를 신디케이트 및 모으는 방식을 제공합니다. 이 파일에는 콘텐트에 대한 정보를 설명하는 메타데이터, 콘텍스트, 데이터 특성이 포함되어 있습니다. RSS 파일들을 사용하여, 웹 사이트에서 헤드라인, 링크, 아티클 요약을 제공하는 데이터 피드가 만들어집니다. 이 파일들은 로고, 사이트 링크, 인풋 박스, 여러 뉴스 아이템들을 포함한 정보 채널을 기술하고 있습니다. 기타 웹 사이트들은 이러한 정보를 자신들의 페이지와 자동으로 결합하거나, 피드를 사용하여 사이트에 실시간 뉴스 헤드라인을 제공합니다. 이러한 기술을 사용하여 해당 웹 사이트에 실시간 정보 배포가 가능해집니다.


    ==========================

    ✓ OWL의 사전적 의미

    웹상에서 첨단의 웹 검색, 소프트웨어 에이전트 및 지식 관리 기능을 제공하는 온톨로지를 발간 및 공유하기 위한 시멘틱 웹 생성 언어. 자원 기술 프레임워크(RDF)의 확장 언어로 개발된 것으로 DAML+OIL 언어로부터 시작되었다. 웹 온톨로지 언어(OWL)는 웹 온톨로지와 그에 관련된 지식을 정의하는 언어로 추론 시스템에 축적된 명제들을 정의하며, 클래스 및 그 구성원 간의 관계를 기술하고, 구문적으로 정의되지 않은 사실의 논리적 유추를 가능하게 하는 클래스 및 속성과 이에 적용할 수 있는 제약 사항의 집합으로 되어 있다.

    ✓ OWL란?

    OWL 웹 온톨로지 언어는 단지 사람에게 정보를 표시하는데 그치지 않고 정보의 내용을 직접 처리할 수 있는 어플리케이션을 구현하는데 활용될 수 있도록 설계된 언어이다. OWL은 풍부한 어휘(vocabulary)와 형식적 의미론(formal semantics)을 포함하고 있기 때문에 기계 해석이 가능한 웹 컨텐트를 저작하는데 있어 XML, RDF 및 RDF 스키마(RDF-S)보다 뛰어나다. OWL은 표현력이 서로 다른 세 개의 하위 언어 - OWL Lite, OWL DL, OWL Full - 로 구성되어 있다. 후자로 갈수록 표현력이 더 크다.

    ✓ OWL 소개

    OWL은 문서에 포함된 정보를 어플리케이션을 이용하여 자동 처리하고자 할 때 활용하는 언어이다. OWL을 이용하면 임의의 어휘를 구성하는 용어(term)의 의미와 용어들 간의 관계를 명시적으로 표현할 수 있다. 이와 같이 용어와 용어들 간의 관계를 표현한 것을 온톨로지(Ontology)라 한다. OWL은 XML, RDF, RDF-S 보다 더 많은 의미 표현 수단을 제공하므로, 웹 상에서 기계가 해석할 수 있는 컨텐트를 작성하는데 있어 이들 언어보다 뛰어나다. OWL은 DAML+OIL 웹 온톨로지 언어로부터 파생된 언어이다. OWL에는 DAML+OIL의 설계 및 활용 경험으로부터 습득된 지식이 반영되어 있다.

    ✓ 왜 OWL인가?

    시맨틱 웹은 웹의 미래에 대한 비전이다. 시맨틱 웹에서 정보는 명시적인 의미를 부여받게 되는데, 이를 통해 기계는 좀 더 쉽게 웹 상에 존재하는 정보들을 자동으로 처리하고 통합할 수 있다. 시맨틱 웹은 사용자 정의 태그 스키마를 정의할 수 있는 XML과 유연하게 데이터를 표현할 수 있는 RDF를 바탕으로 구축된다. 시맨틱 웹의 구현에 있어 RDF 바로 윗 계층에 필요한 것이 웹 문서에 포함된 용어의 의미를 형식적으로 기술할 수 있는 온톨로지 언어이다. 기계를 이용하여 웹 문서를 대상으로 유용한 추론 기능을 수행하려면 RDF 스키마가 제공하는 기초적인 의미 표현력을 뛰어넘는 언어가 필요하다.

    2009/04/16 00:11 2009/04/16 00:11