잘되던 오라클이 갑자기 접속이 안됐다.


AD전환 하고 나서 오라클을 지우고 다시 설치하였는데..



어라..

"ORA-12154 TNS : 서비스 명을 해석할 수 없습니다." 라는 오류가 발생한다. ???


인터넷 검색 시작..


Oracle 설치 폴더에 Network에 Admin 폴더 안에 있는 sqlnet.ora 파일이 서버와 틀려서 발생하는 오류란다.



열어서 확인해 보니..

AD관련해서 NAMES.DEFAULT_DOMAIN = ***.NET이부분이 추가가 되었다.


앞에 #을 붙여서 주석처리..



그리고 다시 시도 했더니..


젠장.. 또 안된다.



"ORA-12638: 신용검색에 실패했습니다.".... 란다.


젠장..



아무리 내 신용도가 바닥이라..


회사에서 내말을 아무도 안믿기는 하지만.. 쩝..


이건 너무 하잖어..




다시 검색..


결과도 잘 안나온다.


TNS셋팅 다시 해봤다.

TNS명에 보니 이전에는 안붙던 도메인이 붙는다.


TNS명.***.NET 이라고..



다시 시도..


역시나 같은 결과..




쩝..




인터넷 다시 검색..

다행히 결과가 나왔다.



sqlnet.ora 파일에 SQLNET.AUTHENTICATION_SERVICES= (NTS) 이부분을 주석처리.. 하란다.


역시나 앞에 #을 붙이고 시도..



다행히 정상적으로 로그인이 된다.



하튼.. 지랄이다.. 지랄.. 쩝..

1.Windows 계열일 경우
이경우 레지스트리에 등록된 SID를 지우셔야 할겁니다.
제가 찾아본것으로는 아래 레지스트리를 지우시고
다시 DB를 생성하시면 될듯합니다.
\HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMEID\SID
\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\OracleServiceSID
이두가지를 지우시면 될듯합니다.
여기서 SID는 예전에 설치하셨을때 사용하신 SID겠죠..
이게 남아있으면 같은 SID로 다시 DB를 만들수 없습니다.


2.Unix계열(리눅스도 포함)
보통 SID는 oratab이란 파일에 저장되는데
이파일은 시스템마다 조금씩 틀리지만
/etc, /var/opt/oracle 밑에 존재합니다.
그냥 이파일을 지우시던지...아니면
편집하셔서 기존에 설치하셨던 SID 리스트를
지우시면 됩니다.



출처 : http://kin.naver.com/detail/detail.php?d1id=1&dir_id=10110&eid=d1ATOYd7LSPSDdaPp6zGw8j1Ej4NbTI6&qb=v8C288WsIHNpZA
사용자 삽입 이미지



바로 이놈...


안보이게 하고 싶은데 예전에 img 태그안에다가 속성값을 줬었는데..

도무지 뭐였는지 기억도 안나고 찾지도 못하겠네..


일단..

<meta http-equiv=imagetoolbar content=no>


이놈으로 해결...


근데 쟤는 다 안나오게 하는 것이고..


특정 이미지만 처리를 해야 할때는 예전에 그걸 기억해 내야 하는데.. 훔..


아는 사람.. 손~~~!!






추가 : ...


푸하핫.. 찾았다. ㅋㅋ


<img src=".." GALLERYIMG="YES">  요놈..

GALLERYIMG 값이 yes이면 나오고.. no이면 안나온다 .ㅎㅎㅎㅎ

MDAC (Microsoft Data Access Components)

UDA(Universal Data Access)는 여러 기업 환경의 정보에 접근하는 방법을 제공하기 위한 마이크로소프트의 전략이다. UDA는 다양한 정보 소스에 빠르게 접근할 수 있으며, 관계형 또는 비 관계형 데이터베이스를 모두 접근할 수 있다. 그리고 개발 툴과 개발 언어에 비 독립적이면서도 쉽게 인터페이스를 프로그래밍할 수 있도록 지원한다. 이 기술은 다양한 데이터 소스에 접근할 수 있으며, 쉽게 유지보수할 수 있는 솔루션을 제공하며, 개발 툴, 어플리케이션, 플랫폼 모두에 최상의 선택이 될 것이다.

UDA는 데이터 소스간의 이동에 소요되었던 많은 비용과 시간을 줄여주며, ODBC, RDO, DAO를 포함하는 차기 표준 인터페이스로 예상되고 있다.

MDAC(Microsoft Data Access Components)는 UDA를 지원하며, ADO(ActiveX Data Objects), Remote Data Service(RDS), OLE DB, ODBC(Open Database Connectivity) 그리고 OLE DB for OLAP을 포함하고 있다.

