"uses or overrides a deprecated API."

저딴 오류가 발생한다면..

자바 버전이 올라가면서 특정 명령어가 안돌아 간다는 것을 의미한다.



나 같은 경우는..


String encodeStr = URLEncoder.encode("특수&문자");

이 부분이 문제가 되었다.

String encodeStr = URLEncoder.encode("특수&문자","UTF-8");


이렇게 변경해서 해결 완료...

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

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


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

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

IE execCommand() 의 명령어 목록 | JavaScript

태그::스크립트

2007/02/16 03:49

2D-Position 항상 드래그로 위치된 엘레멘트의 이동시킬 수 있다.
AbsolutePosition 엘레멘트의 위치(position)를 절대위치(absolute)로 설정한다.
BackColor 현재 선택의 배경색을 지정하거나 반환한다.
Bold 현재의 선책을 굵은 글자(bold)나 굵지않은 글자로 전환한다.
ClearAuthenticationCache 캐쉬(cache)의 모든 내용을 지운다. execCommand에서만 사용이 가능하다.
Copy 현재의 선택한 내용을 클립보드로 복사한다.
CreateBookmark 현재 선택이나 삽입 포인트의 anchor 혹은 북마크의 상대 이름 앤커로 북파크(bookmark)를 생성한다.
CreateLink 현재 선택에 주소 연결(hyperlink)을 삽입하거나, 주소를 입력하여 삽입할 수 있는 대화창을 열어준다.
Cut 현재의 선택한 내용을 클립보드로 복사하고 선택 내용을 지운다.
Delete 현재 선택을 삭제한다.
FontName 현재 선택의 글꼴을 지정하거나 반환한다.
FontSize 현재 선택의 글꼴 크기를 지정하거나 반환한다.
ForeColor 현재 선택의 글꼴 색상(foreground)을 지정하거나 반환한다.
FormatBlock 현재 블럭의 태그를 설정한다.
Indent 현재 선택 문자를 한 증가분 만큼 뒤로 들여쓰기 한다.
InsertButton 사용자나 메서드에 의하여 선택된 단추(button)의 보이는 내용을 삽입한다. selection 개체 createRange 메서드를 사용하여 선택한 문자를 반환하거나 설정할 수 있다.
InsertFieldset 문자 선택(text selection)의 박스를 삽입한다.
InsertHorizontalRule 문자 선택(text selection)의 수평선(HR)을 합입한다.
InsertIFrame 문자 선택(text selection)의 인라인 프레임(IFRAME)을 삽입한다.
InsertImage 문자 선택(text selection)의 이미지(IMAGE)를 삽입한다.
InsertInputButton 문자 선택(text selection)의 단추(BUTTON)를 삽입한다.
InsertInputCheckbox 문자 선택(text selection)의 체크박스(CHECKBOX)를 삽입한다.
InsertInputFileUpload 문자 선택(text selection)의 파일업로드(FileUpload)를 삽입한다.
InsertInputHidden 문자 선택(text selection)의 감춘단추(HIDDEN)를 삽입한다.
InsertInputImage 문자 선택(text selection)의 이미지(IMAGE) 제어를 덮어씌우기한다.
InsertInputPassword 문자 선택(text selection)의 암호(PASSWORD) 제어를 덮어씌우기한다.
InsertInputRadio 문자 선택(text selection)의 레디오단추(RADIO) 제어를 덮어씌우기한다.
InsertInputReset 문자 선택(text selection)의 재설정(RESET) 제어를 덮어씌우기한다.
InsertInputSubmit 문자 선택(text selection)의 송신(SUBMIT) 제어를 덮어씌우기한다.
InsertInputText 문자 선택(text selection)의 문자열입력(TEXT) 제어를 덮어씌우기한다..
InsertMarquee 문자 선택(text selection)의 빈 마퀴(MARQUEE)를 덮어씌우기한다..
InsertOrderedList 문자 선택(text selection)의 번호있는 목록(OL)과 보통 블럭간의 전환을 한다.
InsertParagraph 문자 선택(text selection)의 줄바꿈(BR)을 덮어씌우기한다.
InsertSelectDropdown 문자 선택(text selection)의 드롭다운 제어를 덮어씌우기한다.
InsertSelectListbox 문자 선택(text selection)의 목록박스 선택 제어를 덮어씌우기한다.
InsertTextArea 문자 선택(text selection)의 여러 줄 텍스트 입력 제어를 덮어씌운다..
InsertUnorderedList 문자 선택(text selection)을 번호있는 목록과 일반 블럭 양식을 서로 교차시킨다.
Italic 문자 선택(text selection)에서 이태릭(italic) 문자와 보통 문자간 전환한다.
JustifyCenter 문자 선택(text selection)이 위치한 불럭에서 중앙에 위치시킨다.
JustifyLeft 문자 선택(text selection)이 위치한 불럭에서 왼똑에 위치시킨다.
JustifyRight 문자 선택(text selection)이 위치한 불럭에서 오른쪽에 위치시킨다.
LiveResize 위치 변경과 크기 변경에 따라 업데이트 뿐 아니라, 과정 중 계속적으로 모양을 유지위하기 업데이트를 한다.
MultipleSelection 예를 들어 편집기의 이미지와 제어를 하나의 엘레멘트처럼, 한개 이상의 엘레멘트를 선택할 수 있게 허용한다. 지명적이거나 암시적으로 속성이 지정된 엘레멘트는 한번에 SHIFT 나 CTRL로 선택될 수 있다.
Outdent 문자 선택(text selection)의 현위치에서 들어쓰기 한 증가분 만큼 왼쪽으로 내어쓰기 한다.
OverWrite 문자 입력 방식과 덮어쒸우기 방식 사이를 전환한다.
Paste 문자 선택(text selection)을 클립보드 내용으로 덮어씌우기 한다.
Print 사용자가 편재의 문서를 인쇄할 수 있도록 인쇄 대화상자를 열어 준다.
Refresh 현재의 문서를 새로고침 한다..
RemoveFormat 현재 선택 문자로 부터 태그들을 제거한다.
SaveAs 현재의 문서를 파일로 저장한다.
SelectAll 전체 문서를 선택한다.
UnBookmark 현재의 선택으로부터 북마크의 어떤 내용을 삭제한다.
Underline 현재 선택 문자에서 밑줄 그어진 부분과 밑줄 없는 부분 사이를 전환한다.
Unlink 현재 선택 문자에서 모든 연결을 삭제한다.
Unselect 현재 선택 문자을 취소한다.



