[Tizen] 플랫폼 개관

플랫폼 개관

타이젠 플랫폼(Tizen Platform)은 다양한 디바이스를 지원하는 표준을 준수하는 플랫폼이다. 이제부터 기술하는 소프트웨어 플랫폼은 스마트폰과 태블릿 디바이스를 대상으로 한다. 다른 장치에 대해서도 곧 선보이겠다. 소프트웨어 플랫폼으로 웹 애플리케이션을 작성할 수 있다. 타이젠 웹 API 참고문서에서 웹 애플리케이션에 개발에 필요한 전반적인 내용을 볼 수 있다.

아래 그린 그림은 스마트폰과 태블릿 디바이스를 대상으로 한 타이젠 아키텍쳐를 보이고 있다. 보다시피 애플리케이션, 코어, 커널의 3개 레이어로 구성되었다.

어플리케이션 레이어
타이젠에서는 웹 애플리케이션을 구동할 수 있다. 타이젠 웹 애플리케이션은 네이티브 애플리케이션처럼 타이젠 플랫폼의 모든 기능을 이용할 수 있다.

코어 레이어
코어 레이어는 타이젠 API와 타이젠 코어 서비스(Tizen Core Service)로 구성되어 있다.

타이젠 API
타이젠 웹 애플리케이션은 타이젠 웹 API(Tizen Web API)로 개발할 수 있다. 타이젠 웹 API는 W3C(HTML5와 기타) 기술, Khronos WebGL 기술 및 신규로 정의되는 디바이스 API의 모음을 말한다.

타이젠 코어 서비스
애플리케이션 프레임워크
애플리케이션 프레임워크는 애플리케이션 관리(ex. 패키지 이름이나 URI, MIME 타입을 이용해 애플리케이션을 실행)기능을 제공한다. 시스템 다이얼러(dialer) 애플리케이션 같이 미리 정의된 서비스도 실행시킨다.
애플리케이션 프레임워크는 남은 메모리 적음, 배터리 부족, 화면 표시 방향 변화, 푸시 알리기(push notification)등의 공통 이벤트를 알려준다.

베이스(Base)
베이스는 데이터 베이스 기능, 국제화 기능, XML 파싱등의 중요 기능을 갖고있는 리눅스 핵심 시스템 라이브러리를 갖고 있다.

커넥티비티(Connectivity)
커넥티비티는 네트워크와 네트워크 연결과 관련된 기능-3G, Wi-Fi, 블루투스, HTTP, NFC(Near Field Communication) 을 제공한다. 데이터 네트워크는 3G, Wi-Fi 기반 네트워크 연결을 관리하는 ConnMan(Connection Manager)를 기반으로 한다.

그래픽 및 UI
그래픽 및 UI는 시스템 그래픽과 UI 스택으로 이루어져 있다. UI 스택은 EFL(Enlightenment Foundation Libraries)와 X11 기반의 윈도우 관리 시스템, 입력 처리 기능, OpenGL-ES를 포함하고 있다.

그래픽 컴포넌트의 핵심인 EFL은 라이브러리 모음이다. UI 해상도에 따른 풍성한 그래픽을 쉽게 처리할 수 있다. EFL은 자기가 갖고 있는 레이어 내부에 UI의 상세 사항을 감추어 놓았기 때문에 사용하기 쉽고 3D 변환 처리등을 수행한다. EFL은 evas 캔버스 API 라이브러리와 기본 위젯 라이브러리를 갖고 있다.

Location(위치)
Location은 위치 기반 서비스(LBS)를 제공한다. 위치 정보, 지오코딩(geocoding), 위성정보, GPS 상태등의 정보를 제공한다. Location은 GeoClue에 기반하고 있다. GeoClue는 GPS, WPS(Wi-Fi 위치 시스템), Cell ID, 센서등의 다양한 위치 정보를 제공하는 소스를 제공한다.

메시징
메시징은 SMS, MMS, Email, IM으로 구성되어 있다.

멀티미디어

멀티미디어는 GStreamer에 기반을 두고 있다. 비디오, 오디오, 이미징, VoIP같은 미디어를 지원한다. 미디어 파일의 메타 데이터 정보 관리하는 미디어 컨텐트 관리 기능도 지원한다.

PIM(Personal Information Management)
PIM는 달력, 주소, 작업, 디바이스의 정보(디바이스 위치, 케이블 상태)같은 디바이스에 담긴 사용자 정보를 관리한다.