MDAC은 버전 1.0에서 시작하여 1.5, 2.0, 2.1 그리고 2.5 버전까지 발전되어 왔다. MDAC 1.0은 ODBC 3.0, ADO 1.0, ADC(Advanced Data Connector) 1.0 그리고 OLE DB 1.0을 포함하고 있었으며, 1996년에 발표되었다.

MDAC 1.5는 ODBC 3.5, ADO 1.0, OLE DB 1.5 그리고 RDS(Remote Data Service) 1.5를 포함하고 있었으며, 97년에 발표되었으며, 여러 번의 Minor 업그레이드(MDAC 1.5, MDAC 1.5a, MDAC 1.5b, MDAC 1.5c, MDAC 1.5d)를 거쳐왔다.

MDAC 2.0은 ODBC 3.51, OLE DB 2.0, ADO 2.0, RDS 2.0 그리고 OLE DB for OLAP을 포함하고 있었으며, 98년 말에 발표되었다. MDAC 2.0은 비주얼 스튜디오 6의 2번 CD에 포함되어져 있다. MDAC 2.1은 MDAC 2.0의 기능을 보안하여서 발표되었으며, MS SQL 서버 7.0에 포함되어져 있다.

MDAC을 사용할 때 주의해야 될 점은 MDAC을 포함하고 있는 프로그램을 설치하고 나면 MDAC의 버전이 변경되기 때문에 최신 버전의 MDAC으로 환경을 보전해 주어야 한다. 예를 들어, 비주얼 스튜디오 6.0을 설치했다면 MDAC은 2.0으로 변경된다. 그렇기 때문에 비주얼 스튜디오 6.0을 설치한 후에 다시 MDAC 2.1을 설치해 주어야 최신 버전의 MDAC을 사용할 수 있다.

Windows NT 4.0에서 옵션 팩을 다시 설치했다면 MDAC은 1.5로 변경된다. 이럴 경우에도 역시 MDAC 2.1을 다시 설치해야 한다.

MDAC 2.5는 99년 말에 Windows 2000과 함께 발표될 예정이며, MDAC 2.5는 Windows 2000의 시스템 레벨의 구성요소로 만들어졌다. 그렇기 때문에 Windows 2000에서는 MDAC을 별도로 설치할 필요 없이 Windows 2000 운영체제를 설치할 때 함께 설치하면 된다. 그리고 현재 MDAC 2.5에 대한 모습을 보려면 Windows 2000 베타 3를 설치해서 사용하면 된다.

그러면 MDAC에 포함된 5가지 구성요소에 대해서 간략하게 살펴본다.

  1. ODBC - Open Database Connectivity의 약어로서, MS SQL 서버, 오라클(Oracle),인포믹스(Informix), 사이베이스(Sybase), DB2 등의 관계형 데이터베이스에 접속하기 위한 인터페이스 규격이다. ODBC는 마이크로소프트에 의해서 제안되었으며, 현재로서는 대부분의 관계형 데이터베이스의 표준  인터페이스로 사용되고 있다. ODBC에 대응하는 것으로 IBM, 노벨(Novell), 워드 퍼펙 등과 같은 회사들이 연합하여 정의한 데이터베이스 인터페이스로는 IDAPI(Integrated Database Application Programming Interface)가 있다.
     
  2. ADO - ActiveX Data Object의 약어로서, 기존의 DAO(Data Access Object)와 RDO(Remote Data Object)를 대체하는 데이터 접속 개체이다. ADO에 대한 자세한 내용은 이 장의 2절에서 다루고 있다.
     
  3. OLE DB - Object Linking & Embedding Database의 약어로서, ODBC를 대체하는 기술로 부각되고 있는 마이크로소프트의 기술이다. OLE DB에 대한 자세한 내용은 이 장의 3절에서 다루고 있다.
     
  4. RDS - Remote Data Service의 약어로서, 웹 환경에서 데이터베이스를 조작하기 위한 마이크로소프트의 기술인 ADC(Advanced Database Connector)의 다음 버전이다. RDS에 대한 자세한 내용은 제 6부 User Interface 프로그래밍에서 다루고 있다.
     
  5. OLEDB for OLAP - Object Linking & Embedding Database for On Line Analytic Processing의 약어로서, MS SQL 서버의 일부인 Decision Support Service(코드명 Plato, OLAP Server)의 데이터를 조작하기 위한 기술이다.

ActiveX Data Object




출처 : http://tong.nate.com/tjkim