Mozilla execCommand() 명령어 목록


command value explanation / behavior
backcolor ???? This command will set the background color of the document.
bold none If there is no selection, the insertion point will set bold for subsequently typed characters.

If there is a selection and all of the characters are already bold, the bold will be removed.  Otherwise, all selected characters will become bold.
contentReadOnly true
false
This command will make the editor readonly (true) or editable (false).  Anticipated usage is for temporarily disabling input while something else is occurring elsewhere in the web page.
copy none If there is a selection, this command will copy the selection to the clipboard.  If there isn't a selection, nothing will happen.

note: this command won't work without setting a pref or using signed JS.  See: http://www.mozilla.org/editor/midasdemo/securityprefs.html

note:  the shortcut key will automatically trigger this command (typically accel-C) with or without the signed JS or any code on the page to handle it.
createlink url (href) This command will not do anything if no selection is made.  If there is a selection, a link will be inserted around the selection with the url parameter as the href of the link.
cut none If there is a selection, this command will copy the selection to the clipboard and remove the selection from the edit control.  If there isn't a selection, nothing will happen.

note: this command won't work without setting a pref or using signed JS.  See: http://www.mozilla.org/editor/midasdemo/securityprefs.html

note:  the shortcut key will automatically trigger this command (typically accel-X) with or without the signed JS or any code on the page to handle it.
decreasefontsize none This command will add a <small> tag around selection or at insertion point.
delete none This command will delete all text and objects that are selected.
fontname ???? This command will set the fontface for a selection or at the insertion point if there is no selection.
fontsize ???? This command will set the fontsize for a selection or at the insertion point if there is no selection.
forecolor ???? This command will set the text color of the selection or at the insertion point.
formatblock <h1>
<h2>
<h3>
<h4>
<h5>
<h6>
<pre>
<address>
<p>
p
[this list may not be complete]

heading <h1>
<h2>
<h3>
<h4>
<h5>
<h6>