보안(Security)
보안은 시스템에 배포시 발생할 수 있는 보안 관련 이슈를 처리한다. 보안은 접근 제어, 인증서 관리, 보안 애플리케이션 배포등의 플랫폼 보안 기능으로 구성되어 있다.

시스템
시스템은 시스템 관련 기능과 디바이스 관리 기능으로 구성되어 있다. 세부 사항은 다음과 같다.
-센서나 디스플레이, 바이브레이터같은 장치 접근 인터페이스
-LCD 디스플레이 후광 조절 및 끄기, 애플리케이션 프로세스 슬립(sleep) 모드등의 전원 관리
-디바이스 모니터링 및 USM, MMC, charger, 이어 잭(ear jack) 이벤트 처리
-시스템 업그레이드
-모바일 디바이스 관리

텔레포니(Telephony)
텔레포니는 모뎀과 통신하는 셀룰라 기능으로 구성되어 있다.

-전화 관련, 비전화 관련 정보 관리 및 UMTS, CDMA 서비스 관리
-패킷 서비스 및 UMTS, CDMA 네트워크 상태 정보 관리
-UMTS, CDMA를 이용한 SMS 서비스 관리
-SIM 파일, 전화번호북, 보안 관리
-UMTS용 SIM 애플리케이션 툴킷 서비스 관리

웹(Web)
웹은 저전력 디바이스에 최적화된 타이젠 웹 API를 완벽히 지원한다. 웹은 WebKit도 구성요소로 갖고 있다. WebKit은 웹 브라우저로 웹 페이지를 볼 수 있도록 설계된 레이아웃 엔진을 말한다. 웹은 웹 애플리케이션 구동을 위한 웹 런타임 환경도 제공한다.

커널 레이어
커널 레이어는 리눅스 커널과 디바이스 드라이버로 구성되어 있다.

출처: http://www.tizen.org의 내용을 번역

HTML과 XHTML의 차이

XHTML은 HTML의 단점을 보안하기 위해서 만들어진 언어라 할 수 있습니다. 문법적으로 xml을 따랐다고는 하나 대부분 HTML과 큰차이를 보이지 않습니다. 그러므로 HTML을 기본적으로 아는 사람들은 HTML과 XHTML의 차이만 이해하면 XHTML을 어렵지 않게 사용할 수 있습니다.

다음은 HTML과 XHTML의 차이점입니다. 전체적으로 HTML에 비해 문법적으로 엄격해 졌습니다. 두리뭉실한 HTML, 까칠한 XHTML 입니다.^^

종료태그가 반드시 있어야 한다.

HTML 은 종료태그가 없는 것을 허용하였습니다.

<p>문단
<p>문단

이런식으로 종료태그( </p >)를 붙히지 않아도 문제가 생기지 않았습니다. XHTML 의 경우 반드시 종료태그를 사용하여 닫아주어야 합니다.

잘못된 중첩을 허용하지 않는다.

HTML 은 태그가 잘못 중첩되어도 화면표시(렌더링)에 별 영향을 미치지 않았지만 XHTML의 경우 잘못된 중첩은 화면표시(렌더링)에 직접적인 영향을 주기도 합니다.

요소(element)와 속성(Attribute)은 소문자로 표기되어야 한다.

HTML은 요소와 속성에 대소문자를 함께 사용하는 것을 허용하였으나 XHTML은 요소와 속성들을 반드시 소문자로 표기해야 합니다. xml이 대소문자를 구별하기 때문입니다. HTML에서는 대소문자의 구별이 없죠.

속성 ‘값’들은 항상 따옴표로 감싸주어야 합니다.

HTML 의 경우 속성 값들을 따옴표로 감싸지 않는 것을 허용하였지만 XHTML 에서는 반드시 속성값은 따옴표 안에 있어야 한다.

<p align=center >로 하면 안되고 <p align="center">와 같이 반드시 따옴표를 사용해야 합니다.

속성과 값의 단축표기를 허용하지 않는다.

HTML 에서는 속성과 속성 값의 단축표기를 허용하였으나 XHTML 에서는 단축표기 하는 것을 허용하지 않습니다.
<input checked> <input checked="checked"> 와 같이 사용해야 합니다.

비어있는 태그(종료태그가 없는 태그)도 종료 되어야 한다.

HTML 에서 <br>, <hr> 과 같이 콘텐트를 담지 않는 빈 태그들은 <br/>, <hr/> 과 같이 표기하여 시작태그에서 곧 종료됨을 표기해 주어야 한다.

XHTML의 필요성?

