반응형

NameSpace란 무엇인가?

우선 이것이 무엇인지부터 알기전에 Namespace라는 개념이 왜 생겨났는지에 대해 알아보도록 하자.

[1] NameSpace가 생기게 된 계기

 흔히 HTML, WML 등등 MarkUp Language들은 많이있다. 이들 마크업 언어들의 특징은 무엇인가? 그렇다 바로 단일화된 표현방법이다. 즉, HTML은 HTML로 , WML은 WML로 작성한다. 그럼 XML의 경우는 어떠한가? XML은 다수의 마크업 언어로 작성이 가능하다. 아래 예를 보도록 하자.

[ 고객정보 XML 표현] => CML
<?xml version="1.0" encoding="euc-kr">
<정보>
<주민번호>852255-1512555</주민번호>
<이름>홍길동</이름>
<이메일>aaaa@gmail.com</이메일>
</정보>

[ 제품 XML 표현] => PML
<?xml version="1.0" encoding="euc-kr">
<정보>
<제품코드>AD333D</제품코드>
<제품명>멋진냉장고</제품명>
<소비전력>250W</소비전력>
</정보>

위의 정보를 보라. 위 처럼 ,CML과 PML 두가지 마크업 언어로 작성된 코드가 있다. XML에서 이 두가지를 병합한다고 가정해 보자.

[ 주문 XML 표현] => OML
<?xml version="1.0" encoding="euc-kr">
<주문정보>
<정보>
<주민번호>852255-1512555</주민번호>
<이름>홍길동</이름>
<이메일>aaaa@gmail.com</이메일>
</정보>
<정보>
<제품코드>AD333D</제품코드>
<제품명>멋진냉장고</제품명>
<소비전력>250W</소비전력>
</정보>
</주문정보>

위 코드를 보라 하나의 XML로 두가지 마크업 언어를 병합하였을때 문제가 생기게 된다. 즉, 동일한 이름을 가지는 엘리먼트가 발생시 일반 어플리케이션이 두 "정보" 라는 단어에 대해서 정확한 Parsing 과정을 할 수 없게 된다.

즉 어떤정보가 유저가 원하는 정보인지를 찾을 수가 없다.

이런 문제를 해결하기 위해 [NameSpace] 가 존재하게 된것이다.

즉 NameSpace가 왜 존재하느냐에 대한 답은 각 Element간의 충돌을 방지 하기 위해서이다.

[2] NameSpace의 해결 방안.

W3C 에서는 위와 같은 충돌을 방지하기 위해 각 Element와 속성 이름을 전 세계적으로 유일하게 구분 할 수 있도록 새로운 메커니즘을 고안하여 Open 하게 된다.

그것이 바로 오늘 설명하고자 하는 Namespace in XML 이며 현재 W3C의 권고안으로 표준화 되어있는 상태이다.

[3] NameSpace의 형태

NameSpace는 URI로 표현이 된다. URI란 Uniform Resource Identifier 의 약어로 서 각 엘리먼트를 리소스 라는 명칭을 사용해 표현시, 리소스를 구분할 수 있는 문자열 이란 의미이다.

흔히들 URL과 많이 햇갈리는 사람이 있을 것이지만, 우리가 현재 웹상에서 많이 사용하고 있는 URL은 URI의 한 부분임을 잊지 말도록 하자.

XML에서는 이 Namespace를 결정짓는 이름으로 URL사용을 많이 한다.왜 URL로 많이 사용하는 것인가? 바로 도메인은 세계에서 유일하게 보장해주는 값이기 때문이다.

[3] URI 표현방법

이제 URI란 것이 무엇인지도 알았다 . 그럼 이걸 어떻게 표현하는지를 한번 살펴 보도록 하자.
URI를 표현하기위해 URL을 이용한다는 것은 앞에서도 언급했던 부분이다. 그럼 모든 엘리먼트 마다 URL을 다 적어 준다면, 과연, XML문서를 읽기가 쉬울것인가? 아니다. 분명 더 난감해질것이다. 그래서 생긴것이 "접두어" 이다.

아래 코드를 보도록 하자.

[ 네임스페이스 선언 방법 ]
<Element 명 xmlns:접두어="네임스페이스이름">
     <접두어:엘리먼트명> </접두어:엘리먼트명>
</Element 명>

네임스페이스선언이라함은 이제 알게 될것이다.바로 접두어를 선언하는 것과같은 것이다. 접두어란 긴~~~ NameSpace를 짧은 Alias로 변환해 준다고생각하면 좀 더 쉬울 것이다.

아래 코드를 보자 위 [1]번에 언급되었던 중복된 엘리먼트 간의 관계를 접두어로 표현한 것이다.

[ 주문 XML 표현] => OML
<?xml version="1.0" encoding="euc-kr">
<주문정보 xmlns:고객= "http://pedora.co.kr/11/aaaML" xmlns:제품="http://pedora.co.kr/11/bbbML">
<고객:정보>
<고객:주민번호>852255-1512555</고객:주민번호>
<고객:이름>홍길동</고객:이름>
<고객:이메일>aaaa@gmail.com</고객:이메일>
</고객:정보>
<제품:정보>
<제품:제품코드>AD333D</제품:제품코드>
<제품:제품명>멋진냉장고</제품:제품명>
<제품:소비전력>250W</제품:소비전력>
</제품:정보>
</주문정보>