hilitecolor ???? This command will set the hilite color of the selection or at the insertion point.  It only works with usecss enabled.
increasefontsize none This command will add a <big> tag around selection or at insertion point.
indent none Indent the block where the caret is located.
inserthorizontalrule none This command will insert a horizontal rule (line) at the insertion point.

Does it delete the selection?
inserthtml valid html string This command will insert the given html into the <body> in place of the current selection or at the caret location.
insertimage url (src) This command will insert an image (referenced by url) at the insertion point.

Does it delete the selection?
insertorderedlist none
insertunorderedlist none
insertparagraph none
italic none If there is no selection, the insertion point will set italic for subsequently typed characters.  

If there is a selection and all of the characters are already italic, the italic will be removed.  Otherwise, all selected characters will become italic.
justifycenter none
justifyfull none
justifyleft none
justifyright none
outdent none Outdent the block where the caret is located.  If the block is not indented prior to calling outdent, nothing will happen.

note:  is an error thrown if no outdenting is done?
paste none This command will paste the contents of the clipboard at the location of the caret.  If there is a selection, it will be deleted prior to the insertion of the clipboard's contents.

note: this command won't work without setting a pref or using signed JS.
user_pref("capability.policy.policynames", "allowclipboard"); user_pref("capability.policy.allowclipboard.Clipboard.paste", "allAccess");
See: http://www.mozilla.org/editor/midasdemo/securityprefs.html

note:  the shortcut key will automatically trigger this command (typically accel-V) with or without the signed JS or any code on the page to handle it.
redo none This command will redo the previous undo action.  If undo was not the most recent action, this command will have no effect.

note:  the shortcut key will automatically trigger this command (typically accel-shift-Z)
removeformat none
selectall none This command will select all of the contents within the editable area.

note:  the shortcut key will automatically trigger this command (typically accel-A)
strikethrough none If there is no selection, the insertion point will set strikethrough for subsequently typed characters.

If there is a selection and all of the characters are already striked, the strikethrough will be removed. Otherwise, all selected characters will have a line drawn through them.
styleWithCSS true
false
This command is used for toggling the format of generated content.  By default (at least today), this is true.  An example of the differences is that the "bold" command will generate <b> if the styleWithCSS command is false and generate css style attribute if the styleWithCSS command is true.
subscript none If there is no selection, the insertion point will set subscript for subsequently typed characters.  

If there is a selection and all of the characters are already subscripted, the subscript will be removed.  Otherwise, all selected characters will be drawn slightly lower than normal text.
superscript none If there is no selection, the insertion point will set superscript for subsequently typed characters.

If there is a selection and all of the characters are already superscripted, the superscript will be removed.  Otherwise, all selected characters will be drawn slightly higher than normal text.
underline none If there is no selection, the insertion point will set underline for subsequently typed characters.

If there is a selection and all of the characters are already underlined, the underline will be removed.  Otherwise, all selected characters will become underlined.
undo none This command will undo the previous action.  If no action has occurred in the document, then this command will have no effect.

note:  the shortcut key will automatically trigger this command (typically accel-Z)
unlink none

DEPRECATED COMMANDS
readonly true
false
This command has been replaced with contentReadOnly.  It takes the same values as contentReadOnly, but the meaning of true and false are inversed.
useCSS truefalse This command has been replaced with styleWithCSS.  It takes the same values as styleWithCSS, but the meaning of true and false are inversed.

출처 : Tong - heart2heart님의 web개발통




단... 위사항들은 IE7에서는 제한된다는... 사실... -_-;;;

<HTML>
<BODY>
<b>
  <font color="maroon" unselectable="on">문자열 중 원하는 부분 선택 후 아래 버튼 클릭!</font>