간단하게 나마 XHTML이 HTML에 비해서 어떤 점이 틀리다는 것을 짚어봤습니다. 서두에서도 말했듯이 문법적으로 좀더 엄격해 졌다고 할 수 있죠. 이런 엄격함으로 인해 보다 다양한 브라우저에서 정확하게 문서가 표시될 수는 있습니다. 예를 들어서 PDA에서 사용되는 웹브라우저에서도 PC의 웹브라우저와 거의 똑같은 화면을 표시할 수 있다는 겁니다. 아무래도 다소 느슨한 HTML로는 웹브라우저가 달라지면 다른 모양으로 보일 여지가 많거든요.

출처: http://www.homejjang.com/05/html_xhtml.php

[WEB] HOW TO INCLUDE CSS

CSS를 HTML 에 삽입하기 위한 방법에는 크게 3가지가 있다.

외부파일로 삽입
HTML 내 삽입
TAG에 직접 삽입

외부파일로 삽입

이 방법은 말 그대로, CSS를 외부에서 파일로 저장해서. HTML에서 불러서 사용을 하는 방법이다.

사용법은 CSS 파일을 *.css 라는 확장명으로 저장한 뒤, HTML 에서 이 파일을 사용하겠다고, 링크를 걸어주면 된다.

위의 방법처럼, 해주면, stylesheets.css 라는 파일을 외부에 정의해 두고, 사용을 할 수 있다. 이 방법의 가장 큰 장점은 뭐니 뭐니 해도, 전체적인 디자인 관리가 체계적이라는 것이다.

만약, 디자인이 변경될 필요가 있을 때, HTML 코드를 손 보는 것이 아니라, 스타일 시트 파일만 수정을 하여, 전체 적인 디자인 변경 작업을 하는 것이다. 관리할 페이지가 많을 수록 위력을 발휘할 수 있다.

HTML 내 삽입

또 다른 방법으로는 CSS를 HTML 상단에 삽입하여 쓰는 방식이다. 간단한 스타일 시트 같은 경우는 이 방법도 꽤 유용할 수 있다.

HEAD TAG 사이에 CSS 정의를 위치시키면 된다. 이때, 웹브라우저가 CSS를 인식을 못할 수도 있으므로, 표시로 주석으로 해준다. 이렇게 되면, 웹브라우저가 CSS를 인식을 못해도, 주석으로 간주하기 때문에, 화면에 CSS 내용이 출력되지 않는다.

만일 주석처리를 해주지 않고, 브라우저가 CSS를 인식하지 못할 경우, 화면에 CSS정의 내용이 그대로 출력이 되게 된다.

TAG에 직접 삽입

이 방법은 HTML TAG 내에 그대로 CSS를 정의하는 것이다.

<H1 style="margin-left:30px;">
글 제목
</H1>

TAG를 사용할 때, 그 안에 바로 스타일을 정의 하면 된다.

상당히 간단한 방법이지만, 나중에 유지 보수의 어려움이 있을 수 있다. 정의된 스타일이 변경되면, 일일이 찾아가서 바꿔야 하기 때문이다. 하지만, 간단한 스타일의 정의 같은 경우는 CSS정의가 쉬우므로, 편리하게 사용될 수 있다.

퍼옴: http://aboutmi.tistory.com/entry/CSS-%EC%82%BD%EC%9E%85-%EB%B0%A9%EB%B2%95

xmlns

요소 내에 xmlns 속성이 정의된 것을 자주 본다.

이 속성의 용도는 무엇일까?

요소의 이름 (Name)은 동일하게 사용하지만 의미가 다를 때

둘 간을 구분하기 위해 사용하는 이름공간 (Namespace)이다.

자바의 패키지 (Package)와 비슷한 역할을 하고 있다고 볼 수 있다.

보통 다음과 같이 사용한다.

<personxml:person xmlns:personxml="http://www.your.example.com/xml/person" xmlns:cityxml="http://www.my.example.com/xml/cities">
    <personxml:name>Rob</personxml:name>
    <personxml:age>37</personxml:age>
    <cityxml:homecity>
         <cityxml:name>London</cityxml:name>
         <cityxml:lat>123.000</cityxml:lat>
         <cityxml:long>0.00</cityxml:long>
    </cityxml:homecity>
</personxml:person>

xmlns:xxx에서 xxx는 이름공간을 요소에 사용할 때 Prefix이다.

생략될 경우 디폴트 이름공간에 대한 설정이 된다.

xmlns 속성의 값은 보통 URI이지만 실제 리소스 (Resource)가 존재하는 것은 아니다.

다만 식별자로서만 의미가 있다.