1. 안전하게 제거하기
: 안전제거는 외부 저장장치에 사용되는 쓰기 캐쉬 버퍼에 남아있는 데이터를 위한 옵션임.
  장치 관리자에서 디스크 드라이브에 해당 USB메모리의 속성창에서
  정책탭에 있는 옵션중에서 빠른 제거를 위해 최적화를 선택하면 안전제거를 하지 않아도 되며,
  성능을 위해 최적화를 선택하면 반드시 안전제거를 해야 한다.


2. USB의 종류
SLC : 메모리 셀 하나에 1bit를 저장하는 방식
         속도는 빠르나 메모리당 담을 수 있는 용량이 적어 가격이 비싸다.

MLC : 메모리 셀 하나에 여러 bit를 저장하는 방식
         속도는 느리지만 가격이 싸다.


3. 메모리 드라이크 아이콘 만들기
메모리 루트에 ico파일을 넣고 autorun.inf파일을 아래와 같이 루트에 생성한다.

[autorun]
icon=아이콘이름.ico
Label=Label이름


이상



이상

Windows XP Pro IIS에는 사이트를 한개만 올릴 수 있다.


그런데 외국사이트에 이전에 여러개의 사이트를 돌릴 수 있는 방법이 올라 온적이 있었다.


adsutil.vbs 파일을 이용한 방법이었는데.


이전에 테스트 했더니 잘 안되서 말았는데..

어제 아는동생이 이야기 해서 간만에 다시 테스트 해봤는데..


결과는 "잘 된다!!" 였다.



하지만.. 문제는..



사이트는 여러개지만..


실행 시킬수 있는 사이트는 역시 한개씩 밖에 안된다는거..



한개의 사이트에서 경로를 바꿔가면서 작업을 하는게 빠르냐..

아니면 하나를 중지 시키고 다른 하나를 시작하는게 빠르냐.. 하는 문제인듯 하다.


뭐 편한데로 하면 되겠지...




  *** 포석의 기본원칙 ***

 포석에는 여러 가지 원리와 요령이  있습니다. 기본적인 원칙은 다음과  같습니다.

 1. 빈 귀를 차지한다.

 2. 자기 귀를 굳히거나 상대방 귀에 걸친다.

 3. 귀가 끝나면 변의 큰 곳으로 향한다.

 4. 상대방 진을 방해할 때는 갈라치기를 한다.

 5. 변에서는 1립2전二展,  2립3전三展

 6. 큰 곳 점령이 끝나면 침입을 보며 적진에 다가서거나, 공격을 보며 벌리는 수를 둔다.

 7. 근거없는 불안한 돌을 만들지 말라.

 8. 적의 세력에는 접근하지 말라.

 9. 변의 포석이 끝나면 중앙 쪽으로 발전하며 진형을 키우는 것이 좋다.

 10. 한쪽으로 치우친 포석이나 저위선 이하치우친 포석은 재미없다.

 11. 뒷문 열린 집은 가치가 적다.

 12. 양날개는 이상적인 포진이다.


 그럼 지금부터 포석의 요령을 하나씩

 배워나가도록 하겠습니다.
 


파일을 암호화 시키는 가장 기본적인 방법입니다

블럭단위로 입출력을 하기 위해서 이진모드로 처리를 하겠습니다


암호화 / 복호화 되는 전체구조를 파악하기 위해서 제작되었으니 암호화 관련 학습이 아니더라도 아래의 내용을 학습하는데 도움이 되리라 판단됩니다

1. Const 선언과 활용법

2. Type문 및 레코드 처리

3. For~Next문

4. Binary I/O 및 Get,Put

5. Drive,Dir,File 컨트롤 활용


1. 초기화면을 살펴보겠습니다



2. 암호화를 한 화면입니다

처리할 폴더로 이동한 다음 파일을 선택하고 <암호화>를 누릅니다

그러면 아래와 같이 처리가 완료되었다는 메세지가 나옵니다



3. 원본 파일과 암호화된 파일의 내용을 보겠습니다






4. 소스 코드를 살펴보겠습니다


변수의 선언을 요구합니다

Option Explicit


임시로 사용할 파일입니다

Const TEMP_FILE = "C:\TEMPFILE.$$$"



암호화된 파일의 첫부분에 들어갈 문자열입니다

Const ID = "나만의 암호화 프로그램 V1.0"



암호화 키(KEY)입니다.     키를 확장하실려면 이부분을 배열로 선언하고 길이를 늘리면 됩니다

Const LOCK_CODE = &H13


암호화된 파일의 첫부분에 들어갈 구조입니다(파일헤더 입니다)