</b>
<script language='JavaScript'>
<!--
function AddLink() {
  /*******************************************************************
    사용자가 선택한 문자열을 변수로 저장한다.
  *******************************************************************/
  var sText = document.selection.createRange();
  if (!sText==""){
    /*******************************************************************
      "하이퍼링크" 메뉴를 실행시킨다.
    *******************************************************************/
    document.execCommand("CreateLink");
    /*******************************************************************
      sText.parentElement()는 사용자가 선택한 문자열에 대한 패런트 요소를 얻어 온다.
      이미 "하이퍼링크" 대화 상자에서 입력한 값이 이 요소에 반영되었으므로,
      이 값의 tagName 속성이 "A"일 경우 계속 진행한다.
    *******************************************************************/
    if (sText.parentElement().tagName == "A"){
      /*******************************************************************
        사용자가 선택한 문자열의 내용을 새로 추가시킨 하이퍼링크 주소로 대치시킨다.
        만일 이 코드를 주석으로 막으면 사용자가 선택한 문자열에 하이퍼 링크 속성만 추가된다.     
      *******************************************************************/
      sText.parentElement().innerText=sText.parentElement().href;
      /*******************************************************************
        전경색을 "maroon" 색으로 변경시킨다.
      *******************************************************************/
      document.execCommand("ForeColor","false","maroon");
    }   
  }
  else{
    alert("문자열의 일부를 선택한 후 이 버튼을 클릭하세요!");
  }
}
//-->
</script>
<p style="color=blue">
사용자가 선택한 문자열 중 원하는 부분 선택 후 아래 버튼을 클릭하면,
링크를 만들수 있습니다.
</p>
<BUTTON onclick="AddLink()" unselectable="on">링크 만들기</BUTTON>
</BODY>
</HTML>



document.execCommand 에 대해서 좀더 알아봐야 겠다. 쩝...



출처 : http://tong.nate.com/heart2heart/34130212
다차원 배열을 잘 안쓰다 보니..

잘 몰랐었나 보다.




dim jijanggan_num_tbl
jijanggan_num_tbl= array(array( 0, 1, 8, 9, 6, 7, 4, 5, 2, 3),array( "a", "b", "c", "d", "e", "f", "g", "h", "i"))



for i=0 to 1
for j=0 to 8
Response.Write jijanggan_num_tbl(i)(j) + ", "
Next
Response.Write "
"
Next


이렇게 썼었네..

첨 공부할때는 했던건데.. 영.. 쩝.


(1,1) 이게 아니라.. (1)(1) 이거였구나.

훔..
얼마만에 포스팅인지..

11월 4일날 쓰던글을 오늘 마무리 짓는다.

반성.. 반성..

ㅇ. ASP.NET?
-> 웹 응용프로그램을 위한 웹 개발 플랫폼
-> 컴파일된 .NET 기반의 환경 (.NET과 호환되는 모든 언어를 이용)
-> 폼 기반의 웹응용프로그램
-> 웹서비스 (Http, XML)

-> ASP.NET 구조
Web Client > IIS > ASP.NET, .NET FrameWork


ㅇ. ASP.NET 웹 응용프로그램 작성

ㅇ. 웹 폼
-> ASP.NET 기술을 사용
-> 프로그램 가능한 웹 페이지
-> 코드와 페이지 디자인을 분리
-> WYSIWYG 편집
-> 정보를 표현 (모든 브라우져 지원, 비지니스로직은 서버단에 구현)
-> .NET 기반의 모든 언어를 이용 가능

-> 코드 모델
: 두가지 요소로 구성 (시각적인 부분과 코드)
: 화면 디자인은 HTML과 웹 폼 컨트롤로 구성 (.aspx 파일)
: 코드는 별도의 클래스 파일이나 .aspx 파일내에 존재

-> 웹폼 서버 컨트롤
: HTML 서버 컨트롤 (모든 브라우져 지원)
: ASP.NET 서버 컨트롤 (기타 고급 기능들)
: 검증을 위한 서버 컨트롤
: 사용자 컨트롤

ㅇ, 데이터 접근 방법
-> 기존에 asp에서 사용하던 방식과 동일
-> 개체 모델이 수정되었다. (ADO.NET)
-> 데이터베이스 사용
: SQLConnection
: SQLDataSetCommand
: DataSet
: DataWiew

: SQL~은 MS-SQL 7.0 이상버전에 사용
: ADO~는 OLEDB로 붙을수 있는 모든 데이터에 이용

ㅇ. 웹 서비스
-> 인터넷 프로토콜로 사용가능한 비지니스 로직
-> HTTP, XML을 이용한 데이터 교환
-> 모든 언어, 모든 컴포넌트 모델, 모든 플랫폼을 지원
ㅇ. 서비스 응용프로그램의 특징
-> 일반적인 응용프로그램과는 다르다.
-> 컴파일된 실행파일은 반드시 서버에 설치
-> 디버그 하거나 서비스 프로그램을 직접 실행시클수 없음
-> 서비스 응용프로그램을 위한 설치 프로그램을 만들어야함

