반응형

윈도우 서버 2008 을 사용하다 보면 부팅시에 서버관리자가 실행되서 귀찮은 경우가 많습니다.
저는 한번 켜놓은 서버를 다시 설정할 일이 거의 없기에 과감히 윈도우 시작시에 서버 관리자를 실행하지 않도록 하기로 결심했습니다^^ㅋ

1. 먼저 [시작 메뉴] - [실행] - gpedit.msc 를 실행하여 그룹 정책 편집기를 겹니다 !



2. 편집기에서 [로컬 컴퓨터 정책] - [컴퓨터 구성] - [관리 템플릿] - [시스템] 에서
   "로그온 시 서버 관리 페이지를 표시 안 함" 을 찾아서 상태를 "사용" 으로 바꿔 줍니다!!!



 


이제는 윈도우 시작 시에 귀찮은 서버 관리 페이지를 보지 않아도 되겠군요^^ㅋㅋ

 

 

반응형
반응형


특수기호??

#$%$&^@#$^#$%$#@!$%#^$^%$
#  도대체 이건 뭥미?

프로그래밍을 하다보면 여러 특수 기호를 사용하게 되는데, 보통 @는 '골뱅이' 처럼 부르기 편한 말이 있지만 $,& 같은 기호들은 마땅히 부를 우리말이 없을 뿐더러 원래의 명칭도 잘 모르는 경우가 많습니다. 이번 포스트에서 이런 기호들의 영어 명칭이 무엇인지 알아보겠습니다.

 기호  명칭  기호  명칭
 !  Exclamation Point _ Underscore
 " "  Double Quotation Mark  :  Colon
 ' ' Single Quotation Mark   ;  Semicolon
 #  Crosshatch  ^  Circumflex
 $  Dollar Sign  `  Grave
 %  Percent Sign  {  Left Brace(Open Brace)
 @  At Sign  }  Right Brace(Close Brace)
 &  Ampersand  [  Left Braket(Open Braket)
 *  Asterisk  ]  Right Braket(Close Braket)
 -  Hyphen  (  Left Parenthesis(Open ..)
 . Period   )  Right Parenthesis(Close ..)
 ,  Comma  |  Vertical Bar
 /  Slash  ~  Tilde
 \ Back Slash   ' Apostrophe 

위 표에 적힌 명칭도 중요하겠지만 가장 중요한건 기호를 보고 어떤 의미의 기호인지 이해하는 것이 아닌가 하는 생각이 듭니다.

반응형
반응형

리스트 뷰(ListView)는  어댑터 뷰(AdapterView)의 대표 위젯으로서 항목들을수직으로 펼쳐서 보여줍니다.
다른 위젯들 역시 동작 방식이 유사하기 때문에 리스트 뷰만 잘 공부해도 나머지는 쉽게 익힐 수 있습니다.

문자열을 리스트 뷰에 출력해 보겠습니다.


layout/listtest.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:orientation="vertical"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent">
 
  <ListView
   android:id="@+id/list"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
   />
      
</LinearLayout>
리니어레이아웃 안에 리스트 뷰 위젯 하나만 배치하고 코드에서 어댑터와 연결하기 위해 리스트 뷰를 참조할 것이므로 list라는 이름으로 id를 줬습니다.


src/TestAdapterViewActivity.java
package net.test.TestAdapterView;
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
public class TestAdapterViewActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.listtest);
       
        //배열 데이터
        ArrayList<String> BMENTmember = new ArrayList<String>();
        BMENTmember.add("창환");
        BMENTmember.add("상종");
        BMENTmember.add("슬기");
        BMENTmember.add("예지");
        BMENTmember.add("소정");
       
        //어댑터 준비
        ArrayAdapter<String> Adapter;
        Adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, BMENTmember);
       
        //어댑터 연결
        ListView list = (ListView)findViewById(R.id.list);
        list.setAdapter(Adapter);       
    }
}
리스트 뷰에 표시한 데이터 원본은 ArrayList 객체에 생성하고  그 다음 데이터와 리스트 뷰를 연결해 중 어댑터를 생성했습니다. 항목들이 모두 문자열이니 ArrayAdapter가 가장 적합 하겠죠?

성공!! 다음과 같은 결과가 출력됩니다.!!

배열을 원본으로 사용할 때는 다음 생성자로 어댑터를 초기화 합니다.
ArrayAdapter(Context context, int textViewResourceId, List<T> objects)
ArrayAdapter(Context context, int textViewResourceId, T[] objects)
첫 번째 Context 인수에는 액티비티를 넘겨주면되고, 두 번째 인수는 항목을 표시할 레이아웃의 리소스ID입니다. 세 번째는 원본 데이터겠지요? List 인터페이스를 지원하는 컬렉션 객체(ArrayList, LinkedList, Stack 등)와 단순 배열 두 가지 타입에 대해 오버라이딩되어 있습니다.

두 번째 인수에 들어갈 레이아웃의 리소스 ID는 시스템이 목록용으로 미리 정의해 놓은 것이므로 android.R 뒤에 ID만 다음과 같은 지정하면 됩니다.

 리소스 ID  설명
 simple_list_item_1  하나의 텍스트 뷰로 구성된 레이아웃
 simple_list_item_2   두개의 텍스트 뷰로 구성된 레이아웃
 simple_list_item_checked  오른쪽에 체크 표시가 나타남
 simple_list_item_single_choice  오른쪽에 라이오 버튼이 나타남
 simple_list_item_multiple_choice  오른쪽에 체크 박스가 나타남

기본으로 제공되는 것 외에 더 복잡한 모양으로 레이아웃을 정의하고 싶으면 커스텀 뷰를 만들어야 합니다.


 

반응형

'컴퓨터&IT > 안드로이드 Android' 카테고리의 다른 글

Android - HttpURLConnection 클래스  (0) 2011.08.24
Android - HTTP로 웹에 접근하기!!  (0) 2011.08.24
Android - 어댑터 뷰(AdapterView)  (0) 2011.08.24
Android - 어댑터(Adapter)  (1) 2011.08.24
Android - Activity  (0) 2011.08.24
반응형

어댑터 뷰(AdapterView)는 같은 종류의 뷰들을 특정한 방식으로 반복해서 보여주는데 적합하며, ListView, GridView, Gallery, Spinner가 그런 뷰 컨테이너 위젯에 속합니다.

ListView
뷰 객체들을 수직 방향의 목록 형태로 보여줍니다. 수직 스크롤을 지원하며 일반적으로 목록의 각 항목은 자료를 담은 뷰이고, 사용자는 목록의 한 항목을 선택해서 일정한 작업을 수행합니다.

GridView
뷰 객체들을 고정된 개수의 열들로 이루어진 격자(Grid) 형태(2차원의 표 형태)로 배치합니다. 격자의 각 칸에 이미지 아이콘이 배치되는 경우가 많으며 사용자는 한 항목을 선택해서 일정한 작업을 수행합니다.

Gallery
뷰 객체들을 수평 방향의 목록 형태로 표시합니다. 수평 스크롤을 지원하며 이미지를 표시하는데 흔히 쓰입니다. 사용자는 한 항목을 선택해서 일정한 작업을 수행합니다.

Spinner
목록을 표시한다는 면에서 리스트뷰와 용도가 동일하나 ListView는 항상 펼쳐져 있는데 비해 Spinner는 클릭할 때만 팝업으로 펼쳐집니다. 흔히 콤보박스라고 부르는 컨트롤이 바로 Spinner 위젯이며 화면지 좁은 모바일 환경에서 면적을 적게 차지하는 장점이 있지만 목록을 보려면 팝업을 열어야 하는 단점이 있습니다.


위의 컨테이너 위젯들은 모두 AdapterView 클래스에서 파생된 것이며 AdapterView는 Adapter객체를 통해 특정 데이터 소스로부터 가져온 자료들로 자식 뷰들을 만들어서 부모 컨테이너에 채워 넣을 수 있도록 합니다.

반응형

'컴퓨터&IT > 안드로이드 Android' 카테고리의 다른 글

Android - HTTP로 웹에 접근하기!!  (0) 2011.08.24
Android - 리스트 뷰(ListView)  (0) 2011.08.24
Android - 어댑터(Adapter)  (1) 2011.08.24
Android - Activity  (0) 2011.08.24
Android 인터페이스  (0) 2011.08.24
반응형

어댑터 (Adapter)

어댑터는 데이터를 사용자 인터페이스 뷰와 바인드하는 브리징 클래스 입니다. 어댑터는 각 항목을 표현하는데 사용되는 자식 뷰 생성과 하부에 놓은 데이터에 대한 접근 제공을 담당합니다.

어댑터 바인딩을 지원하는 사용자 인터페이스 컨트롤은 반드시 어댑터 뷰(AdapterView) 추상 클래스를 확장해야 합니다. 그리고 자신만의 어댑터 뷰(AdapterView) 파생 컨트롤을 만들고, 이들을 바인드하기 위한 새로운 어댑터 클래스를 만드는 것이 가능합니다.




어댑터는 데이터를 공급하는 것과 각 항목을 나타내는 뷰를 선택하는 것 모두를 담당하기 때문에 반인드된 컨트롤의 겉모습과 기능을 획기적으로 바꿀 수 있습니다.


어댑터는 원본 데이터를 항목 뷰를 만들어 어댑터 뷰의 항목으로 보여줍니다.


안드로이드가 제공하는 몇가지 어댑터
 ArrayAdapter
ArrayAdapter는 어댑터 뷰 객체를 배열에 바인드하는 일반적인 클래스입니다. 기본 적으로 각 객체의 toString 값을 레이아웃 내에 정의된 TextView 컨트롤에 바인드 합니다.

SimpleCursorAdapter
SimpleCursorAdapter는 뷰를 컨텐트 공급자 질의를 통해 리턴된 커서에 바인드 합니다. XML 레이아웃 정의를 지정한 뒤, 결과 셋의 각 열에 있는 값을 이 레이아웃에 있는 값에 바인드 합니다.
반응형

'컴퓨터&IT > 안드로이드 Android' 카테고리의 다른 글

Android - 리스트 뷰(ListView)  (0) 2011.08.24
Android - 어댑터 뷰(AdapterView)  (0) 2011.08.24
Android - Activity  (0) 2011.08.24
Android 인터페이스  (0) 2011.08.24
Android application의 구조와 Life cycle  (0) 2011.08.24
반응형

◆ ENTITY
선언해 놓은 엔티티의 이름을 속성 값으로 지정할 수 있게 해줍니다.
예를 들면 외부 이미지 파일을 참조하는 SNAPSHOT1이라는 이름의 엔티티를 선언해 놓고 IMAGE라는 이름의 속성을 만들어서 SNAPSHOT1이라는 인티티 이름을 지정할 수 있습니다.
<?xml version = "1.0" standalone="yes"?>
<!DOCTYPE DOCUMENT [                           
<!ELEMENT DOCUMENT (CUSTOMER)*>                
<!ELEMENT CUSTOMER (NAME,DATE,ORDERS)>         
<!ELEMENT NAME (LAST_NAME,FIRST_NAME)>           
<!ELEMENT LAST_NAME (#PCDATA)>                  
<!ELEMENT FIRST_NAME (#PCDATA)>                 
<!ELEMENT DATE (#PCDATA)>                      
<!ELEMENT ORDERS (ITEM)*>                      
<!ELEMENT ITEM (PRODUCT,NUMBER,PRICE)>         
<!ELEMENT PRODUCT (#PCDATA)>                   
<!ELEMENT NUMBER (#PCDATA)> 
<!ELEMENT PRICE (#PCDATA)>                     
<!ATTLIST CUSTOMER
    IMAGE ENTITY #IMPLIED>
<!ENTITY SNAPSHOT1 SYSTEM "image.gif">
]>
<DOCUMENT>
    <CUSTOMER IMAGE="SNAPSHOT1">
.
.
.
    </CUSTOMER>
</DOCUMENT>

◆ ENTITIES
ENTITIES는 공백으로 구분된 엔티티 이름의 목록을 가질 수 있습니다.
같은 속성에 여러 개의 엔티티를 할당하기 위해서 사용합니다.
<?xml version = "1.0" standalone="yes"?>
<!DOCTYPE DOCUMENT [
<!ELEMENT DOCUMENT (CUSTOMER)*>
<!ELEMENT CUSTOMER (NAME,DATE,ORDERS)>
<!ELEMENT NAME (LAST_NAME,FIRST_NAME)>
<!ELEMENT LAST_NAME (#PCDATA)>
<!ELEMENT FIRST_NAME (#PCDATA)>
<!ELEMENT DATE (#PCDATA)>
<!ELEMENT ORDERS (ITEM)*>
<!ELEMENT ITEM (PRODUCT,NUMBER,PRICE)>
<!ELEMENT PRODUCT (#PCDATA)>
<!ELEMENT NUMBER (#PCDATA)>
<!ELEMENT PRICE (#PCDATA)>
<!ATTLIST CUSTOMER
IMAGES ENTITY #IMPLIED>
<!ENTITY SNAPSHOT1 SYSTEM "image.gif">
<!ENTITY SNAPSHOT2 SYSTEM "image1.gif">
]>
<DOCUMENT>
<CUSTOMER IMAGES="SNAPSHOT1 SNAPSHOT2">
.
.
.
</CUSTOMER>
</DOCUMENT>
반응형
반응형

◆ ID
XML에서는 내부 응용 프로그램에서 구성요소들을 구분하기 위해 ID를 사용합니다.
ID 값은 특별한 의미를 가지므로 XML 처리기는 문서에서 ID형식의 속성값이 같은 두 개의 구성요소가 존재할 수 없다는 것을 알고 있습니다.
속성의 형식을 ID 형식으로 지정하기만 하면 속성의 이름에 관계 없이 ID속성이 됩니다.
그리고 #FIXED 속성은 같은 값을 갖기 때문에 ID 형식에서는 #FIXED를 사용할 수 없고 #REQUIRED를 사용합니다.
<?xml version = "1.0" standalone="yes"?>
<!DOCTYPE DOCUMENT [                           
<!ELEMENT DOCUMENT (CUSTOMER)*>                
<!ELEMENT CUSTOMER (NAME,DATE,ORDERS)>         
<!ELEMENT NAME (LAST_NAME,FIRST_NAME)>           
<!ELEMENT LAST_NAME (#PCDATA)>                  
<!ELEMENT FIRST_NAME (#PCDATA)>                 
<!ELEMENT DATE (#PCDATA)>                      
<!ELEMENT ORDERS (ITEM)*>                      
<!ELEMENT ITEM (PRODUCT,NUMBER,PRICE)>         
<!ELEMENT PRODUCT (#PCDATA)>                   
<!ELEMENT NUMBER (#PCDATA)> 
<!ELEMENT PRICE (#PCDATA)>                     
<!ATTLIST CUSTOMER
    CUSTOMER_ID ID #REQUIRED>
]>
<DOCUMENT>
    <CUSTOMER CUSTOMER_ID = "C1232231">
.
.
.
    </CUSTOMER>
    <CUSTOMER CUSTOMER_ID = "C1232232">
            .
.
.
    </CUSTOMER>
</DOCUMENT>

◆ IDREF
IDREF 형식은 문서의 구조에 대한 내용을 지정하기 위한 속성을 사용하고자 할 때 지정합니다. 특히 구성요소들 사이의 관계에 대한 내용을 지정하기 위해 사용하며 IDREF 속성은 문서의 다른 구성요소에 대한 ID값을 저장합니다.
<?xml version = "1.0" standalone="yes"?>
<!DOCTYPE DOCUMENT [                           
<!ELEMENT DOCUMENT (CUSTOMER)*>                
<!ELEMENT CUSTOMER (NAME,DATE,ORDERS)>         
<!ELEMENT NAME (LAST_NAME,FIRST_NAME)>           
<!ELEMENT LAST_NAME (#PCDATA)>                  
<!ELEMENT FIRST_NAME (#PCDATA)>                 
<!ELEMENT DATE (#PCDATA)>                      
<!ELEMENT ORDERS (ITEM)*>                      
<!ELEMENT ITEM (PRODUCT,NUMBER,PRICE)>         
<!ELEMENT PRODUCT (#PCDATA)>                   
<!ELEMENT NUMBER (#PCDATA)> 
<!ELEMENT PRICE (#PCDATA)>                     
<!ATTLIST CUSTOMER
    CUSTOMER_ID ID #REQUIRED
    EMPLOYER_ID IDREF #IMPLIED>
]>
<DOCUMENT>
    <CUSTOMER CUSTOMER_ID = "C1232231">
.
.
.
    </CUSTOMER>
    <CUSTOMER CUSTOMER_ID = "C1232232" EMPLOYER_ID="C1232231">
.
.
.
    </CUSTOMER>
</DOCUMENT>
위와 같이 문서의 일반적인 중첩 구조에 반영되어 있지 않은 부모-자식 관계를 설정하고자 하는 경우 구성요소의 IDREF 속성에 부모에 해당하는 구성요소의 ID를 지정합니다.
XML 처리기는 문서의 ID와 IDREF 구조를 내부 응용 프로그램으로 전달해주고, 응용 프로그램에서는 그 정보를 사용하여 문서의 구성요소 간의 관계를 재구성하루 수 있습니다.
반응형
반응형

◆ NMTOKEN
이 형식은 하나 이상의 알파벳, 숫자, 하이픈(-), 밑줄(_), 콜론(:), 마침표(.)로 구성된 값들만을 허용하며 공백을 포함 시킬 수 없습니다.
NMTOKEN 속성 값은 C++, Java, JavaScript의 변수에 적합한 이름과 매우 유사하므로 이들 이름을 내부 응용프로그램에서 자연스럽게 사용할 수 있습니다.

아래 예는 SHIP_STATE 라는 속성 이름을 선언하여 주문 내용이 선적되는 지역의 2글자 코드를 저장하도록 하고 이 속성을 NMTOKEN으로 하여 속성값이 하나 이상의 단어가 될 가능성을 배제시킵니다.
<?xml version = "1.0" standalone="yes"?>
<!DOCTYPE DOCUMENT [                           
<!ELEMENT DOCUMENT (CUSTOMER)*>                
<!ELEMENT CUSTOMER (NAME,DATE,ORDERS)>         
<!ELEMENT NAME (LAST_NAME,FIRST_NAME)>           
<!ELEMENT LAST_NAME (#PCDATA)>                  
<!ELEMENT FIRST_NAME (#PCDATA)>                 
<!ELEMENT DATE (#PCDATA)>                      
<!ELEMENT ORDERS (ITEM)*>                      
<!ELEMENT ITEM (PRODUCT,NUMBER,PRICE)>         
<!ELEMENT PRODUCT (#PCDATA)>                   
<!ELEMENT NUMBER (#PCDATA)> 
<!ELEMENT PRICE (#PCDATA)>                     
<!ATTLIST CUSTOMER
    SHIP_STATE NMTOKEN #REQUIRED>
]>
<DOCUMENT>
    <CUSTOMER SHIP_STATE = "CA">
        <NAME>
            <LAST_NAME>Smith</LAST_NAME>
            <FIRST_NAME>Sam</FIRST_NAME>
        </NAME>
        <DATE>October 15, 2003</DATE>
        <ORDERS>
            <ITEM>
                <PRODUCT>Tomatoes</PRODUCT>
                <NUMBER>8</NUMBER>
                <PRICE>$1.25</PRICE>
            </ITEM>
            <ITEM>
                <PRODUCT>Oranges</PRODUCT>
                <NUMBER>24</NUMBER>
                <PRICE>$4.98</PRICE>
            </ITEM>
        </ORDERS>
    </CUSTOMER>
    <CUSTOMER SHIP_STATE = "LA">
        <NAME>
            <LAST_NAME>Jones</LAST_NAME>
            <FIRST_NAME>Polly</FIRST_NAME>
        </NAME>
        <DATE>October 20, 2001</DATE>
        <ORDERS>
            <ITEM>
                <PRODUCT>Bread</PRODUCT>
                <NUMBER>12</NUMBER>
                <PRICE>$14.95</PRICE>
            </ITEM>
            <ITEM>
                <PRODUCT>Apples</PRODUCT>
                <NUMBER>6</NUMBER>
                <PRICE>$1.50</PRICE>
            </ITEM>
        </ORDERS>
    </CUSTOMER>
</DOCUMENT>


◆ NMTOKENS
NMTOKENS 속성 형식은 공백으로 구분되는 여러 개의 NMTOKEN들로 속성값을 구성하도록 지정할 수 있습니다.
아래 예는 CONTACT_NAME 속성에 NMTOKENS 형식을 지정해 성과 이름을 공백으로 구분하여 지정하도록 합니다.
<?xml version = "1.0" standalone="yes"?>
<!DOCTYPE DOCUMENT [                           
<!ELEMENT DOCUMENT (CUSTOMER)*>                
<!ELEMENT CUSTOMER (NAME,DATE,ORDERS)>         
<!ELEMENT NAME (LAST_NAME,FIRST_NAME)>           
<!ELEMENT LAST_NAME (#PCDATA)>                  
<!ELEMENT FIRST_NAME (#PCDATA)>                 
<!ELEMENT DATE (#PCDATA)>                      
<!ELEMENT ORDERS (ITEM)*>                      
<!ELEMENT ITEM (PRODUCT,NUMBER,PRICE)>         
<!ELEMENT PRODUCT (#PCDATA)>                   
<!ELEMENT NUMBER (#PCDATA)> 
<!ELEMENT PRICE (#PCDATA)>                     
<!ATTLIST CUSTOMER
    CONTACT_NAME NMTOKENS #IMPLIED>
]>
<DOCUMENT>
    <CUSTOMER CONTACT_NAME = "George Starr">
        <NAME>
            <LAST_NAME>Smith</LAST_NAME>
            <FIRST_NAME>Sam</FIRST_NAME>
        </NAME>
        <DATE>October 15, 2003</DATE>
        <ORDERS>
            <ITEM>
                <PRODUCT>Tomatoes</PRODUCT>
                <NUMBER>8</NUMBER>
                <PRICE>$1.25</PRICE>
            </ITEM>
            <ITEM>
                <PRODUCT>Oranges</PRODUCT>
                <NUMBER>24</NUMBER>
                <PRICE>$4.98</PRICE>
            </ITEM>
        </ORDERS>
    </CUSTOMER>
    <CUSTOMER CONTACT_NAME = "Ringo Harrison">
        <NAME>
            <LAST_NAME>Jones</LAST_NAME>
            <FIRST_NAME>Polly</FIRST_NAME>
        </NAME>
        <DATE>October 20, 2001</DATE>
        <ORDERS>
            <ITEM>
                <PRODUCT>Bread</PRODUCT>
                <NUMBER>12</NUMBER>
                <PRICE>$14.95</PRICE>
            </ITEM>
            <ITEM>
                <PRODUCT>Apples</PRODUCT>
                <NUMBER>6</NUMBER>
                <PRICE>$1.50</PRICE>
            </ITEM>
        </ORDERS>
    </CUSTOMER>
</DOCUMENT>

반응형
반응형

속성을 선언할 때에는 사용할 수 있는 기본값의 형식도 지정할 수 있습니다.

◆ CDATA
가장 간단한 속성 형식으로 간단한 문자 데이터를 가리킵니다.
마크업을 사용할 수 없으며, <, ", & 등의 문자들을 포함하는 문자열을 사용할 수 없습니다. 이런 문자를 사용하기 위해서는 미리 정의된 엔티티 참조(&lt;, &quot;, &amp;)를 사용해야합니다. 이들 엔티티 참조는 문서가 파싱될때 해당 문자로 바뀌게 됩니다.
<!ATTLIST CUSTOMER
    OWES CDATA "0"
    LAYAWAY CDATA "0"
    DEFAULTS CDATA "0"
>
]>


◆ 나열형
사용할 수 있는 값들의 목록을 지정합니다. 사용할 수 있는 각 값들은 첫 번째 글자가 반드시 알파벨 또는 밑줄(_)인 유효한 XML 이름이어야 합니다.
속성에 사용할 수 있는 값의 범위를 설정하고자 할 때 사용할 수 있습니다.(예 : 참|거짓, 요일 등등)
<?xml version = "1.0" standalone="yes"?>
<!DOCTYPE DOCUMENT [                           
.
.
.

<!ATTLIST CUSTOMER
    CREDIT_OK (TRUE | FALSE) "TRUE">
]>
<DOCUMENT>
    <CUSTOMER CREDIT_OK = "FALSE">
.
.
.

    </CUSTOMER>
</DOCUMENT>


◆ NOTATION
비-XML 데이터 형식을 가리키며, 외부 엔티티를 나타내기 위해 사용합니다.
가장 잘 알려진 형식으로는 image/gif, application/xml, text/html 등의 MIME형식이 있습니다.
NOTATION을 선언하려면 DTD에서 <!NOTATION> 구성요소를 사용해야 합니다.
<?xml version = "1.0" standalone="no"?>
<!DOCTYPE DOCUMENT [
.
.
.

<!NOTATION GIF SYSTEM "image/gif">
<!NOTATION JPG SYSTEM "image/jpeg">

<!ATTLIST CUSTOMER
IMAGE NMTOKEN #IMPLIED
IMAGE_TYPE NOTATION (GIF | JPG) #IMPLIED>
]>
<DOCUMENT>
<CUSTOMER IMAGE="image.gif" IMAGE_TYPE="GIF">
.
.
.

</CUSTOMER>
</DOCUMENT>
반응형
반응형

속성에 지정할 수 있는 기본 값의 종류를 살펴보면서, DTD에서 속성을 선언하는 방법을 알아보겠습니다.


◆ 직접적인 값

<!ATTLIST> 구성요소의 속성 선언에서 인용부호에 값을 직접 지정하여 속성의 기본 값을 지정할 수 있습니다.
<?xml version = "1.0" standalone="yes"?>
<!DOCTYPE DOCUMENT [     
.
.
.

<!ELEMENT NUMBER (#PCDATA)> 
<!ELEMENT PRICE (#PCDATA)>                     
<!ATTLIST CUSTOMER
    OWES CDATA "0"
    LAYAWAY CDATA "0"
    DEFAULTS CDATA "0"
>
]>
<DOCUMENT>
    <CUSTOMER OWES="$12.13" LAYAWAY="$0" DEFAULTS="0">
        <NAME>
            <LAST_NAME>Smith</LAST_NAME>
.
.
.

</DOCUMENT>


◆ #REQUIRED

기본값을 직정 지정하지 않지만 DTD를 사용하는 사람이 직접 값을 지정해야만 합니다.
문서에서 구성요소에 대한 추가 정보를 필요로 하는 경우에 유용하게 사용할 수 있습니다.
(이름, 이메일 주소, URI 등등)
<?xml version = "1.0" standalone="yes"?>
<!DOCTYPE DOCUMENT [
.
.
.

<!ELEMENT NUMBER (#PCDATA)>
<!ELEMENT PRICE (#PCDATA)>
<!ATTLIST CUSTOMER
    OWES CDATA #REQUIRED>

]>
<DOCUMENT>
    <CUSTOMER OWES="$0">
        <NAME>
            <LAST_NAME>Smith</LAST_NAME>
.
.
.

</DOCUMENT>


◆ #IMPLIED

속성의 기본 값으로 지정할 만한 것이 없으며, 문저의 작성자들도 이 속성을 사용할 필요가 없는 경우에 사용합니다.
XML 처리기에서 이 속성이 사용되지 않더라도 문제가 발생하지 않기 때문에 문서 작성자가 이 속성을 포함시킬 수는 있지만 반드시 포함시킬 필요는 없습니다.
속성들을 #IMPLIED로 선언하는 것이 일반적이며 그 이유는 작성자에 따라 그 속성들이 구성요소에 필요할 수도 있고 그렇지 않을 수도 있기 때문입니다.
<?xml version = "1.0" standalone="yes"?>
<!DOCTYPE DOCUMENT [
.
.
.

<!ELEMENT NUMBER (#PCDATA)>
<!ELEMENT PRICE (#PCDATA)>
<!ATTLIST CUSTOMER
OWES CDATA #IMPLIED>
]>
<DOCUMENT>
<CUSTOMER OWES="$23.99">
<NAME>
.
.
.

</ORDERS>
</CUSTOMER>
<CUSTOMER>
<NAME>
.
.
.

</ORDERS>
</CUSTOMER>
</DOCUMENT>


◆ #FIXED

#FIXED 키워드를 사용하면 속성들이 항상 고정된 값을 갖도록 구성할 수 있습니다. 속성에 대해 고정된 값을 설정해야 하므로 그 값을 지정해 주어야합니다.
<?xml version = "1.0" standalone="yes"?>
<!DOCTYPE DOCUMENT [
.
.
.

<!ELEMENT NUMBER (#PCDATA)>
<!ELEMENT PRICE (#PCDATA)>
<!ATTLIST CUSTOMER
LANGUAGE CDATA #FIXED "EN">
]>
<DOCUMENT>
<CUSTOMER>
.
.
.


</CUSTOMER>


</DOCUMENT>

위 문서에서는 <CUSTOMER>구성요소에 LANGUAGE 속성을 사용하지 않고 있음을 알 수 있는데 속성이 #FIXED로 선언되어 있기 때문에 XML 처리기에서는 상관하지 않고 그 속성과 값을 내부 응용프로그램에 전달하게 됩니다.
만약 지정해 놓은 기본값을 다지 지정하려고 하면 XML 처리기는 오류를 발생합니다.
반응형
반응형

속성은 이름과 값을 한 쌍으로 이루어 시작 태그와 내용이 빈 태그에 추가 정보를 지정하기 위해 사용합니다.
예를 들면 다음과 같은 형태입니다.
<CUSTOMER LAST_NAME="Smith" FIRST_NAME="Sam" DATA="July 10, 2011 PURCHASE="Tomatoes" PRICE="$1.25" NUMBER="8" />


◆ DTD에서 속성 선언하기

문서가 유효하기를 바란다면 사용하는 모든 속성들을 이전에 미리 선언해놓아야 합니다. 그리고 속성에 기본값을 지정하거나 DTD를 사용하는 XML 작성자가 속성값을 할당하도록 요청할 수도 있습니다.

<!ATTLIST> 구성요소를 통해 구성요소의 목록을 선언합니다.
<!ATTLIST 구성요소_이름
속성_이름   형식   기본값
속성_이름   형식   기본값
.
.
.
속성_이름   형식   기본값>

태그 안의 요소들은
구성요소_이름 : 속성을 사용하고자하는 구성요소의 이름
속성_이름 : 선언하고자 하는 속성의 이름
형식 : 속성의 형식
기본값 : 속성의 기본값
을 가리킵니다.


◆ 속성의 형식에 사용할 수 있는 값들

- CDATA : 아무런 마크업을 포한하지 않는 단순한 문자 데이터
- ENTITIIES : DTD에 선성되어 있는 다중 엔티티 이름으로 공백을 구분
- ENTITY : DTD에 선언되어 있는 엔티티 이름
- "나열형" : 값들의 목록을 타나태며, 목록 중에 있는 어떤 값이 속성 값이 됨
- ID : 고유해야 하는 적절한 XML 이름(ID 형식으로 다른 속성과 공유되면 안 됨)
- IDREF : 어떤 구성요소의 ID 속성값을 저장
- IDREFS : 공백으로 구분된 여러 개의 구성요소 ID
- NMTOKEN : 토큰 이름으로 하나 이상의 글자, 숫자, 하이픈(-), 밑줄, 콜론(:), 마침표(.) 등으로 구성
- NMTOKENS : 목록에 나열되는 여러 개의 공백으로 구분된 NMTOKEN들
- NOTATION : DTD에 선언되어 있는 notation 이름


◆ 기본값 설정으로 사용할 수 있는 것들

- 값(Value) : 인용부호에 포함된 단순한 텍스트값
- #IMPLIED : 해당 속성에 대한 기본값이 없음을 나타내며 이 속성은 사용되지 않을 수 있음
- #REQUIRED : 해당 속성의 기본 값은 없지만 반드시 값을 지정해야만 해당 문서가 유효함
- #FIXED : ""은 속성의 값을 가리키며, 속성은 항상 이 값을 가져야 함

반응형
반응형

파라미터 엔티티는 문서의 DTD에서 사용하는 엔티티를 말합니다.

일반 엔티티는 DTD에서 문서의 내용에 들어가는 텍스트를 삽입하기 위해서는 사용할 수 있지만 DTD의 선언에는 사용할 수 없습니다. 그래서 파라미터 엔티티를 구성요소와 속성 선언 시에 사용합니다.

파라미터 엔티티 참조는 DTD에서만 사용할 수 있으며, DTD에 선언에 사용된 모든 파라미터 엔티티 참조는 DTD의 외부에 존재하는 DTD의 일부분인 외부 서브셋(externet subset)에서만 사용할 수 있습니다. 내부 서브셋에서는 파라미터 엔티티를 사용할 수 있지만 제한적인 방법으로만 가능합니다.

파라미터 엔티티의 참조는 %로 시작하여 ;로 끝나며
<!ENTITY % 이름 정의>
와 같은 형태로 작성합니다.

외부 파라미터 엔티티는 다음과 같이 SYSTEM과 PUBLIC 키워드를 사용하여 선언할 수 있습니다.
<!ENTITY % 이름 SYSTEM URI>
<!ENTITY % 이름 SYSTEM FPI URI>


◆ 내부 파라미터 엔티티

BR 이라는 이름으로 <!ELEMENT BR EMPTY>텍스트를 나타내는 파라미터 엔티티를 선언하는 방법입니다. 
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE DOCUMENT [
<!ENTITY % BR "<!ELEMENT BR EMPTY>">
<!ELEMENT DOCUMENT (CUSTOMER)*>
<!ELEMENT CUSTOMER (NAME, DATE, ORDERS)>
<!ELEMENT NAME (LAST_NAME, FIRST_NAME)>
<!ELEMENT LAST_NAME (#PCDATA)>
<!ELEMENT FIRST_NAME (#PCDATA)>
<!ELEMENT DATE (#PCDATA)>
<!ELEMENT ORDERS (ITEM)*>
<!ELEMENT ITEM (PRODUCT, NUMBER, PRICE)>
<!ELEMENT PRODUCT (#PCDATA)>
<!ELEMENT NUMBER (#PCDATA)>
<!ELEMENT PRICE (#PCDATA)>
%BR;
]>

위와 같은 경우 파라미터 엔티티를 선언하는 것 보다 ELEMENT를 직접 추가하는 편이 편합니다. 내부 파라미터 엔티티는 다른 선언문에 사용할 수 없기 때문에 내부 파라미터 엔티티로 할 수 있는 일은 많지 않습니다. 그래서 실제로 파라미터 엔티티의 용도를 이해하는데는 외부 파라미터 엔티티를 살펴보는 것이 좋습니다.


◆ 외부 파라미터 엔티티

DTD의 외부 서브셋 파라미터 엔티티를 사용할 때, 구성요소 선언을 포함한 DTD의 모든 곳에서 그 엔티티를 참조할 수 있습니다.
<!ENTITY % record "(NAME,DATE,ORDERS)">
<!ELEMENT DOCUMENT (CUSTOMER | BUYER | DISCOUNTER)*>                
<!ELEMENT CUSTOMER %record;>         
<!ELEMENT BUYER  %record;>         
<!ELEMENT DISCOUNTER  %record;>         
<!ELEMENT NAME (LAST_NAME,FIRST_NAME)>           
<!ELEMENT LAST_NAME (#PCDATA)>                  
<!ELEMENT FIRST_NAME (#PCDATA)>                 
<!ELEMENT DATE (#PCDATA)>                      
<!ELEMENT ORDERS (ITEM)*>                      
<!ELEMENT ITEM (PRODUCT,NUMBER,PRICE)>         
<!ELEMENT PRODUCT (#PCDATA)>                   
<!ELEMENT NUMBER (#PCDATA)> 
<!ELEMENT PRICE (#PCDATA)>

<CUSTOMER>,<BUYER>,<DISCOUNTER>가 서로 동일한 내용 모델을 가지므로 시간 절약을 위해 record라는 파라미터 엔티티를 지정합니다.

즉, 위와 같이 자주 반복되는 텍스트들을 DTD의 구성요소 선언에서 처리하기 위해 파라미터 엔티티를 사용합니다. 이렇게 파라미터 엔티티를 사용하면 DTD 구성요소의 선언을 수정할 필요가 있을 때 각 선언을 모두 수정하지 않고 파라미터 엔티티만을 수정하면 됩니다.


◆ INCLUDE와 IGNORE 사용하기

INCLUDE와 IGNORE는 DTD의 일부 구역을 포함하거나 제외시키기 위해 사용되는 명령어 입니다..
이 두 DTD명령어를 파라미터화 시켜 놓으면 파라미터 값을 INCLUDE또는 IGNORE로 바꾸기만 하면 DTD의 여러 구역을 포함 시키거나 제외 시킬 수 있습니다.
아래 DTD에서 빨갛게 표시한 INCLUDE 부분을 IGNORE로 바꾸면 PRODUCT_ID,SHIP_DATE, SKU 요소가 DTD에서 제외 되는 것입니다.
<!ENTITY % includer "INCLUDE">
<!ELEMENT DOCUMENT (CUSTOMER)*>                
<!ELEMENT CUSTOMER (NAME,DATE,ORDERS)>         
<!ELEMENT NAME (LAST_NAME,FIRST_NAME)>           
<!ELEMENT LAST_NAME (#PCDATA)>                  
<!ELEMENT FIRST_NAME (#PCDATA)>                 
<!ELEMENT DATE (#PCDATA)>                      
<!ELEMENT ORDERS (ITEM)*>                      
<!ELEMENT ITEM (PRODUCT,NUMBER,PRICE)>         
<!ELEMENT PRODUCT (#PCDATA)>                   
<!ELEMENT NUMBER (#PCDATA)> 
<!ELEMENT PRICE (#PCDATA)>
<![ %includer; [
<!ELEMENT PRODUCT_ID (#PCDATA)>
<!ELEMENT SHIP_DATE (#PCDATA)>
<!ELEMENT SKU (#PCDATA)>
]]>

반응형
반응형

DTD에는 속성(attribute)와 엔티티(entity) 를 선언할 수 있습니다.

엔티티(entity)
 엔티티란 데이터 항목을 참조하기 위한 XML의 방법으로 보통은 텍스트이지만 이진 데이터로 구성될 수도 있습니다.
 엔티티는 DTD에서 선언하며, 문서에서 참조를 통해 사용됩니다.
 XML문서의 내용에 사용되는 일반 엔티티의 참조는  &로 시작하여 ;로 끝나게 되며, DTD에서 사용하는 파라미터 엔티티의 참조는 %로 시작하여 ;로 끝나게 됩니다.


◆ 미리 정의되어 있는 일반 엔티티 참조

&amp;  -  &
&apos;  -  '
&gt  -  >
&lt  -  <
&quot  -  "

<?xml version="1.0" encoding="UTF-8"?>
<TEXT>
 This text about the &quot;S&amp;O Railroad&quot; is the &lt;TEXT&gt; element&apos;scontent.
</TEXT>


자신이 원하는 문자의 문자코드를 인코딩에 맞추어 지정해서 엔티티 참조를 만들 수도 있습니다.
예를 들어 UTF-8 인코딩에서 @의 문자 코드가 #64이므로 &#64; 라는 엔티티 참조는 @를 나타내게 됩니다.
<!ENTITY at "&#64;">
위와 같은 엔티티를 정의하면 &at; 이 @을 나타내게 됩니다.


◆ 내부 일반 엔티티 만들기

문서 내부에 <!ENTITY> 구성요소를 사용하여 <!ENTITY 이름 정의>형식으로 엔티티를 선언합니다.
&엔티티이름; 형태의 엔티티 참조를 통해 정의한 내용으로 바뀌게 됩니다.
<?xml version="1.0" encoding="UTF-8"?>

.
.

.



<!ENTITY TODAY "October 15, 2003">

]>
<DOCUMENT>
 <CUSTOMER>
  <NAME>
   <LAST_NAME>Smith</LAST_NAME> 
   <FIRST_NAME>Sam</FIRST_NAME>
  </NAME>
  <DATE>&TODAY;</DATE>
  <ORDERS>

.
.

.


아래와 같은 결과를 보실 수 있습니다.



일반 엔티티의 참조는 중첩해서 사용할 수 있습니다.
<!ENTITY NAME "Alfred Hitchcock">
<!ENTITY SIGNATURE "&NAME; 14 Mystery Drive">

단 아래와 같이 순환하여 참조하는 경우는 XML 처리기가 그 결과를 예측할 수 없기 때문에 참조할 수 없습니다.
<!ENTITY NAME "Alfred Hitchcock &SIGNATURE;">
<!ENTITY SIGNATURE "&NAME; 14 Mystery Drive">

그리고 일반 엔티티 참조는 아래 처럼 문서 자체가 아닌 DTD 에서만 사용되는 텍스트를 삽입하기 위한 경우도 사용할 수 없습니다.
<!ENTITY TAGS "NAME, DATE, ORDERS)">
<!ENTITY CUSTOMER &TAGS;>



◆ 외부 일반 엔티티 만들기

엔티티는 문서의 외부에 존재할 수 있는데, 이때는 XML 처리기가 엔티티를 찾을 수 있도록 URI를 제공해야 합니다.
외부 엔티티는 단순한 문자열, 문서 전체 또는 문서의 일부분이 될 수 있습니다. 그리고 XML 처리기의 관점에서 그 문서가 잘 구성되어야(well-formed) 하며 유효해야(valid)합니다.

외부의 ex_entity.xml 파일에 "July 6, 2011"이라는 텍스트가 저장되어 있으면

 

<?xml version="1.0" encoding="UTF-8"?>

.
.

.


<!ELEMENT PRICE (#PCDATA)>
<!ENTITY TODAY SYSTEM "ex_entity.txt">
]>
<DOCUMENT>
 <CUSTOMER>
  <NAME>
   <LAST_NAME>Smith</LAST_NAME> 
   <FIRST_NAME>Sam</FIRST_NAME>
  </NAME>
  <DATE>&TODAY;</DATE>
  <ORDERS>

.
.

.

</DOCUMENT>


위와 같이 엔티티 구성요소를 추가해서 TODAY라는 엔티티를 추가할 수 있습니다. 아래와 같은 결과를 볼 수 습니다.



◆ 조각들을 이용해 문서 만들기

외부 일반 엔티티를 사용하여 여러 조각을 이용해 문서를 구성할 수 있습니다. <DOCUMENT>요소 안의 내용을 &data; 로 합니다.
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE DOCUMENT [
<!ELEMENT DOCUMENT (CUSTOMER)*>
<!ELEMENT CUSTOMER (NAME, DATE, ORDERS)>
<!ELEMENT NAME (LAST_NAME, FIRST_NAME)>
<!ELEMENT LAST_NAME (#PCDATA)>
<!ELEMENT FIRST_NAME (#PCDATA)>
<!ELEMENT DATE (#PCDATA)>
<!ELEMENT ORDERS (ITEM)*>
<!ELEMENT ITEM (PRODUCT, NUMBER, PRICE)>
<!ELEMENT PRODUCT (#PCDATA)>
<!ELEMENT NUMBER (#PCDATA)>
<!ELEMENT PRICE (#PCDATA)>
<!ENTITY data SYSTEM "ch04_06.xml">
]>
<DOCUMENT>
 &data;
</DOCUMENT>

그리고 &data;로 참조될 <DOCUMENT>요소의 하위 요소 들을 외부 파일에 작성합니다.



브라우저에서 두 문서가 합쳐진 아래와 같은 결과를 보실 수 있습니다.

반응형

'컴퓨터&IT > XML' 카테고리의 다른 글

XML - [6] DTD:속성(Attribute)  (0) 2011.08.24
XML - [5] DTD:파라미터 엔티티  (0) 2011.08.24
XML - [3] Well-formed Document 와 Valid Document  (0) 2011.08.24
XML - [2] XML의 장점  (0) 2011.08.24
XML - [1] Markup Language  (0) 2011.08.24
반응형
Activity
액티비티는 하나의 사용자 인터페이스(UI)를 나타내는 단위 입니다.

하나의 앱에 여러개의 액티비티가 존재할 수 있습니다. 이 액티비티들은 각각 다른 액티비티와 독립되어 있지만 하나의 결합도니 인터페이스를 형성하기 위해 함께 동작합니다.

각각의 액티비티는 Activity 클래스를 상속하는 하위 클래스로 구현되며 하나의 윈도우가 기본적으로 제공됩니다. 윈도우 내의 컨텐츠는 VIew 클래스의 계층 구로에 의해 만들어 지고 각각의 View는 윈도우 내의 특정 영역을 제어하며 액티비티와 사용자간의 상호작용을 가능하게 합니다. parent view는 children view의 레이아웃을 포함하고 구조화하게 됩니다.  View는 Activity.setContentView() 메소드로 액티비티 윈도우 내에 위치하게 됩니다.

그리고 하나의 액티비티는  다른 앱의 액티비티를 포함한 다른 액티비티를 시작할 수 있습니다. 이 때 인텐트 객체에 필요한 정보를 추가한 후에 startActivity()의 파라미터로 전달하게 되면 다른 액티비티가 시작되게 됩니다.

이렇게 서로 다른 앱의 액티비티를 같은 Task 내에 유지함으로써 하나의 앱 처럼 사용자들은 사용할 수 있게 됩니다.


Task
태스크는 한의 스택 내에 정렬된 액티비티의 그룹으로 그 태스크를 시작했던 액티비티가스택의 root액티비티가 됩니다.

하나의 액티비티가 다른 액티비티를 시작할때 새로운 액티비티는 Push되어(스택에 올려짐) 실행상태가 됩니다. 이전의 액티비티는 스택에 남아서 사용자가 back키를 누러면 현재 액티비티가 Pop(스택에서 제거)되고, 이전의 액티비티는 resume(재개)되게 됩니다.

스택은 객체들은 포함하므로 태스크가 동일한 액티비티 하위 클래스의 인스턴스를 하나 이상 사지고 있다면 스택은 각각의 인스턴스에 대한 별도의 시작점을 가지게 됩니다.






반응형
반응형

안드로이드의 UI(사용자 인터페이스)는 View와 ViewGroup 객체를 사용하여 만들어집니다.

모든 View와 ViewGroup은 View 클래스의 하위 클래스가 되며 View 객체는 UI를 구성하는 기본 단위가 됩니다.

View 클래스는 버튼 같은 사용자 인터페이스 객체들을 제공하는 Widget에 대한 기반을 제공하고 ViewGroup 클래스는 Linear, Relative 같은 Layout에 대한 기반을 제공합니다.

View 객체는 하나의 데이터 구조로 구조의 속성에는 스크린의 특정 직사각 영역에 대한 제어를 하며, 사용자와 상호작용 지점이 되어 해당 상호작용 이벤트의 Receiver가 됩니다.

사용자 인터페이스는 선언적 방식절차적 방식으로 디자인 될 수 있습니다.

절차적 방식
절차적이란 코드에서 비롯한다는 뜻으로 예를 들면 자바로 코딩하여 JFrame, JButton 등의 모든 사용자 인터페이스 개체를 만들고 조정하는 방식을 말합니다.

선언적 방식
선언적 디자인은 XML이나 HTML같은 markup 언어로 페이지가 어떻게 작동하는지가 아니라 무엇을 나타내는지를 선언하는 방식입니다.

안드로이드는 두 가지 방식으로 만들어진 여러 프로그램 간의 차이를 좁히기 위해 절차적 방식과 선언적 방식 모두를 지원하기 때문에 자바 코드만으로 또는 XML descriptor 만으로 프로그램을 작성할 수 있습니다.
하지만 XML 코드가 자바 코드에 비해 짧고 이해가 쉽기 때문에 선언적 방식을 추천하고 있습니다.
반응형
반응형

XML 브라우저는 문서가 Well-formed Document인지 그리고 Valid Document 인지 확인합니다.
그럼 이 두 가지가 무슨 의미인지 알아보겠습니다.


Well-formed Document (잘 구성된 문서)

W3C에서 XML1.0 규격에 명시해 놓은 문법을 따르는 문서를 말합니다. 비공식적으로는 문서가 하나 이상의 구성요소를 포함해야하며, 하나 이상의 루트 구성요소가 다른 구성요소들을 포함하고 있어야함을 의미합니다. 또한 각 구성요소들은 적절히 쌍을 이루고 있어야합니다. <GREETING>으로 시작했다면 </GREETING>으로 끝나야겠죠? 그래서 아래 문서는 Well-formed Document라고 할 수 없는 것입니다.

<DOCUMENT>
<GREETING>
Hello XML
<MESSAGE>
</GREETING>

Welcome~~~!!
</MESSAGE>
</DOCUMENT>

 
Valid Document (유효한 문서)

대부분의 XML 브라우저들은 문서가 잘 구성되었는지를 확인하는데 일부 브라우저에서는 문서의 유효성까지도 확인합니다. 만약 문서가 DTD(Document Type Definition)이나 XML스키마에 연결되어 있고, 문서가 이들을 만족한다면 Valid Document라고합니다.
반응형

'컴퓨터&IT > XML' 카테고리의 다른 글

XML - [6] DTD:속성(Attribute)  (0) 2011.08.24
XML - [5] DTD:파라미터 엔티티  (0) 2011.08.24
XML - [4] DTD:엔티티(일반 엔티티)  (0) 2011.08.24
XML - [2] XML의 장점  (0) 2011.08.24
XML - [1] Markup Language  (0) 2011.08.24
반응형

쉬운 데이터 교환

일반적으로 응용프로그램끼리 데이터를 교환하려면 변환 프로그램이나 별도의 모듈이 필요합니다. 하지만 고유한 데이터 형식들이 복잡해 지면서 동일한 응용프로그램 조자 다른 버전의 데이터를 이전 버전에서 읽지 못하는 경우도 발생합니다.
XML은 데이터와 마크업은 문자열로 저장되어 직접 구성을 변경할 수 있습니다. 문제가 발생하더라고 모두 문자열로 구성되어 있기 때문에 직접 문서를 수정할 수도 있죠. 그리고 이들 데이터는 특허 또는 저작권 보호를 받는 어떤 방식으로도 코드화되지 않아서 접근성이 좋습니다.


마크업 언어의 사용자 정의

XML을 사용하면 사용자 정의가 가능한 마크업 언어를 만들 수 있습니다. 이미 수백 가지 언어들이 표준화 되어 있는데 한 가지 예를 들자면 CML(Chemical Markup Language)같은 새로운 마크업 언어를 통해 복잡한 분자들을 그래픽으로 표현하기도 합니다.


쉽게 알 수 있는 데이터

XML은 각 구성요소의 이름을 잘 지었다면 그 이름만으로도 어떤 내용인지 쉽게 알 수 있습니다. 이는 XML 문서 자체만으로도 충분한 설명이 될 수 있다는 것을 의미합니다.


구조화된 통합 데이터

XML은 데이터 뿐만 아니라 데이터의 구조도 지정할 수 있어서 다양한 구성요소들을 다른 구성요소에 어떻게 통합할 것인지를 지정할 수도 있습니다.

 
반응형
반응형


XML W3C에서 정의한 언어입니다. XML을 사용하여 자신의 구성 요소(element)들을 구성할 수 있으면 자신의 용도에 맞게 언어를 정의할 수 있습니다. XML에 대해 알아볼까요?


Markup Language(마크업 언어)

XML은 마크업 언어 입니다.
마크업 언어는 문서의 형식을 설명하는 모든 것을 가리킵니다. 예를 들자면 아래와 같이 표준 웹 페이지를 작성할 때 사용 되는 HTML(Hyper Text Markup Language)가 있습니다.

  <TITLE>태그는 제목 표시줄에 나타나는 내용을 의미하고
  <H1> 태그는 헤드라인을 의미합니다.
 

<HTML>
<HEAD>
<TITLE>Hello HTML</TITLE>
</HEAD>
<BODY>
<H1>Hello HTML</H1>
Welcome~~~~!!
</BODY>
</HTML>



HTML은 모든 구성요소들이 미리 정의되어 있어 사용에 충분치 못합니다. 예를 들면 <BODY>슬기</BODY>를 넣으면 그것이 텍스트인지는 알 수 있지만 '슬기'라는 명사인지, 누군가의 이름인지 명확히 구분하지 못합니다.
 
반면에 XML은 자신의 마크업 태그를 정의할 수 있기 때문에 <name>이라는 테그를 사람의 이름으로 정의하고 <name>슬기</name> 라고 적어 준다면 슬기라는 텍스트가 누군가의 이름이라는 의미를 가지게 되는 것이죠.

위와 같은 의미에서 XML을 메타-마크업 언어 라고 하기도 합니다.

그러면 XML은 어떻게 생긴 마크업 언어일까요?

<?xml version\"1.0" encoding="UTF-8"?>
<DOCUMENT>
<GREETING>
Hello XML.
</GREETING>
<MESSAGE>
Welcome~~~~!
</MESSAGE>
</DOCUMENT>


우선 "<?"로 시작하여 "?>"로 끝나는 부분은 XML 처리문 입니다. 현재 사용된 XML 버전과 문자 인코딩 정보 등을 나타냅니다.

모든 XML 태그는 "<" 로 시작하여 ">"로 끝납니다. 태그의 이름으로는 알파벳 또는 밑줄(_)로 시작하여 알파벳, 숫자, 문자, dot(.), 또는 하이픈(-)으로 구성된 모든 이름을 사용할 수 있습니다. 단 공백은 허용 되지 않습니다.

그리고 <DOCUMENT> 와 같은 시작태그로 시작하고 구성요소에는 텍스트나 또는 다른 구성용소 같은 어떤 내용도 포함 할 수 있으며, </DOCUMENT>와 같이 "</"로 시작하는 종료 태그로 끝나게 됩니다.

또 처리문은 제외하고 전체 문서는 하나의 구성요소에 포함 시켜야 하며 이를 root 구성요소라고 합니다. 위의 예에서는 <DOCUMENT>가 root구성요소입니다.

<GREETING>과 <MESSAGE>는 텍스트를 포함하고 있으며 이 둘은 root구성요소인 <DOCUMENT>에 포함됩니다.



HTML문서의 모든 태그는 미리 정의되어 있어 브라우저에서 이들은 처리하는 방식에 대해 잘 알고 있지만 새로 만들어낸 태그를 포함하는 XML 문서를 사용하기 위해서는 사람이 직접 구성요소에 의미를 부여하는 작업을 해야합니다.

새로 만든 구성요소에 의미를 부여하는 방법엔 크게 두가지가 있는데 첫 번째는 스타일 시트를 사용하여 새로 만든 구성요소들의 표시 형힉을 브라우저에 지정하는 것이고 두 번째는 프로그래밍 언어를 사용하여 XML 문서를 프로그래밍 코드로 처리하는 것입니다.



 

반응형
반응형

Windows server 2008 R2의 서버관리자에서 서버의 역할을 추가하거나 제거하고 관리할 수 있습니다.

Windows에서 제공하는 웹서버인 IIS7을 설치해보겠습니다.

먼저 '서버 관리자'를 실행시키고 '역할 추가'를 클릭해서 '역할 추가 마법사'를 실행시키고 각 단계를 진행합니다.

 

'시작하기 전'에서는 몇가지 보안 사항에 대한 확인 절차를 거칩니다. 다음을 클릭!



'서버 역할 선택'에서 우리가 설치하려고 하는 웹서버(IIS)를 선택하고 다음으로 넘어갑니다.


'웹 서버(IIS)'에서 IIS에 대한 간단한 소개와 추가 정보에 대한 링크를 보여줍니다.


'역할 서비스 선택'에서 원하는 기능을 선택한 후 다음으로 갑니다.


'설치 선택 확인'에서 앞에서 선택한 항목에 대한 확인 절차를 거칩니다. 확인하셨으면 설치를 클릭해서 설치를 진행합니다.


설치가 진행되고 있습니다 ^ㅁ^


설치가 완료되면 결과를 확인하고 닫기를 눌러 설치를 마칩니다.


서버 관리자에서 웹 서버(IIS)가 추가된 것을 확일 할 수 있습니다.


별도의 설치파일을 구해야하는 번거러움 없이 웹 서버를 설치할 수 있었습니다.
참 쉽죠!! ^ㅁ^
서버 관리자에 웹 서버 이외에도 DHCP나 DNS 서버 등 여러가지 서버나 서비스를 설치할 수 있습니다.
필요한 서버나 서비스를 설치해 보세요^^

 

 

 

 

 

 

 

반응형
반응형

안드로이드 앱은 task의 집합으로 안드로이드에서는 이 task를 activity라 부릅니다.
다시 말하면 하나의 activity는 앱이 수행하는 고유한 하나의 task라는 말이죠.

intent를 통해 현재 activity에서 다른 activity로 전환할 수 있습니다.
그리고 처음 화면에 띄워질 main activity는 AndroidManifest.xml 파일에서 결정합니다.


Activity의 Life cycle

  안드로이드 앱에서는 한 시점에 단 하나의 응용 프로그램 activity만이 foreground에서 실행됩니다. 우리가 자주 쓰는 윈도우와는 조금 다르죠.
  Activity callback 메서드를 이용해서 앱의 상태 및 자원을 관리합니다. 즉 한 activity의 Life cycle 동안 여러 상태를 거치게 되는데 그 때마다 적절한 callback 메서드가 호출되는 것입니다.



Activity callback 메서드
   
 onCreate(Bundle)
하나의 activity가 처음 시작되면 호출되며, setContentView() 메서드 호출과 같은 데이바인딩과 초기 설정 작업에 관여합니다.

 onStart()
activity가 사용자에게 곧 보여질 것을 나타냅니다.

 onResume()
한 activity가 스택의 제일 상위에 놓이고 foreground process가 되면 호출되는 메서드로 애니매이션이나 음악 같은 activity의 실행에 필요한 자원들을 준비하기에 적합한 메서드 입니다.

 onPause()
다른 activity가 스택의 최상위를 차지하면 현재 activity는 background로 밀려나고 이때 현재 activity의 onPause() 메서드가 호출됩니다. activity가 background에 있는 동안 필요하지 않은 자원을 해제할 마지막 기회로 onPause()메서드에서 자원을 많이 해제할 수록 activity가 background에서 죽을(kill) 가능성이 줄어듭니다.

 onStop()
activity가 사용자에서 더 이상 보여지지 않을 때 호출 되며 메모리가 얼마 남지 않았다면 호출되지 않고 시스템이 프로세스를 종료할 수 있습니다.

 onRestart()
activity가 정지 상태에서 다시 디스플레이될 때 호출됩니다.

 onSaveInstanceState(Bundle)
Activity가 죽어도 스택에서 제거되지는 않고 activity 객체의 상태가 하나의 Bundle객체에 저장됩니다. 예를 들면 텍스트 필드 내의 커서 위치에 대한 정보 처럼 activity의 필수 적이지 않은 상태를 Bundle객체에 저장합니다. 이 메서드는 디폴트 구현 값이 모든 사용자 인터페이스 제어 상태를 자동으로 저장하므로 구지 재정의할 필요는 없습니다.

 onDestroy()
activity의 lifecycle이 끝나거나 자원 부족으로 안드로이드가 activity를 죽일 때 호출 됩니다. 메모리가 얼마 남지 않았다면 호출되지 않고 시스템이 프로세스를 종료할 수 있습니다.

 onRestoreInstanceState(Bundle)
onSaveInstanceState() 메서드가 미리 저장해 둔 상태로부터 activity가 다시 초기화될 때 호출 됩니다.


반응형

'컴퓨터&IT > 안드로이드 Android' 카테고리의 다른 글

Android - Activity  (0) 2011.08.24
Android 인터페이스  (0) 2011.08.24
Android Application 구성요소(Component)  (2) 2011.08.24
Dalvik VM (Dalvik Virtual Machine)  (0) 2011.08.24
안드로이드 ? (Android)  (1) 2011.08.24
반응형

   안드로이드 앱에는 적절한 권한만 있으면 누구나 인스턴스화할 수 있는 4개의 컴포넌트가 있고 main()같은 유일한 진입점이 따로 없이 처음으로 생성되는 인스턴스의 생성자가 실질적 진입점이 됩니다.


4가지 구성요소

  Activity
 사용자 인터페이스의 기본 단위로 눈에 보이는 화면 하나를 뜻합니다. 여러 개의 View로 구성되며 App은  필요한 만큼 Activity를 가질 수 있고 그 중에 어떤 것을 화면에 띄울지 결정합니다.

  Service
UI 없이 백그라운드에서 실행되는 요소로 예를 들면 음악을 재생하는 코드를 들 수 있습니다. UI가 없기 때문에 사용자의 명령을 받아들일 수 있는 Activity와 연결해서 사용합니다.

  Broadcast Receiver(BR)
BR도 UI가 없는 것으로 시스템으로부터 전달되는 Broadcast를 대기하고 있다가 신호가 전달되면 수신하여 적절한 activity를 띄웁니다. 배터리가 떨어졌다는 신호나 데이터 전송이 완료 되었다는 등의 신호를 수신하는 역할로 이해하시면 되겠습니다.

  Content Provider(CP)
서로 다른 Application 사이에 데이터를 함부로 액세스 하지 못하도록 되어 있어 CP를 통해 프로그램간의 데이터를 공유할 수 있게 합니다. 예를 들자면 카카오톡 같은 프로그램에서 주소록의 데이터를 이용하는 것을 들 수 있겠지요.


Application은 4가지 요소 중 일부를 가질 수도 있고 여러 개를 가질 수도 있습니다.
이런 구성요소들의 구성은 manifest파일에 저장 관리 되며 최초 실행 시에 어떤 Activity를 화면에 띄울지도 같은 파일에 저장됩니다.

  구성요소간의 통신 수단 Intent
intent는 각 구성요소간의 통신을 위한 장치로 메시지에 대한 상세한 정보를 가지고 구체적인 행동을 설명하는 메카니즘입니다. 만약 '주소록 편집' activity를 호출하면 '누구의 주소를 어떻게 편집할지'가 intent에 실려 전달 됩니다. 
반응형

'컴퓨터&IT > 안드로이드 Android' 카테고리의 다른 글

Android - Activity  (0) 2011.08.24
Android 인터페이스  (0) 2011.08.24
Android application의 구조와 Life cycle  (0) 2011.08.24
Dalvik VM (Dalvik Virtual Machine)  (0) 2011.08.24
안드로이드 ? (Android)  (1) 2011.08.24
반응형
안드로이드 런타임의 Dalvik VM은 무엇일까요??

그림 출처 : http://android-developers.blogspot.com/2010/05/dalvik-jit.html

Dalvik은 Google의 Dan Bornstein이 만든 Virtual Machine 입니다.
우리가 작성한 코드는 Bytecode라는 기계에 독립적인 명령으로 컴파일되고 모바일 장치 안에 있는 Dalvik VM에 의해 실행됩니다.
 
Bytecode의 형식이 조금 다른긴 하기만 Dalvik은 결국 낮은 메모리용으로 최적화된 Java VM 이라 생각 하셔도 될 것 같습니다.

전형적인 Java에 대한 차이는 Dalvik VM은 .dex 파일을 실행 시키는데 이 파일은 표준 .class 와  .jar 파일이 컴파일 시점에서 변환된 것으로 이 .dex 파일은 클래스 파일보다 컴팩트하고 효율성이 높아 적은 메모리와 베터리를 사용하는 환경에 적합하다고 합니다.

그리고 Dalvik 이란 이름은 Bornstein이 그 의 조상이 살던 아이슬란드의 한 물고기 잡는 마을의 이름을 딴 것이라고 합니다.
 
↓↓↓이런 동네레요 ㅋㅋ아 억수로 멋있네


반응형

'컴퓨터&IT > 안드로이드 Android' 카테고리의 다른 글

Android - Activity  (0) 2011.08.24
Android 인터페이스  (0) 2011.08.24
Android application의 구조와 Life cycle  (0) 2011.08.24
Android Application 구성요소(Component)  (2) 2011.08.24
안드로이드 ? (Android)  (1) 2011.08.24
반응형

Google Android 에 대한 첫 번째 글입니다.
저도 이제 막 공부를 시작하려니 설레이네요 ^^

Android리눅스를 모바일 환경에 맞게 개조해서 만든 공개 운영체제입니다.
안드로이드 개발에는 다른 언어도 사용 가능하지만 공식적으로는 Java 언어를 사용하고 있다네요.
다양한 라이브러리를 제공하고, 써드파티 라이브러리까지 내장하고 있어서 어떤 책에서는 '오픈소소 집대성'이라는 표현도 사용하고 있습니다.
               


그리고 내장된 빌트인 프로그램과 사용자가 만든 프로그램이 동일한 API를 사용하기 때문에 모든 프로그램이 평등하다고 합니다.

안드로이드의 아키텍쳐는 아래와 같습니다.

Android System Architecture
그림 출처: http://developer.android.com/guide/basics/what-is-android.html

  먼저 제일 하위에 리눅스 커널(LINUX Kernel)이 있어서 백그라운드 스레드와 메모리를 관리하고, 보안, 디바이스 드라이버 등 저 수준의 관리를 담당합니다.

  다음 커널 위 계층에는 시스템 라이브러리(Libraries)가 있는데 이 라이브러리들의 동작이 장비의 전반적인 속도를 결정하기 때문에  Java가 아닌 C 또는 C++ 로 작성되어 있다고 합니다. 그리고 이 계층에 Android Runtime도 있는데요 Runtime은 자바 코어 라이브러리와 Dalvik 가상 머신(Dalvik VM)으로 구성됩니다. Dalvik 가상 머신은 모바일 디바이스용으로 최적화해 구현된 구글의 Java 격으로 이해 하시면 될것 같습니다. 

  세번째로 프레임워크(Application Framework) 계층에는 안드로이드의 API가 있습니다. Application은 직접 시스템 라이브러리나 하위 커널을 호출할 수 없기 때문에 API를 통해서 이들을 호출합니다.

  마지막 Applications 계층은 우리가 사용하고 보는 '앱'들이 되겠지요^^

여기까지 간단하게 안드로이드가 무엇인지에 대해 알아봤습니다.
혹시나 틀린 정보가 있다면 딴지 걸어주시길..^^
반응형
반응형

SQL injection, 악성 스크립트 등 서버를 공격하는 몇 가지 방법과 그 공격을 방어하는 프로그램 중 하나인 Web Knight에 대해 듣고 난 후 인간의 면역체계와 정말 유사하다는 생각이 들었다. 인간의 면역 체계는 외부에서 들어오는 물질에 대해 피아를 구분하는 기능이 중요하다.  그래서 면역 세포들은 피아 식별을 위해 유전자 재배열 과정을 거치고 흉선에서 선택되는 과정을 거친다. 그 후 외부의 물질을 만나면 체세포 돌연변이를 통해 그 물질과 결합하는 항체를 만들어 내거나 그 물질을 분해할 수 있는 효소나 세포를 활성화시켜 외부로부터의 침입을 방어한다. Web Knight 같은 프로그램 역시 외부에서 들어오는 패킷에 대해서 필터링 룰을 통해 피아를 식별하여 패킷의 통과와 차단 여부를 결정한다. 그리고 새로운 침입에 대해 면역세포가 체세포 돌연변이를 통해 면역 반응을 하는 것처럼 새로운 패턴의 서버 공격이 포착되면 새로운 필터링 룰을 통해 필터링할 수 있다. 물론 이런 비유가 끼워 맞추기 식의 비유일지도 모르지만 Web Knight가 오픈 소스인 것을 생각하면 같은 종이라도 각 개체가 다른 타입의 면역세포를(정확히 면역세포는 아니지만)가지고 있어서 어떤 개체는 특정 질병에 잘 걸리지만 특정 개체는 잘 걸리지 않는 점을 착안하여 개개인이 또는 단체가 가지고 있는 소스를 잘 통합 한다면 좀더 나은 필터링 룰을 제공할 수 있지 않을까 하는 생각이 든다. 물론 이것은 참여하는 모든 사람이 양심적인 경우 이지만 말이다.


반응형
반응형

OSI 7 Layer는 국제표준화기구 ISO가 1977년에 정의한 국제 통신 표준 규약입니다. 통신의 접속에서 완료까지의 과정을 7단계로 구분하여 정의한 것이며 하나의 컴퓨터에서 다른 컴퓨터로 데이터가 전송될 때, 데이터의 생성과정, 데이터의 전송과정을 표준화한 모델이라고 합니다.

이런 표준화 모델의 목적은 네트워크 설계를 간단히 하기 위한 프레임워크를 제공하고, 상호 호환성, 네트워크 문제 해결 시에 체계적으로 접근하기 위함에 있습니다. 그리고 추가 적으로 정보통신기술을 쉽게 학습하기 위한 교육의 목적도 있지요

전체적인 모형은 아래 그림과 같습니다.



■ Application Layer (응용 계층)
사용자가 네트워크를 이용할 수 있게 네트워크 관련 인터페이스를 제공하는 계층입니다. 사용자와 응용프로그램 사이라고 생각하시면 될 것 같습니다. 예로 메일전송(SMTP), 웹서비스(HTTP), 파일송수신(FTP), 호스트연결(Telnet), 네트워크 관리 프로그램 등이 있겠지요.


■ Presentation Layer (표현 계층)
데이터의 표현 방식을 결정하는 계층으로 Application Layer 에서 취급하는 다양한 형식의 표현 양식을 일반적인 전송형식으로 변환하고 암호화 하며, 데이터 압축 등의 기능을 수행합니다. 여러 종류의 파일이 각각 다른 포멧을 가진 것을 생각하면 쉬울 것 같네요


■ Session Layer (세션 계층)
응용프로그램 간의 연결을 수립하고 유지하고 종료하는 계층으로 논리적인 연결 방법을 결정합니다. 포트(port)연결이라고도 할 수 있습니다.


보통 위 세가지 계층은 소프트웨어로 통합 개 합니다.


■ Transport Layer (전송 계층)
통신하는 두 시스템 사이의 데이터 전송을 위한 통로를 제공하는 계층으로 전송 시스템과 수신 시스템 사이에 정확한 데이터 전송이 이루어지는데 필요한 기능을 담당합니다. 흐름을 제어하고 데이터를 정렬 및 확인 하며 재전송 전 오류를 수정합니다.
대표적인 프로토콜로 TCP가 있습니다. 그리고 게이트웨이 같은 장비가 이 계층에 속합니다.

■ Network Layer (네트워크 계층)
네트워크 상에서 패킷 전송에 관한 여러가지 사항들을 규정하는 계층으로 수 많은 시스템들이 연결되어 있는 네트워크 상에서 각 시스템을 구분하는 IP를 인식하여 데이터가 목적지까지 전송되도록하는 기능을 담당합니다. 대표적인 프로토콜은 IP입니다. 장비로는 라우터가 이 계층에 속합니다.


■ DataLink Layer (데이터링크 계층)
물리적으로 접속된 두 시스템간에 데이터 전송을 위한 계층으로 데이터를 Frame으로 Capsule화 하면서 MAC Address를 삽입하고 Frame이 물리적인 네트워크를 지나 오류 없이 전달 될 수 있도록 합니다. 데이터의 흐름을 제어하고 에러를 체크(수정하지는 않습니다.)합니다. 브리지나 스위치가 이 계층에 속합니다.


■ Physical Layer (물리 계층)
실제 bit로 이루어진 데이터가 전송될 전송회선과 전송되는 신호의 형태, 컴퓨터를 통신망에 접속하는 데 필요한 물리적 장비 계층으로 케이블이나 커넥터, 허브 등이 이 계층에 포함됩니다. 다시 말하면 전기적 신호의 형태 등에 대한 규정을 하는 계층입니다.

반응형

'컴퓨터&IT > 네트워크 Network' 카테고리의 다른 글

[5] 프로토콜 (Protocol)  (0) 2011.08.16
[4] Network 데이터 전송 원리  (0) 2011.08.14
[3] Network 구분  (0) 2011.08.12
[2] Network의 발달  (0) 2011.08.09
[1] 네트워크(Network) 란?  (0) 2011.08.09
반응형

프로토콜 (Protocol)은 서로 다른 기종의 컴퓨터 사이에 자료를 주고 받기 위해 약속된 규약으로
무엇을 어떻게 언제 통신할 것인가에 대한 규약이라고 생각하시면 됩니다.

흔히 언어에 많이 비교를 하더군요 서로 의사소통하기 위해서는 같은 언어를 써야하겠죠. (물론 아닌 경우도 있지만요^^)

대표적으로 아래와 같은 프로토콜들이 있습니다.^^

■ TCP/IP (Transmission Control Protocol / Internet Protocol)
 서로 다른 운영체제를 쓰는 컴퓨터 같에서 데이터를 전송할 수 있는 프로토콜로 인터넷에서 정보를 전송하기 위한 표준 프로토콜입니다.
 TCP는 데이터를 일정 단위로 나누고 포장하고 전송 중 일어난 에러를 복구하는 것에 관한 규약이고, IP는 목적지까지 데이터를 주고 받는 것에 관한 규약입니다.

■ ICMP (Internet Control Message Protocol)
 네트워크 컴퓨터 상에서 돌아가는 운영체제에서 오류메세지를 전송받는데 주로 쓰이는 프로토콜로 시스템간에 데이터를 주고 받는 역할을 하지 않습니다.
 ping 명령어가 이 ICMP를 사용해서 인터넷 접속을 테스트 합니다.

■ ARP (Address Resolution Protocol)
 주소 결정 프로토콜로 네트워크 상에서 해당 IP주소에 대응되는 네트워크 인터페이스 카드에 부여된 물리적 네트워크 주소인 MAC주소를 알려 주는 프로토콜입니다. 예를 들면 집주소를 입력하면 GPS 좌표를 알려주는 식이라고 이해하시면 쉬울것 같네요. ARP와 반대로 물리적 주소에 대응되는 IP주소를 알려주는 RARP도 있습니다.

■ SNMP (Simple Network Management Protocol)
 네트워크 장빌르 관리하고 감시하기 위한 목적의 프로토콜로 네트워크 관리자가 네트워크 성능을 관리하고 네트워크문제점을 찾아 수정하는데 도움을 줍니다.

■ SMTP (Simple Mail Transfer Protocol)
 인터넷에서 이메일을 보내고 받기 위해 사용되는 프로토콜로 주로 메일 서버 같의 송수신을 담당하며 메일 클라이언트에서 메일 서버로 메일을 보낼 때에도 사용되는 경우가 있습니다.

■ POP3 (Post Office Protocol version 3)
 인터넷에서 이 메일을 로컬로 가져오기 위한 프로토콜입니다.

■ FTP (File Transfer Protocol)
 TCP/IP 를 통해 서버와 클라이언트 사이의 파일을 전송하기 위한 프로토콜입니다.

■ RPC (Remote Procedure Call)
 TCP/IP 등을 통해 원격 호출에 사용되는 프로토콜로 멀리 떨어져 있는 컴퓨터상의 프로그램이 다른 컴퓨터 내에 있는 서브 프로그램을 불러내는 것을 의미합니다.
반응형

'컴퓨터&IT > 네트워크 Network' 카테고리의 다른 글

[6] OSI 7 Layer (Open System Interconnect 7 layer)  (0) 2011.08.20
[4] Network 데이터 전송 원리  (0) 2011.08.14
[3] Network 구분  (0) 2011.08.12
[2] Network의 발달  (0) 2011.08.09
[1] 네트워크(Network) 란?  (0) 2011.08.09
반응형

네트워크에서 데이터 전송 원리에 대해서 알아볼게요!
크게 동기식(Synchronous), 비동기식(Asynchronous) 전송과
signaling 방식에 브로드밴드(BroadBand), 베이스밴드(BaseBand) 방식이 있습니다.

먼저 동기식과 비동기식 전송에 대해서 알아볼게요! ㅋ

■ 동기식 전송(Synchronous Transmission)
  데이터를  미리 정해진 수 만큰 한 묶음으로 일괄 정송하는 방식입니다. 송신측과 수신측의 시간대를 맞춰 데이터를 전송합니다.



■ 비동기식 전송(Asynchronous Transmission)
  블록의 선두를 간지한 순간을 기준으로 해서 startbit와 stopbit에 의해 송수신 동작을 합치는 방식입니다.




다음은 signaling 방식에 대해 알아보죠.

■ 광대역(Broad Band)
  하나의 전송 매체에 여러 채널의 데이터를 전송하는 방식으로 원거리 통신에 적합합니다. 단일 링크를 통해 복수의 전송 채널을 전송할 수 있는 기술로 각각의 채널은 서로 다른 주파수에서 이루어지기 때문에 다른 네트워크의 방해를 받지 않습니다.음성, 데이터, 영상 등 멀티미디어 서비스를 제공합니다.


■ 기저 대역(Base Band)
  디지털 데이터를 그래도 보내거나 또는 전송로의 특성에 알맞은 부호로 변환시켜 전송하는 방식으로 정보 또는 신호를 이와 동일한 스펙트럼에 해당하는 전자기적 신호로 표현합니다. 같은 주파수 대역을 갖는 여러 개 신호를 하나의 전손매채를 통해서 동시에 전송할 수 없습니다.

두 방식에 대해서 비교해보면 다음과 같습니다^^

   Baseband  Broadand
 채널 상의 신호  디지털 신호  아날로그 신호 
 전송 방향  양방향  단방향 
 토폴로지  Bus, Ring  Bus, Tree
 전송 거리  10km 이내  10km이상(LAN은 그 이하)
 응용 예  데이터, 이더넷, 토큰링, ARCnet  음성, 데이터, 영상, B-ISDN, CableTV
 채널 수  단일 채널  다중 채널
 신호 복원 방법  Repeater  Amplifier
 장점  단순 기술, 저비용, 설치 용이  적은 수의 채널, 원거리 전송 가능
 다기능 동시 전송 가능
 단점  제한된 서비스, 전송거리 제약  복잡한 기술, 고비용의 설치비
반응형

'컴퓨터&IT > 네트워크 Network' 카테고리의 다른 글

[6] OSI 7 Layer (Open System Interconnect 7 layer)  (0) 2011.08.20
[5] 프로토콜 (Protocol)  (0) 2011.08.16
[3] Network 구분  (0) 2011.08.12
[2] Network의 발달  (0) 2011.08.09
[1] 네트워크(Network) 란?  (0) 2011.08.09
반응형

이번 포스트에서는 네트워크를 구분하는 방법 몇가지에 대해서 알아봅니다^^
제가 소개해 드릴 구분 방법은 세 가지!!

동작원리, 망의 크기, 구성형태따른 구분입니다.

차근 차근 살펴볼까요?

■ 동작 원리
 Peer to Peer (P2P, PtoP)
  각 스테이션들이 동등한 권하능로 서로 연결되어 서버와 클라이언트의 역할을 모두 수행하는 동작 방식입니다. 이 방식의 네트워크에서는 전용 서버가 필요없습니다.

 클라이언트/서버 (Client/Server)
  네트워크 상에서 각종 어플리케이션 프로그램과 데이터를 가지고 클라이언트가 요구하는 서비스를 제공해 주는 Server와 서버가 공급하는 데이터를 받아서 사용하는 Client로 나누어 동작하는 방식입니다.


■ 망의 크기
 LAN (Local Area Network)
  약 300m 거리내의 고속 네트워크로 한 건물 또는 캠퍼스 등에 최적인 규모의 네트워크

 MAN (Metropolitan Area Network)
  연관성 있는 LAN 상호간의 접속으로 이루어진 높은 데이터 전송률의 통신 채널로 구성된 네트워크

 WAN (Wide Area Network)
  건물, 기업, 도시 및 국가 간 등을 공중망을 통해 연결한 네트워크로 LAN이나 MAN에 비해 저속

 VAN (Value Added Network)
  WAN이나 MAN에 부가적인 통신 기능이나 응용 소프트웨어를 부가한 통신망으로 사실 망의 크기와 관련이 없는 네트워크이지만 대부분의 책에서 망의 크기에 따른 구분에 포함시킵니다.


■ 구성 형태
 버스 토폴로지 (Bus topology)
  케이블로만 일렬로 연결된 형태로 컴퓨터가 위치한 양쪽으로 데이터를 전달합니다. 트래픽이 증가하면 네트워크 속도가 떨어지고 케이블이 끊어지만 당연히 통신불가 상태가 됩니다. 케이블의 양 끝단에는 terminater가 있어서 여분의 신호를 흡수해서 다른 컴퓨터가 신호를 전송할 수 있도록 해 줍니다.



 링 토폴로지 (Ring topology)
  버스 토폴로지 형태에서 케이블의 양 끝을 연결해 고리 형태로 만든 형태의 네트워크입니다. 메세지 전송 권한을 의미하는 토큰(Token)을 사용해서 모든 컴퓨터에 동등한 액세스 기회를 제공하고 신호가 약해지는 문제가 없다는 장점을 가지고 있지만 연결된 컴퓨터 중 한대가 다운되면 전체 시스템이 다운되는 단점이 있습니다.(이런 문제는 FDDI로 해결할 수 있습니다.)



 FDDI (Fiber Distributed Data Interface)
  광케이블을 이용한 네트워크로 속도는 100Mbps이고 전송거리는 200km입니다.링 토폴로지 형태에서 링 하나를 더 연결한 형태입니다.



















 스타 토폴로지 (Star topology)

  신호를 분배해 주는 허브(Hub)라는 장치를 이용한 구성 형태로 허브가 고장나지 않는 한 어떤 컴퓨터가 다운되더라도 전체 시스템에는 영향을 주지 않습니다.



 스타-버스 토폴로지 (Star Bus topology)
  허브끼리는 버스 형태로 연결되고 각 컴퓨터는 허브에 연결된 형태의 네트워크 입니다.



 스타-링 토폴로지 (Star Ring topology)
  허브끼리는 링 형태로 연결되고 각 컴퓨터는 허브에 연결된 형태의 네트워크 입니다.



 메쉬 토폴로지 (Mesh topology)
  모든 컴퓨터가 거미줄 같이 연결된 구성 형태로 어느 한 연결이 끊어지더라도 전체 시스템은 통신이 가능합니다.

 

 

 

 

 

 


반응형
반응형


Network는 전신을 이용한 통신으로 부터 전화로 발전하여 이후에 최초의 패킷(packet) 교환 방식 네트워크인 ARPANET이 등장했습니다. 그리고 Xerox사의 Ethernet Network가 등장 했으며 현재 네트워크의 대부분은 이 Ethernet 방식으로 이루어져 있습니다.

■ ARPANET
Advanced Research Projects Agency + netowrk의 약어로 미 국방부가 보안 유지를 위해 개발한 이 ARPANET이 최초의 패킷 교환 방식의 네트워크입니다. ARPANET은 이후 인터넷의 모체가 됩니다.

■ 패킷(packet) 교환 방식
1960년대 초 군에서 음성통화의 보안 유지를 위해 음성 대화의 내용을 여러개의 조각(패킷)으로 나눠서 전송하고 수신 측에서 재조립하여 통화가 될 수 있도록 하기 위해 개발한 네트워크 방식입니다.

패킷 교환 방식 네트워크(Packet Switched Network)에는
 - TDMA (시분할 다중화)
 - CSMA/CD
 - Token System
이 있습니다.

각각에 대해서 알아 보겠습니다.


■ TDMA (Time Division Multiple Access )
시분할 다중화 방식은 하나의 중계기에 여러 사용자가 동시에 데이터를 송수신할 수 있게 하는 방식으로 동일한 주파수를 작은 시간으로 나눠서 사용자가 자신에게 주어진 시간에 주파수를 독점하게 합니다.


■ CSMA/CD (Carrier Sense Multiple Access / Collision Detection )
송신을 원하는 호스트는 송신전에 다른 호스트가 채널을 사용하고 있는지를 확인하고 만일 채널이 비어 있으면 전송을 시작하고 채널이 사용 중이면  계속 채널을 감시하다가 빈 채널이 감지되는 즉시 전송을 하는 방식으로 만일 충돌이 감지 되었을 때는 전송을 즉시 중단하고 이를 알린 후 일정 시간 후(수 ms)에 재전송을 시도하도록합니다.
쉽게 말하면 눈치 게임을 하듯이 데이터를 전송한다고 할 수 있습니다.



■ Token System
Token을 소유한 노드만이 데이터 전송을 위해 네트워크에 접근할 수 있는 방식으로 Token은 사용권한 신호를 의미며 이것을 통해 네트워크를 사용하는 노드를 제어합니다. Token은 데이터를 전송해야 되는 노드를 만날 때까지 노드 사이를 이동하고 데이터를 전송할 노드는 자신에게 Token이 올 때까지 대기했다가 토큰이 자신에게 왔을 때 데이터를 전송합니다. 이 방식은 충돌로 인한 지연시간이 없고 각 노드에 대한 네트워크 사용이 동일하게 보장됩니다.
반응형

'컴퓨터&IT > 네트워크 Network' 카테고리의 다른 글

[6] OSI 7 Layer (Open System Interconnect 7 layer)  (0) 2011.08.20
[5] 프로토콜 (Protocol)  (0) 2011.08.16
[4] Network 데이터 전송 원리  (0) 2011.08.14
[3] Network 구분  (0) 2011.08.12
[1] 네트워크(Network) 란?  (0) 2011.08.09
반응형

■ Network란 ?




Network는 고가의 주변 장치나 정보 등 컴퓨터의 자원에 대한 공유를 목적으로 탄생했습니다.
Network 를 정의 하자면
'컴퓨터 자원을 다수의 이용자가 공동으로 이용할 수 있도록 독립된 기능을 갖는 컴퓨터, 단말장치 및 기타 장치들을 서로 연결한 것' 이라고 할 수 있습니다.

대표적인 Network 이용 사례의 하나인 Internet은 전 세계 모든 종류의 컴퓨터와 통신망을 TCP/IP라는 규약을 통해 연결한 범세계적 통신 망입니다.

반응형

'컴퓨터&IT > 네트워크 Network' 카테고리의 다른 글

[6] OSI 7 Layer (Open System Interconnect 7 layer)  (0) 2011.08.20
[5] 프로토콜 (Protocol)  (0) 2011.08.16
[4] Network 데이터 전송 원리  (0) 2011.08.14
[3] Network 구분  (0) 2011.08.12
[2] Network의 발달  (0) 2011.08.09

+ Recent posts