위 코드를 보면 확실히 어플리케이션이 Parsing시 어떠한 정보를 Parsing 해야하는지

감이잡히게 된다.



[정리]

지금까지 XML를 기준으로 NameSpace란 무엇인가에 대해 한번 알아보는 시간을 가졌다. 이 개념을 공부하게 된 계기는 RDF 즉, 온톨로지 모델링에 있어서 NameSpace는 중요한 역할을 하기 때문이다.

위의 관점에서 다음 에 오는 어떠한 MarkUp 랭귀지도 XML에서는 표현 가능하다는 것을 알 수 있다.

                                                               - 2010.09.14 랑이씀 -

반응형

'Semantic Web > 용어정리' 카테고리의 다른 글

[RDFWeb] FOAF 란?  (0) 2010.09.13
[ Semantic Web 이란 ? ] => 업데이트중  (0) 2010.08.25
반응형
온톨로지의 RDF 문서를 제작 하다보면 FOAF란 용어를 가끔 보게 된다.

오늘은 이 용어에 대해 조금 알아보도록 하겠다.

FOAF는  Wiki 에서 찾아보면 아래와 약어가 같다.

[ FOAF(Friend Of A Friend) 의 정의 ]

이 용어는 어떤것을 명세화 라는 과정을 거칠때 사용하는 것으로, 시맨틱 웹 기술을 이용해
사람을 기술하고 기계가 이를 자동으로 통합하고 처리 할 수 있도록 포맷을 정형화 한 것이다.
FOAF는 각각의 사람을 기술하는 문서만 작성하면, 그를 기반으로 기계가 자동으로 SNS 를 형성 할수 있다는데 강점이 있다.

출처 : http://ids.snu.ac.kr/wiki/%ED%9A%A8%EC%9C%A8%EC%A0%81%EC%9D%B8_FOAF_%EB%AC%B8%EC%84%9C_%ED%81%AC%EB%A1%A4%EB%A7%81_%EC%8B%9C%EC%8A%A4%ED%85%9C_%EA%B5%AC%ED%98%84
반응형

'Semantic Web > 용어정리' 카테고리의 다른 글

NameSpace란?  (5) 2010.09.14
[ Semantic Web 이란 ? ] => 업데이트중  (0) 2010.08.25
반응형
1. [ 계정 추가 ]

$ sudo adduser testUserId

'testUserId' 사용자를 추가 중...
새 그룹 'testUserId' (1010) 추가 ...
새 사용자 'testUserId' (1010) 을(를) 그룹 'testUserId' (으)로 추가 ...
'/home/testUserId' 홈 디렉터리를 생성하는 중...
'/etc/skel'에서 파일들을 복사하는 중...
새 UNIX 암호 입력:
새 UNIX 암호 재입력:
passwd: password updated successfully
Changing the user information for testUserId
Enter the new value, or press ENTER for the default
        Full Name []: Moon Ul
        Room Number []:
        Work Phone []:
        Home Phone []:
        Other []:
정보가 올바릅니까? [Y/n] Y

2. [계정 삭제]

계정 삭제하는 방법에는 여러가지가 있다 아래 예제를 보자.

 $deluser testUserId
=> 요방법은 해버리면, 계정은 지워지나, /home/testUserId/ 폴더는 그대로 남아있게 된다.
    
 $deluser --remove-home testIUserId
=> 요 방법으로 해야 홈디렉토리 이하 폴더까지 후다닥 날라간다.

 $deluser --remove-home testIUserId
=> 요방법으로 해버리면 홈디렉토리 뿐만 아니라 testUserId가 소유하고 있는 모든 파일까지 삭제되어 버린다.

3. [ 사용자 그룹 추가 ]

 $groupadd testGroup(그룹명)
=> 그룹 추가 방법

 $usermod -g testGroup(바뀔 그룹명) testId(유저아이디)
=> 그룹 변경 방법

$ id
uid=1001(testId) gid=1016(testGroup) 1016(testGroup)
= > 그룹명 확인방법( 반드시 재로그인 해야 한다)


                                                                                     - 2010.09.06 랑이씀 -
반응형

'Server > Linux' 카테고리의 다른 글

[ /etc/shadow 파일 분석]  (0) 2010.09.19
[SSH 로그인 환영 메시지 작성]  (0) 2010.09.15
[ Linux 유용한 명령어 모음집 ]  (0) 2010.07.13
Linux Os Kernel Version 정보 확인방법  (0) 2010.06.15
APM 설치하기 가이드  (0) 2010.06.04
반응형
PHP에서 DB결과를 while문을 통해 뿌리고 난뒤에

다시한번 해당 변수를 사용하고 싶은 경우가 많다.

이럴경우 메소드를 못찾아서 해맸는데

아래 메소드를 이용하면된다.

즉 아래 메소드를 사용하게 되면, Iterator 와 같은 선택 값이 가장 맨 앞단으로

초기화 된다.

 mysql_data_seek($email_selectList, 0);

요거 못찾아서 1시간 헤맸넹 ㅋㅋㅋㅋㅋ
반응형

+ Recent posts