ㅇ. 윈도우 서비스 프로그램의 작성
-> 윈두우 서비스 프로젝트 선택
-> 서비스 이름지정 (ServiceName 속성)
-> 속성에 대한 서비스 여부 결졍
: CanStop
: CanShupDown
: CanPauseAndContinue
: AutoLog

ㅇ. ServiceController
-> 기존에 설치되어 있는 서비스와 연결
-> 서비스 시작, 중지, 정지 등을 제어
-> ServiceController 컴포넌트 작성
: 도구상자에서 추가
: 코드안에서 ServiceController 클래스의 인스턴스를 만들어서 사용
: ServiceName (동작하는 서비스)
: MachineName ("."은 현재 머신.. 리모트 머신은 머신명 기입)

ㅇ. 서비스 프로그램의 시작
-> 서비스 클래스의 OnStart 메서드를 호출
-> InstallUtil.exe를 사용하여 서비스를 설치한 후 시작
-> 개발환경에서 시작할 경우 오류 메세지 표시

ㅇ. 서비스 정보 로깅
-> 응용프로그램 이벤트 로그에 정보를 기록
-> AutoLog 속성을 지정 (기본 : True)
-> EventLog 개체를 사용하여 정보와 오류를 기록
: EventLog.WriteEntry("String")
-> 이벤트 소스로 등록하지 않아도 됨
: EventLog.CreateEventSource()없이도 로그 사용

ㅇ. 서비스 프로그램 디버깅
-> 서비스 응용프로그램은 직접 디버깅이 안됨
-> 디버깅 방법
: 서빗르를 시작한다.
: 서비스가 동작하는 프로세스에 디버거를 붙인다.
: 다른 응용프로그램 처럼 디버깅 한다.

ㅇ. 설치 컴포넌트
-> 서비스의 디자인 모드를 선택하여 설치 컴포넌트를 추가(마우스 왼쪽클릭 팝업 메뉴)
-> Add Installer를 선택
: ProjectInstaller라는 클래스 추가
: ServiceProcessInstaller, ServiceInstallerX가 추가
-> 필요한 속성을 수정, 필요한 메서드 오버라이드
ㅇ. VB6.0과의 차이점
-> OLEDrag(Drop)Mode 속성 사용 (수동 or 자동)

ㅇ. Drag & Drop을 처리하기 위한 이벤트
-> .NET 프레임워크에서 제공하는 끌어놓기 메커니즘을 이용
-> .NET 프레임워크의 DragEventArgs 클래스를 이벤트 핸들러의 파라미터로 사용
-> DragDrop(개체위에 마우스를 Drop한 상태)
, DragEnter(개체위에 Drag로 진입상태)
, DragLeave(개체위에 Drag로 벗어나는 상태)
, DragOver(오브젝트를 마우스를 누른상태에서 올려져 있는 상태)
-> Beta1에서는 완전하지 않음

-> 선택한 개체를 마우스로 끌어서 다른 개체 위에 올려 놓는 것
예) Form, TextBox, PictureBox 위에 파일을 끌어다 올려 놓는다.
: AllowDrop 속성을 설정
: Drag & Drop 처리를 위한 이벤트 핸들러를 구성

Public Sub PictureBox1_DragDrop(ByVal sender AS Object, _
ByVal e As System.Winforms.DragEventArgs)
Handles PictureBox1.DragDrop

'코드 작성
End Sub


ㅇ. System.WinForms.DragEventArgs
-> DragDrop...... 등등의 이벤트에 대한 데이터를 제공 (e)
-> 주요 속성
: AllowEffect
: Data (실제 넘어온 데이터 포멧-어떤데이터인지...)
: Effect (Target 객체가 속성을 지원하는지...)
: KeyState (Shift 혹은 Ctrl, Alt 키등이 눌렸는지)
: X, Y (화면상의 좌표)


ㅇ. Drag & Drop을 구현하려면
-> Drag & Drop의 Source와 Target을 결정한다.
-> DragDrop 이벤트 핸들러를 구성한다.
-> DragEventArgs에서 제공하는 데이터를 활용한다.

+ Recent posts