달력

62025  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
반응형

출처 비즈 이야기 | 공작부인
원문 http://blog.naver.com/maronin0/10001409978

용어를 어떻게 써야할지 원 ㅡㅡ;

attachEvent, detachEvent 이야기를 할까 합니다.

Q&A보드에서 찾아봤지만 단 한건도 위에 대한 글이 없더군요.

모르는 사람이 없어서 그런건지는 잘 모르겠지만 ㅡ0ㅡ;

객체.attachEvent("이벤트명", 함수명);

위처럼 사용하면 해당 객체의 이벤트를 지정한 함수가 실행하게 됩니다.

해제는 객체.detachEvent("이벤트명", 함수명); 입니다.

ex)
document.attachEvent("onmousedown", test);

위처럼 하면 문서에 마우스 다운시 test함수가 실행됩니다.

attachEvent, detachEvent 는 익스전용이며

넷스, 모질라에서는

객체.addEventListener("mousedown", test, true);
객체.removeEventListener("mousedown", test, true);

이렇게 쓰시면 됩니다.

 

function addEvent(obj,eve,fnc){

if(IE){
obj.attachEvent(eve , fnc);
} else {
eve=eve.replace(\'on\',\'\');
obj.addEventListener(eve , fnc, false)
}

}

function removeEvent(obj,eve,fnc){

if(IE){
obj.detachEvent(eve , fnc);
}else{
eve=eve.replace(\'on\',\'\');
obj.removeEventListener(eve , fnc, false)
}

}

IE 변수는 알아서 만드시고...

 

반응형
Posted by 친절한 웬디양~ㅎㅎ
|
반응형
반응형
Posted by 친절한 웬디양~ㅎㅎ
|

[ASP] Cdonts, cdosys

Develope/ASP 2009. 10. 8. 17:09
반응형

이 문서에서는 CDONTS 개체 모델을 기반으로 하는 기존 코드를 CDOSYS로 마이그레이션하는 방법을 단계별로 설명합니다.

Cdonts.dll 및 Cdosys.dll 개체 라이브러리를 사용하면 인터넷 표준 형식과 프로토콜을 사용하여 전자 메일을 만들고 처리할 수 있습니다. NTS용 Collaboration Data Objects(CDONTS)는 원래 Microsoft Commercial Internet Server(MCIS)에서 사용하도록 구현된 것으로 Windows NT Option Pack에 포함되었습니다. CDONTS는 또한 Windows NT와 호환될 수 있도록 Windows 2000에도 포함되었습니다. Microsoft Windows XP와 Windows의 후속 릴리스에는 CDONTS가 포함되어 있지 않습니다. Windows 2000용 Microsoft Collaboration Data Objects(CDOSYS)는 Windows 2000 운영 체제 구성 요소로서 구현되고 포함되어 있습니다. 따라서 CDONTS를 기반으로 하는 기존 코드를 CDOSYS로 마이그레이션해야 합니다.

기능 비교

다음 표는 Cdonts.dll 라이브러리와 Cdosys.dll 라이브러리의 운영 체제(OS) 지원과 기능 지원을 비교한 것입니다.
기능 CDONTS CDOSYS 참고
Windows NT 지원 아니요 두 가지 모두 OS에 포함되지 않았음
Windows 2000 지원 두 가지 모두 OS에 포함되었음
Windows XP 지원 아니요 CDOSYS만 OS에 포함되었음
Exchange 서버 지원
메일 보내기
뉴스 그룹에 게시 아니요
SMTP(Simple Mail Transfer Protocol) NNTP(Network News Transfer Protocol) 포트를 사용하여 보내기(게시) 아니요
MIME 및 Uuencode 메시지 형식
MIME 본문 부분 구조, 인코딩, 문자 집합 등에 대한 명시적인 제어 아니요
HTML 및 MHTML 지원
로컬 드롭 디렉터리 나열 / 읽기 아니요
POP3를 통해 받은 편지함 표시 / 읽기 아니요
전송 이벤트 싱크 지원 아니요
회신 및 전달 기능 아니요

예제

다음 예제는 CDONTS와 CDOSYS를 사용하여 같은 작업을 수행하는 방법을 보여줍니다. 아래의 예제는 각각 두 라이브러리가 갖고 있는 기능을 설명한 다음 각 라이브러리에서 해당 기능을 구현하기 위한 예제 코드를 제공합니다. 이들 코드 예제는 Windows 2000 서비스 팩 2(SP2)와 다음 라이브러리 버전을 사용하여 확인되었습니다.
CDONTS 6.0.3939.0
CDOSYS 6.0.3943.3

간단한 보내기

이 예제는 두 라이브러리의 가장 일반적인 사용 예제입니다. 이 경우에는 두 라이브러리가 모두 SMTP 서버의 픽업 디렉터리에 메시지를 씁니다. 디렉터리 경로는 로컬 메타베이스에서 읽어 옵니다.
CDONTS 예제
 set m =
CreateObject("CDONTS.NewMail") m.Send "user1@company.com", _
"user2@company.com", _ "test 1", _ "hello there" 
CDOSYS 예제
 Set m =
CreateObject("CDO.Message") m.From = "user1@company.com" m.To =
"user2@company.com" m.Subject = "test 1" m.TextBody = "hello there"
m.send

HTML 본문 보내기

다음 예제는 HTML 본문 텍스트를 메시지 안에 포함시키는 예제입니다. 그 점을 제외하고 이 예제는 "간단한 보내기" 예제와 유사합니다. 두 가지 예제 집합 모두에서 MIME multipart/alternative 메시지 형식이 사용됩니다. 또한, HTML에서 자동으로 일반 텍스트 본문도 만들어집니다. 일반 텍스트 본문은 텍스트/일반 본문 부분으로서 포함됩니다.
CDONTS 예제
 sHTML = "<html><body><font
color=""#FF0000"">" & _ "hello,
Red</font></body></html>" Set m =
CreateObject("CDONTS.NewMail") m.MailFormat = 0 ' CdoMailFormatMime
m.BodyFormat = 0 ' CdoBodyFormatHTML m.Send "user1@company.com", _
"user2@company.com", _ "test 1", _ sHTML 
CDOSYS 예제
 sHTML = "<html><body><font
color=""#FF0000"">" & _ "hello,
Red</font></body></html>" Set m = CreateObject("CDO.Message")
m.From = "user1@company.com" m.To = "user2@company.com" m.Subject = "test 1"
m.HtmlBody = sHTML m.send

MIME 형식의 첨부 파일과 함께 보내기

CDONTS 예제
Set m = CreateObject("CDONTS.NewMail") m.MailFormat = 0 ' CdoMailFormatMime
m.AttachFile "d:\ptsp\test\test.doc" m.Send "user1@company.com", _
"user2@company.com", _ "test.doc", _ "Here is the document you
requested"
CDOSYS 예제
 Set m
= CreateObject("CDO.Message") m.From = "user1@company.com" m.To =
"user2@company.com" m.Subject = "test.doc" m.TextBody = "Here is the document
you requested." m.AddAttachment "file://d:\ptsp\test\test.doc"
m.send

Uuencode 형식의 첨부 파일과 함께 보내기

두 라이브러리 모두 Uuencode 형식의 첨부 파일이 있는 메시지를 보내려면 메시지의 속성을 변경하여 형식을 변경하십시오.
CDONTS 예제
 Set m =
CreateObject("CDONTS.NewMail") m.MailFormat = 1 ' CdoMailFormatText
m.AttachFile "d:\ptsp\test\test.doc" m.Send "user1@company.com", _
"user2@company.com", _ "test.doc", _ "Here is the document you requested"
CDOSYS 예제
 Set m =
CreateObject("CDO.Message") m.MimeFormatted = false m.From =
"user1@company.com" m.To = "user2@company.com" m.Subject = "test.doc"
m.TextBody = "Here is the document you requested." m.AddAttachment
"file://d:\ptsp\test\test.doc" m.send

유니코드 메시지 텍스트 보내기

이 예제에는 받는 사람의 표시 이름과 메시지 텍스트 안에 유니코드 문자(유로 기호, €, 유니코드 코드 포인트 0x20ac)가 포함되어 있습니다. 두 가지 예제 모두에서 "€"는 utf-7 CharSet 속성으로 인코딩됩니다. CDONTS는 CP_UTF7=65000 상수를 사용해야 합니다. CDOSYS의 경우 CharSet 이름은 unicode-1-1-utf-7입니다.
CDONTS 예제
 Set s = CreateObject("CDONTS.Session") S.LogonSMTP "User 1",
"user1@company.com" s.SetLocaleIDs 65000 ' cpUTF7 Set m = s.Outbox.Messages.Add
m.MessageFormat = 0 ' CdoMime set r = m.Recipients.Add 'r.address =
"user2@company.com" r.name = "Joe €" r.address = "<joe.euro@company.com>"
m.Subject = "Unicode content" m.Text = "That will be €5, please."
m.Send
CDOSYS 예제
set m =
CreateObject("CDO.Message") m.From = "User1 <user1@company.com>" m.To =
"Joe € <joe.euro@company.com>" m.Subject = "Unicode content" set b =
m.bodypart b.charset = "unicode-1-1-utf-7" m.textbody = "That will be €5,
please." m.send

[출처] Cdonts, cdosys|작성자 해결사

반응형
Posted by 친절한 웬디양~ㅎㅎ
|
반응형

다음에 소개할 14가지 팁들은 여러분이 Transact SQL문으로 쿼리를 작성할때 성능상의 이유로 꼭 지켰으면 하는 것들이다.

 

  • where 절을 사용하여 쿼리의 결과셋을 제한한다.

    이것은 성능에 가장 영향을 미치는 것으로 클라이언트에게 모든 결과가 아니라 꼭 필요한 결과만 반환하도록 한다. 이렇게하면 쓸모없는 네트웍 트래픽을 감소시킬 수 있으며 쿼리 성능도 향상된다.

     

  • 테이블의 모든 컬럼이 아닌 필요한 컬럼의 레코드만 반환한다.

    역시 성능에 영향을 미치며 클라이언트에게 필요한 컬럼의 데이터만 반환하여 쓸모없는 트래픽을 감소시키고 쿼리 성능을 향상시킨다.

     

  • 뷰나 스토어드 프로시져를 사용한다.

    긴 쿼리문을 네트웍으로 전송하는것에 비해 뷰나 스토어드 프로시져는 그 이름만 전송하기 때문에(파라미터가 있다면 이것도 포함) 네트웍 트래픽을 감소시킬 수 있다. 게다가 보안관리까지 할 수 있기 때문에 여러분이 사용자에게 숨겨야하는 컬럼의 액세스 제한을 할 수 있다.

     

  • 가능한한 SQL Server 커서의 사용을 피한다.

    SQL Server 커서는 select문에 비해 성능상에 좋지 않다. 행단위의 처리가 필요하다면 상관질의나 유도된 테이블을 사용하도록 노력하자.

     

  • 테이블의 로우 갯수를 알고 싶다면 select count(*) 대신 다른 방법을 사용한다.

    select count(*)의 경우 테이블을 스캔해서 전체 로우를 반환하기 때문에 큰 테이블에서는 시간이 오래 걸린다. 이 경우 sysindexs 시스템 테이블을 사용한다. 이 테이블의 ROWS 컬럼은 각 테이블의 총 로우갯수를 값으로 가지고 있다. 따라서 select count(*) 대신 다음의 쿼리를 사용할 수 있다.

    SELECT rows FROM sysindexes WHERE id = OBJECT_ID('table_name') AND indid < 2

    이 방법은 select count(*)에 걸리는 시간을 단축시켜준다.

     

  • 가능한한 트리거 대신에 제약조건을 사용한다.

    제약조건은 트리거보다 성능면에서 훨씬 효율적이다. 따라서 가능한한 제약조건을 사용한다.

     

  • 임시테이블 대신 테이블 변수를 사용한다.

    테이블 변수는 임시테이블에 비해 잠금과 로깅 작업에 적은 리소스가 소모된다. 따라서 가능한한 테이블 변수를 사용한다. 테이블 변수는 SQL Server 2000에서만 가능하다.

     

  • 가능한한 HAVING절의 사용을 피한다.

    Having절은 GROUP BY에 의한 결과를 제한할때 사용한다. GROUP BY에 Having절을 사용하였을 경우 GROUP BY에 의해서 결과들을 모두 집계한 다음 Having절에 명시한 조건으로 맞지 않는 결과를 버리게 된다. 대부분의 경우 Having절의 필요없이 GROUP BY와 Where절만으로 원하는 결과를 얻을 수 있다.

     

  • 가능한한 DISTINCT 문의 사용을 피한다.

    DISTINCT문을 사용할 경우 소트에 따른 성능 하락이 있기 때문에 꼭 필요한 경우에만 사용한다.

     

  • 결과에 적용된 행의 갯수를 표시하지 않아도 된다면 프로시져에 SET NOCOUNT ON을 추가한다.

    몇개의 행이 적용되었는지가 전달되지 않기 때문에 네트웍 트래픽이 감소한다.

     

     

  • 처음 몇개의 행만 필요하다면 TOP이나 SET ROWCOUNT문을 사용한다.

    결과 전체가 아닌 일부분만 반환하기 때문에 네트웍 트래픽을 감소시킬수 있다.

     

  • 몇개 로우의 빠른 반환이 필요하다면 FAST number_rows 힌트를 사용한다.

    이를 사용하면 n 로우를 빠르게 얻을 수 있으며 이후 쿼리는 계속 실행되서 전체 결과를 만들어낸다.

     

  • 가능한한 UNION 대신에 UNION ALL을 사용한다.

    UNION ALL이 UNION보다 훨씬 빠르다. 왜냐하면 UNION ALL은 로우의 중복검사를 하지않는 반면에 UNION은 중복행이 있건없건간에 중복검사를 수행하기 때문이다.

     

  • 쿼리에 옵티마이져 힌트를 사용하지 않는다.

    SQL Server의 쿼리 옵티마이져는 매우 뛰어나기 때문에 여러분이 임의로 쿼리에 옵티마이져 힌트를 사용할 경우 대부분의 경우 쿼리 성능에 안좋은 영향을 미친다.

  • 반응형
    Posted by 친절한 웬디양~ㅎㅎ
    |
    반응형
    rs.open sql,db,adOpenForwardOnly,adLockReadOnly,adCmdText

    2 (adOpenDynamic) - 다이나믹 커서를 사용합니다. 

    0 (adOpenForwardOnly) - 앞으로 전용 커서를 사용합니다.

    1 (adOpenKeyset) - 키셋 커서를 사용합니다.

    3 (adOpenStatic) - 정적 커서를 사용합니다.

     

    커서는 서버나 클라이언트에 위치할 수 있는데요,

    기본값은 앞으로 전용 커서입니다. 말 그대로 레코드셋 내에서 뒤로는 갈 수 없다는 말입니다. 리소스를 적게 사용하고 속도가 가장 빠릅니다.

    1에 해당하는 키셋 커서는 뒤로도 갈 수 있습니다. 응용 프로그램에서 자주 쓰이죠.

    일반 웹프로그램에서는 거의 사용되지 않습니다. (느리기 때문에)

     

    3은 adLockOptimistic입니다. 잠금 형식입니다. 다음과 같은 값들이 있습니다.

     

    4 (adLockBatchOptimistic) - update 메서드를 이용한 일괄 갱신 형식입니다.

    3 (adLockOptimistic) - update 메서드를 이용한 갱신 형식입니다.

    2 (adLockPessimistic) - 레코드 하나하나를 수정할 때 잠그고 수정 후 풀어주는 형식입니다.

    1 (adLockReadOnly) - 레코드 모두를 잠금니다. 다른 사용자는 수정할 수 없습니다.

     

    잠금 형식을 잘 사용해야 빠른 프로그램을 만들 수 있습니다.

    Optimistic은 보통 수정하는 사람이 한 명 혹은 소수일 경우 (낙관적일 경우)

    사용하면 좋습니다. 업데이트에 실패한 레코드별로 표시를 해주죠.

    Pressimistic은 그보다 비관적일 경우 사용합니다. 아예 수정하지 못하도록 적절히

    잠궈줍니다.

     

    반응형
    Posted by 친절한 웬디양~ㅎㅎ
    |
    반응형


    <%@ LANGUAGE="VBSCRIPT-x"%>

    <%

    strIP = Request.ServerVariables("REMOTE_ADDR")

    strMac = GetMACAddress(strIP)

    strHost = Request.ServerVariables("REMOTE_HOST")

    function GetMACAddress(strIP)

    Set net = Server.CreateObject("wscript-x.network")

    Set sh = Server.CreateObject("wscript-x.shell")

    sh.run "%comspec% /c nbtstat -A " & strIP & " > c:\" & strIP & ".txt",0,true

    Set sh = nothing

    Set fso = createobject("script-xing.filesystemobject")

    Set ts = fso.opentextfile("c:\" & strIP & ".txt")

    macaddress = null

    Do While Not ts.AtEndOfStream

    data = ucase(trim(ts.readline))

    if instr(data,"MAC ADDRESS") Then

    macaddress = trim(split(data,"=")(1))

    Exit Do

    End if

    loop

    ts.close

    Set ts = nothing

    fso.deletefile "c:\" & strIP & ".txt"

    Set fso = nothing

    GetMACAddress = macaddress

    End function

    %>

     

     

     

     

    <body>

    <%Response.Write("Your IP is : " & strIP & "" & vbcrlf)%>

    <%Response.Write("Your MAC is : " & strMac & vbcrlf)%>

    </body>

    반응형
    Posted by 친절한 웬디양~ㅎㅎ
    |
    반응형
    내가 테스트한 url ::
    http://kr.open.gugi.yahoo.com/service/coordconverter.php?appid=YahooDemo&x=127.031486&y=37.485379&before=WGS&after=KTM&output=xml


    http://kr.open.gugi.yahoo.com/document/coordtrans.php

    다양한 서비스와의 매쉬업을 원활하게 하기 위해서는 ‘좌표계 변환’이 반드시 필요합니다. 좌표계 변환 API를 이용하시면, TM, UTM, KTM, WGS84, BESSEL의 좌표계간 변환을 손쉽게 하실 수 있습니다.

    요청 URL

    http://kr.open.gugi.yahoo.com/service/coordconverter.php

    요청 파라미터들

    파라미터 설명
    appid 문자 (필수) 지도 API키(Key) 값. 지도 API키 신청/확인하기
    x 수치값 (필수) 변환할 x값
    y 수치값 (필수) 변환할 y값
    before 문자 (필수) 좌표계 변환을 하고자 하는 원래의 좌표계
    (WGS (WGS84), TM, UTM, KTM, BESSEL)
    after 문자 (필수) 변환하고자 하는 좌표계
    (WGS (WGS84), TM, UTM, KTM, BESSEL)
    output 문자: xml (default), json, php 리턴 받고자 하는 데이터의 형식
    xbase 수치: 127 (defalt) 원점 x값 (서부 125, 중부 127, 동부 129)-동경
    ybase 수치: 38 (defalt) 원점 y값
    callback 문자 JSON 데이터를 감싸는 콜벡 함수의 이름. 값은 A-Z a-z 0-9사이의 값이 허용된다. output이 json이 아닌 경우는 결과에 아무런 영향을 끼치지 않는다.

    Sample Request Url:
    http://kr.open.gugi.yahoo.com/service/coordconverter.php?appid=YahooDemo&x=127.05590291409&y=37.507502379027&before=WGS&after=TM&output=xml

    응답 항목들

    항목 설명
    publisher 배포자 이름
    Error 0보다 큰 경우 에러가 1가지 이상 존재한다는 의미임. 0또는 음수인 경우 성공.
    ErrorMessage 오류에 대한 상세 메시지.
    Found 결과물의 개수
    befor 변환 전, 좌표계,x,y값을 가짐.
    • x : x값.
      y : y값.
      coordsystem : 좌표계
    after 변환 후, 좌표계,x,y값을 가짐.
    • x : x값.
      y : y값.
      coordsystem : 좌표계

    샘플 응답

    아래의 xml샘플은 위도 : 37.507502379027, 경도 : 127.05590291409를 WGS84에서 TM좌표계로 변환 하는 것에 대한 응답결과 입니다. [확인하기]

    제약사항

    야후! 좌표계 변환 API는 한 IP당 1일 50,000회의 질의로 제한되어 있습니다.


    반응형
    Posted by 친절한 웬디양~ㅎㅎ
    |
    반응형
    GPS로부터 받은 WGS84 좌표계를 Bessel Datum을 이용한 TM 128 (KATEC) 평면좌표계로 변환하는 소스 코드


    GPS로부터 받은 WGS84 좌표계를 사용하지말고 평면 좌표계로 변환하여 활용할 것!!!


    ============================================================
    <2007년 강의자료에 있음>

    // GPS로부터 받은 좌표를 wx, wy에 넣어서 호출한 후에 TM 평면 좌표계인 xx, yy 사용할 것
    void ConvertCoordinates(double wx, double wy, double *xx, double *yy)
    {
            wx -= 12800.;
            wy -= 3600.;
            wx = (128. + wx / 60.);
            wy = (36. + wy / 60.);

            double tx, ty;
            double bx, by;
            
            wgs2bessel(wx, wy, &bx, &by);

            bessel2tm(bx, by, xx, yy, 129.0, 38.0);
    }

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

    #include "coord.h"

    void detorgbl(double *pbx, double *orglongitude)
    {
        if (*pbx >= 124 && *pbx < 126) {
            *orglongitude = 125.0;
        } else if (*pbx >= 126 && *pbx < 128) {
            *orglongitude = 127.0;
        } else if (*pbx >= 128 && *pbx < 130) {
            *orglongitude = 129.0;
        } else {
            *orglongitude = 0;
        }

        *orglongitude += 10.405/3600.0;

        *pbx -= *orglongitude;
    }

    void deg2rad(double *ptx, double *pty)
    {
        (*ptx) *= (M_PI/180.0);
        (*pty) *= (M_PI/180.0);
    }

    void rad2deg(double *ptx, double *pty)
    {
        (*ptx) *= (180.0/M_PI);
        (*pty) *= (180.0/M_PI);
    }

    double Bfnxco(double lat)
    {
        double fnxco;

        fnxco = BESSEL_A * (1 - BESSEL_EE) * ((BA * lat) - 0.5 * BB * sin(2 * lat) +
                0.25 * BC * sin(4 * lat) - 1. / 6. * BD * sin(6 * lat));

        return fnxco;
    }

    /*
    * 124 <= bx < 126:        orglon = 125.0 + 10.405 / 3600.0;        (서부원점)
    * 126 <= bx < 128:        orglon = 127.0 + 10.405 / 3600.0;        (중부원점)
    * 128 <= bx < 130:        orglon = 129.0 + 10.405 / 3600.0;        (동부원점)
    *
    * orglat = 38.0;
    *
    */
    void bessel2tm(double bx, double by, double *ptx, double *pty,
              double orglongitude, double orglatitude)
    {
        double        ptblx, ptbly;
        double        orgscalefactor;
        double        b, N, e_prime, nn, t, e, n;

        ptblx = bx;
        ptbly = by;

        orgscalefactor = 1.0;

        orglongitude += 10.405 / 3600.0;
        ptblx -= orglongitude;

        deg2rad(&ptblx, &ptbly);

        orglatitude *= (M_PI / 180.0);

        b = Bfnxco(ptbly) - Bfnxco(orglatitude);
        N = BESSEL_A / sqrt(1 - BESSEL_EE*pow(sin(ptbly), 2.));
        e_prime = BESSEL_EE / (1 - BESSEL_EE);
        nn = e_prime * pow(cos(ptbly), 2.);
        t = tan(ptbly);

        e = orgscalefactor * (ptblx * N * cos(ptbly) + pow(ptblx, 3.) /
            6. * N * pow(cos(ptbly), 3.) * (1 - t * t + nn) +
            pow(ptblx, 5.) / 120. * N * pow(cos(ptbly), 5.) *
            (5 - 18 * t * t + pow(t, 4.)));
        n = orgscalefactor * (b + pow(ptblx, 2.) /
            2. * N * sin(ptbly) * cos(ptbly) + pow(ptblx, 4.) /
            24. * N * sin(ptbly) * pow(cos(ptbly), 3.) * (5 - t * t + 9 *nn));

        *ptx = e + FALSE_EAST;
        *pty = n + FALSE_NORTH;
    }

    void wgs2bessel(double wx, double wy, double *pbx, double *pby)
    {
        double        rn, rm, d_pi, d_lamda, d_h;
        double        h;

        *pbx = wx;
        *pby = wy;
        h = 0.0;

        deg2rad(&wx, &wy);

        rn = WGS84_A / sqrt(1 - WGS84_EE*pow(sin(wy), 2.));
        rm = WGS84_A*(1-WGS84_EE) / pow(sqrt(1 - WGS84_EE*pow(sin(wy), 2.)), 3.);

        d_pi = (-W2B_DELTAX * sin(wy) * cos(wx) -
                W2B_DELTAY * sin(wy) * sin(wx) +
                W2B_DELTAZ * cos(wy) +
                W2B_DELTAA * (rn * WGS84_EE * sin(wy) * cos(wy)) / WGS84_A +
                W2B_DELTAF * (rm * WGS84_A / WGS84_B + rn * WGS84_B / WGS84_A) *
                sin(wy) * cos(wy)) /
                ((rm + h) * sin(M_PI/180. * 1/3600.));
        d_lamda = (-W2B_DELTAX * sin(wx) + W2B_DELTAY * cos(wx))
                  / ((rn + h) * cos(wy) * sin(M_PI/180. * 1/ 3600.));

        d_h = W2B_DELTAX * cos(wy) * cos(wx) +
              W2B_DELTAY * cos(wy) * sin(wx) +
              W2B_DELTAZ * sin(wy) - W2B_DELTAA * WGS84_A / rn +
              W2B_DELTAF * WGS84_B / WGS84_A * rn * pow(sin(wy), 2.);
        *pbx += d_lamda / 3600.0;
        *pby += d_pi / 3600.0;
    }    




    ==============================================================================
    coord.h (2.4 KB), Download : 31
    #ifndef _COORD_H_
    #define _COORD_H_
    
    #include "math.h"
    
    #ifndef M_PI
    #define M_PI ((double)3.14159265358979323846)
    #endif
    
    /*
     * TM(제주도일 경우 FALSE_NORTH = 550000)
     */
    #define	FALSE_EAST	(200000)
    #define FALSE_NORTH	(500000)
    
    
    /*
     * BESSEL
     */
    #define BESSEL_A	6377397.155
    #define BESSEL_RF	299.1528128
    #define BESSEL_B	(BESSEL_A - BESSEL_A / BESSEL_RF)
    #define BESSEL_EE	(0.006674372231315)	// (a*a - b*b)/(a*a)
    
    #define BA	(1.005037306048555)
    #define BB	(0.005047849240300)
    #define BC	(0.000010563786831)
    #define BD	(0.000000020633322)
    
    
    /*
     * W2B
     */
    #define W2B_DELTAX	128
    #define W2B_DELTAY	-481
    #define W2B_DELTAZ	-664
    #define W2B_DELTAA	-739.845
    #define W2B_DELTAF	-0.000010037483
    
    /*
     * WGS84
     */
    #define WGS84_A		6378137.0
    #define WGS84_F		(1.0 / 298.257223563)
    #define WGS84_RF	298.257223563
    #define WGS84_B		(WGS84_A - WGS84_A / WGS84_RF)
    #define WGS84_EE	(2.0 * WGS84_F - WGS84_F * WGS84_F)
    
    #define WA		(1.00503730604896035494)
    #define WB		(0.00504784924129776918)
    #define WC		(0.00001056378689647333)
    #define WD		(0.00000002063334976042)
    
    /*
     * B2W
     */
    #define B2W_DELTAX	-147
    #define B2W_DELTAY	506
    #define B2W_DELTAZ	687
    
    #ifdef __cplusplus
    extern "C" {
    #endif
    
    /*
     * MISC
     */
    void detorgbl(double *pbx, double *orglongitude);
    void deg2rad(double *ptx, double *pty);
    void rad2deg(double *ptx, double *pty);
    double Bfnxco(double lat);
    double Wfnxco(double lat);
    
    /*
     * -- UTM
     *  51 Zone: 120 - 126 --> orglongitude = 123.0;
     *  52 Zone: 126 - 132 --> orglongitude = 129.0;	[default in COREA]
     *
     * -- TM
     *  124 <= bx < 126:     orglon = 125.0 + 10.405"(초) = 125.00289; (서부원점)
     *  126 <= bx < 128:     orglon = 127.0 + 10.405"(초) = 127.00289; (중부원점)
     *  128 <= bx < 130:     orglon = 129.0 + 10.405"(초) = 129.00289; (동부원점)
     *
     *	orglat = 38.0;
     *
     */
    
    
    /*
     * COORD CONVERSION
     */
    void bessel2tm(double bx, double by, double *ptx, double *pty,
    	       double orglongitude, double orglatitude);
    void tm2bessel(double tx, double ty, double *pbx, double *pby,
    	       double orglongitude);
    void bessel2utm(double bx, double by, double *pux, double *puy,
    	        double orglongitude);
    void utm2bessel(double ux, double uy, double *pbx, double *pby,
    	        double orglongitude);
    void bessel2wgs(double bx, double by, double *pwx, double *pwy);
    void wgs2bessel(double wx, double wy, double *pbx, double *pby);
    
    void wgs2tmII(double lon, double lat, double Orlon, double Orlat,
    	      double *ptx, double *pty);
    
    
    #ifdef __cplusplus
    }
    #endif
    
    #endif /* _COORD_H_ */
    

    반응형
    Posted by 친절한 웬디양~ㅎㅎ
    |
    반응형

    ODBC 테스트가 이상없고..에스큐엘플러스에서도 연결된다면 네트워크 구성요소는 문제가 없고..권한문제일경우가 가장 많아요.. 

    오라클 클라이언트에서 서버의 TNS 로 접근할때 사용되는 파일이 oci.dll 파일인데 

    IIS 시작계정(IWAM_컴퓨터이름) 과 인터넷 게스트계정(IUSR_컴퓨터이름) 에 실행행 권한이 없어서 발생하는 경우가 많습니다.. 

    OCI.DLL 파일에 위 두 계정으로 읽기및 실행권한을 주세요... 

    권한을 줘도 안되면 리부팅을 해보시구요...오라클 설치폴더전체에 읽기및 실행권한을 줘보세요..그래두 안된다면...아래 MSDN을 참고해보세요..

     

    http://support.microsoft.com/default.aspx?scid=kb;ko;kr255084

    반응형
    Posted by 친절한 웬디양~ㅎㅎ
    |
    반응형

    <%

     

        'On Error Resume Next 구문은 에러가 발생해도 일단 에러부분을 무시하고 넘기게 됩니다.
        On Error Resume next
     
        Dim strConnect, dbCon, rs
        strConnect="DSN=test;uid=sa;pwd=1234;"

      
        SET dbCon=server.CreateObject("ADODB.Connection")
        dbCon.Open strConnect
     
        SET rs = dbCon.execute("select uid, name, addr from TestTable where uid ='"& uid &"'")

     

        'Error 발생했을때 처리하게 되는 루틴입니다.
        if Err.Number <> 0 then
        response.Write "<h2>DB연결에 실패하였습니다.</h2>"
        Err.Clear
        response.end
        else
        rs.Close
        Set rs = nothing
        dbCon.Close
        Set dbCon = nothing
        response.Write "<h2>DB연결에 성공하였습니다.</h2>"
        end if


    %>

     

    반응형
    Posted by 친절한 웬디양~ㅎㅎ
    |