Private Type HEAD_RECORD

    ID As String * 50           내가 만든 암호화 데이터인지 확인할 식별 코드

    METHOD As Byte         암호화 방식(1: XOR) (2,3,.... 알고리즘 코드입니다)

End Type


Dim HEAD As HEAD_RECORD           HEAD_RECORD형을 갖는 변수 HEAD

Dim i%, cnt&

Dim data As Byte                                      파일에서 읽고/쓸때 필요한 바이트형 변수


-------------------------------------------------------------------------------------------

사용자 함수: 파일리스트에 있는 파일들을 전체선택/전체해제 합니다

선택: True-선택, False-해제

Private Sub 선택해제(선택 As Boolean)

    For i% = 0 To File1.ListCount - 1

        File1.Selected(i%) = 선택

    Next i%

End Sub


-------------------------------------------------------------------------------------------

Private Sub cmd모두선택_Click()

    Call 선택해제(True)

End Sub


-------------------------------------------------------------------------------------------

Private Sub cmd모두해제_Click()

    Call 선택해제(False)

End Sub


-------------------------------------------------------------------------------------------

선택된 파일을 복호화 합니다

Private Sub cmd복호화_Click()

    파일 리스트에 있는 파일들을 처리할려고 시도합니다

    ListIndex는 0부터니까 -1을 해줍니다

    For i% = 0 To File1.ListCount - 1


        선택된 파일만 처리합니다

        If (File1.Selected(i%)) Then


            선택된 파일을 읽기 전용으로 엽니다

            Open Dir1.Path & "\" & File1.List(i%) For Binary Access Read As #1

            Get #1, , HEAD


            내가 만든 암호화 파일인지를 검사하여 맞으면 처리합니다

            If (Left$(HEAD.ID, Len(ID)) = ID) Then


                임시파일을 쓰기 전용으로 엽니다

                Open TEMP_FILE For Binary Access Write As #2


                파일전체 길이에서 헤더길이를 뺀 길이만큼 수행합니다

                For cnt& = 1 To FileLen(Dir1.Path & "\" & File1.List(i%)) - Len(HEAD)


                    한바이트를 읽어옵니다

                    Get #1, , data


                    LOCK_CODE와 XOR 연산을 하여 임시파일에 저장합니다

                    data = data Xor LOCK_CODE

                    Put #2, , data

                Next cnt&


                열려있는 파일을 모두 닫습니다

                Close

           

                원본 파일을 삭제하고 임시파일을 원시파일로 이름 변경합니다

                Kill Dir1.Path & "\" & File1.List(i%)

                Name TEMP_FILE As Dir1.Path & "\" & File1.List(i%)

            Else

                내가 만든 암호화 파일이 아니면 처리하지 않습니다

                Close #1

            End If

        End If

    Next i%



    처리가 완료 되었으면 메세지를 출력합니다

    MsgBox "복호화 작업을 완료하였습니다", vbInformation, "정보"

End Sub


-------------------------------------------------------------------------------------------

선택된 파일을 암호화 합니다

주의: 암호화된 파일이 두 번 암호화 되지 않도록 하는것은 숙~~제 입니다

 

Private Sub cmd암호화_Click()

    HEAD.ID = ID    식별 코드 문자열입니다

                          가능한 길게 주어서 한 번 암호화된 파일이 두번 되지 않도록 합니다

    HEAD.METHOD = 1                  1(XOR 연산)  2(DES),3(SEED),4,... 255

   

    파일 목록에 있는 모든 파일을 처리할려고 시도합니다

    For i% = 0 To File1.ListCount - 1


        선택된 파일만 처리하도록 합니다

        If (File1.Selected(i%)) Then


            원본 파일을 읽기전용으로 엽니다

            Open Dir1.Path & "\" & File1.List(i%) For Binary Access Read As #1


            임시파일을 쓰기전용으로 엽니다

            Open TEMP_FILE For Binary Access Write As #2


            해더정보를 먼저 저장합니다

            Put #2, , HEAD


            원본 파일의 길이만큼 암호화 시킵니다

            For cnt& = 1 To FileLen(Dir1.Path & "\" & File1.List(i%))


                원본 파일에서 한바이트를 읽습니다

                Get #1, , data


                암호화 비트연산을 수행합니다

                data = data Xor LOCK_CODE


                임시파일에 저장합니다

                Put #2, , data

            Next cnt&


            열려있는 모든 파일을 닫습니다

            Close

           

            원본 파일을 삭제합니다

            Kill Dir1.Path & "\" & File1.List(i%)


            임시파일을 원본파일로 이름 변경합니다

            Name TEMP_FILE As Dir1.Path & "\" & File1.List(i%)

        End If

    Next i%

   

    처리가 완료되었다는 메세지를 보여줍니다

    MsgBox "암호화 작업을 완료하였습니다", vbInformation, "정보"

End Sub


-------------------------------------------------------------------------------------------

프로그램을 종료합니다

Private Sub cmd종료_Click()

    End

End Sub


-------------------------------------------------------------------------------------------

드라이브가 변경되었을때 처리

Private Sub Drive1_Change()

    On Error GoTo ERROR_DRIVE

   

    Dir1.Path = Drive1.Drive

    Exit Sub

   

드라이브를 변경했는데, 오류가 나면 여기로 옵니다

A:드라이브에 디스켓이 없는 경우,CD_ROM 드라이브에 CD가 없는 경우등 입니다

ERROR_DRIVE:

    MsgBox Err.Description, vbCritical, "오류"

End Sub


-------------------------------------------------------------------------------------------

다른 폴더가 선택이 되었을때 처리

Private Sub Dir1_Change()

    File1.Path = Dir1.Path

End Sub


-------------------------------------------------------------------------------------------

시작 함수

Private Sub Form_Load()

    폼을 화면의 중앙에 위치하도록 합니다

    Left = (Screen.Width - Me.Width) / 2

    Top = (Screen.Height - Me.Height) / 2

End Sub




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

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

5. 여러분이 확장할 수 있는 부분들입니다


(1) 해더부분에 여러분의 정보등 기타 정보들을 넣을 수 있습니다

(2) 속도 개선을 위하여 블럭단위(배열이용)로 입출력합니다

(3) 암호화 알고리즘(SEED,DES,....R...)을 접목할 수 있으며, 알고리즘을 선택하도록 할 수도 있습니다

(4) 하위 폴더까지 처리를 할 수 있습니다

(5) 암호화 키의 자릿수를 확장할 수 있습니다


감사합니다

강좌의 원본페이지: http://www.complus.pe.kr/lecture/vb/VB_fileio_09.html

출처 : 데브피아

Set DBrec = CreateObject("ADODB.RecordSet")
lsSql = " SELECT 어쩌구 저쩍 "

DBRec.Open lsSql, DBcon

(중략)

pBar.Min = 0
pBar.Max = DBrec.RecordCount

(하략)


ㅇㅋ.. F5 를 눌러서 실행....



잉??? 오류???

ProgressBar 컨트롤에 Max값 지정이 잘 못됐단다...


디버깅..


잉??? RecordCount 값이 -1나온다...

아하.

DBRec.Open lsSql, DBcon, 1

다시..


똑같다.

DBRec.Open lsSql, DBcon, 2

다사..

또 똑같다.


젠장..


다시..

DBRec.Open lsSql, DBcon, 3

얼레..


장난치나....



MSDN에도 제대로 왜 그런지 안나온다.

이상하다.

젠장...




네이버 검색...



헐...

Dbrec.CursorLocation = adUseClient
Dbrec.CursorType = adOpenKeyset
Dbrec.Open lsSql, DBCon

이런식으로 해주어야 한단다.

예전에도 그랬었나??? 훔..

기억이 가물가물...

웹언어에 너무 젖어 있었나 보다. 쩝...



반성 반성..



<span id="spantitle" style="width:1000; overflow:hidden;">

  <table width="1280" border="1" cellpadding="" cellspacing="" class="ta01">


  </table>

</span>



<span id="spanmain" style="width:1017;height:520;overflow:scroll;" onScroll="spantitle.scrollLeft=this.scrollLeft;">

  <table width="1280" border="1" cellspacing="" cellpadding="">


  </table>

</span>



위의 span 은 제목요소를

아래의 span 은 내용을...


이런식일 경우 x축 스크롤바를 좌우로 이동할때엔 제목도 함께 움직이지만,

y축의 스크롤바를 위아래로 이동하게 될때는(내용이 많을시) 제목은 고정되고 내용이 담긴부분만 아래 위로 움직인다.


overflow:hidden   // span의 width보다 table의 width가 더 크다. 당연히 overflow된다.

                             그 부분은 화면에 보여지지 않게 하기위함.


span id="spanmain" 부분에 overflow:scroll  // overflow될 경우 스크롤바 나타냄을 의미한다.

                                                                 overflow-y:scroll : y축의 스크롤바만...


onScroll 이벤트 : 아래의 스크롤이 움직일때 spantitle(제목부분)도 움직임을 의미



출처 : http://blog.naver.com/shm98?Redirect=Log&logNo=50012007496

+ Recent posts