iCalendar 란?? DevTerms2010. 6. 11. 11:15
아웃룩이나 구글이나 연락처,일정 관리를 이러한 식으로 관리를 하기 때문에 iCalendar에 대해서 찾아 보던중
정리가 잘되어 있는 글을 발견하여 퍼왔다.작성하신분께 감사드립니다^^
1. iCalendar란?
1.1 요약
iCalendar라고도 하는 iCal은 사용자가 서로 다른 컴퓨터 및 프로그램 간에 전자 캘린더를 만들어 공유할 수 있도록 하는 표준 인터넷 캘린더 형식입니다.
iCal 형식이 지속적으로 인기를 얻게 되면서 많은 업체가 iCal 표준을 채택하고 있습니다. Mac OS X 운영체제에서 실행되는 개인 캘린더 응용 프로그램인 Apple의 iCal이 현재 해당 형식을 사용하는 수많은 프로그램 중 하나입니다. 그 밖에 모질라 썬버드 및 MS 아웃룩 등이 있습니다.
2. 주요 iCalendar 스팩
2.1 Content Lines
iCalendar 객체는 각각 텍스트 라인으로 이루어져 있는데 이 각각의 라인을 'Content Line'이라고 부른다. 컨텐츠 라인(Content Line)은 캐리지리턴(\r, CR)과 라인피드(\n, LF)로 구분한다. 컨텐츠 라인(Content Line)이 멀티라인일 경우, CR+LF이후에 곧바로 공백(white-space character)이 와서 구분한다. 아웃룩에서는 탭(\t)으로 구별하는 경우도 있다.
ex) DESCRIPTION:This is a long description that exists ß CRLF
on a long line. ß 공백
프로퍼티나 파라미터의 값은 List가 될 수 있으며 콤마(,)로 구분한다.
ex) EXDATE:19960402T010000Z,19960403T010000Z,19960404T010000Z
2.2 프로퍼티 파라미터 (Property Parameter)
프로퍼티는 결합된 속성을 가질 수 있고 그 속성을 'Property Parameter'라고 한다.
ex) SUMMARY;LANGUAGE=ko:QA 관련 교육 //LANGUAGE=ko
2.3 캘린더 객체 (iCalendar Object)
캘린더와 일정 정보의 집합을 'iCalendar Object'라고 한다.
BEGIN:VCALENDAR … (Body) ... END:VCALENDAR로 이루어져 있다.
ex)
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//hacksw/handcal//NONSGML v1.0//EN
BEGIN:VEVENT
UID:19970610T172345Z-AF23B2@example.com
DTSTAMP:19970610T172345Z
DTSTART:19970714T170000Z
DTEND:19970715T040000Z
SUMMARY:Bastille Day Party
END:VEVENT
END:VCALENDAR
2.4 프로퍼티 (Property)
캘린더 객체 또는 캘린더 컴포넌트를 구성하는 각각 속성을 'Property'라고 한다.
ex) DTSTART:19960415T133000Z // (DTSTART Property)
2.5 캘린더 컴포넌트(Calendar Components)
다수의 property로 하나의 의미를 가지는 property 집합을 'Calendar Components'라고 한다. event, to-do, Journal entry, time zone정보, free/busy 시간정보, 알람이 해당된다.
(1) VEVNET 컴포넌트 : 일정(event)에 대한 정보의 그룹.
ex)
BEGIN:VEVENT
ATTENDEE;CN="가가가";RSVP=TRUE:mailto:stdayzzzz@zzzzz.com
ATTENDEE;CN="나나나";RSVP=TRUE:mailto:enigmakjozzzz@zzzzz.com
ATTENDEE;CN="다다다[블루]";ROLE=OPT-PARTICIPANT;RSVP=TRUE:mailto:ujdioszzzz@zzzzz.com
CLASS:PUBLIC
CREATED:20091117T091427Z
DESCRIPTION:정대리님을 위한 CA 리뷰를 진행 하고자 합니다.\n\n
DTEND:20091119T100000Z
DTSTAMP:20091117T091515Z
DTSTART:20091119T090000Z
LAST-MODIFIED:20091123T042643Z
LOCATION:15층 B회의실
ORGANIZER;CN="녕[슈]":mailto:zzzz@zzzzz.com
PRIORITY:5
SEQUENCE:0
SUMMARY;LANGUAGE=ko: **&&&&CA 리뷰
TRANSP:OPAQUE
UID:040000008200E00074C5B7101A82E00800000000E0F6..
END:VEVENT
(2) VTIMEZONE 컴포넌트: 시간대역(time zone)을 정의하는 프로퍼티의 그룹.
ex)
BEGIN:VTIMEZONE
TZID:서울
BEGIN:STANDARD
DTSTART:16010101T000000
TZOFFSETFROM:+0900
TZOFFSETTO:+0900
END:STANDARD
END:VTIMEZONE
(3) VALARM 컴포넌트 : 알림을 정의하는 프로퍼티 그룹.
ex)
BEGIN:VALARM
TRIGGER:-PT720M
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
2.6 캘린더 속성 (Calendar Properties)
iCalendar Object에 적용된 속성을 'Calendar Properties'라고 한다.
BEGIN:VCALENDAR 이후에 명기되어야 한다.
(1) METHOD: iCalendar object의 목적이 기술된다.
값은 요청(Request), 답변(Reply), 취소(Cancel), 발행(Publish) 이 있다.
ex) METHOD:REQUEST
(2) PRODID: iCalendar Object의 작성자의 정보가 기술된다.
ex) PRODID:-//NHN Corp//Naver Calendar 1.0//KO
(3) VERSION: iCalendar object의 버전
ex) VERSION:2.0
2.7 컴포넌트 속성(Component Properties)
(1) 서술 컴포넌트 프로퍼티(Descriptive Component Properties)
1) ATTACH: iCalendar문서와 관련된 정보가 기술된다.
디폴트는 인코딩된 URI 정보이다.
ex)ATTACH;ENCODING=BASE64;VALUE=BINARY;XFILENAME=meeting.ics:QkVHSU46VkNBTEVOREFSClBST0RJRDotLy9OSE4gQ29ycC8vTmF2ZXIgQ2FsZW5kYXIgMS4wLy9LTwpWRVJTSU9OOjuMApDQUxTQ0FMRTpHUkVHT1JJQU...
2) CLASS: 캘린더 컴포넌트의 접근권한이 기술된다.
ex) CLASS:PUBLIC // PRIVATE, CONFIDENTIAL
3) DESCRIPTION: 일정의 상세 정보가 기술된다. (본문, 내용)
ex) DESCRIPTION: CA 리뷰를 진행 하고자 합니다.\n\n ...
4) LOCATION: 일정의 장소가 기술된다.
ex) LOCATION:15층 B회의실
5) PRIORITY: 일정의 중요정도가 기술된다.
1~9의 숫자이며 1이 가장 중요한 일정이다.
ex) PRIORITY:5
6) SUMMARY: 일정의 제목이 기술된다.
ex) SUMMARY: CASS 인수인계
(2) 날짜와 시간 컴포넌트 프로퍼티 (Date and Time Component Properties)
1) DTEND: 일정이 끝나는 일시가 기술된다.
ex) DTEND:20091119T100000Z //Z는 세계표준시
2) DTSTART: 일정이 시작하는 일시가 기술된다.
ex) DTSTART:20091119T090000Z
3) TRANSP: 가능시간 여부를 공개할것 인지 말것 인지가 기술된다.
[값(value) ]
OPAQUE: 공개하지 않음. (디폴트 값)
TRANSPARENT: 공개함.
ex) TRANSP:OPAQUE
(3) 타임존 컴포넌트 프로퍼티(Time Zone Properties)
1) TZID: "VTIMEZONE" 컴포넌트의 식별자 이다.
2) TZOFFSETFROM: UTC(협정 세계시)의 시간차(offset)를 기술한다.
3) TZOFFSETTO: 해당 타임존이 준수하는 시간차(offset) 이다.
ex)
BEGIN:VTIMEZONE
TZID:서울 //!!
BEGIN:STANDARD
DTSTART:16010101T000000
TZOFFSETFROM:+0900
TZOFFSETTO:+0900
END:STANDARD
END:VTIMEZONE
(4) 관계 컴포넌트 프로퍼티(Relationship Component Properties)
1) ATTENDEE: 참석자를 기술한다.
[파라미터]
CN: 보여지는 이름을 기술한다.
ROLE: 참석자가 가지게 될 역할이 기술된다.
REQ-PARTICIPANT: 참석이 요구됨.
RSVP: 회답여부가 기술된다., 값으로는 TRUE, FALSE 약속초대 할 경우, 기본적으로 TRUE이다.
PARTSTAT: 참석자의 상태가 기술된다. NEED-ACTON, ACCEPTED, DECLINED, TENTATIVE, DELEGATED
ex) ATTENDEE;CN="홍길동";ROLE=OPT-PARTICIPANT;RSVP=TRUE:mailto:z@zz.com
2) ORGANIZER: 일정의 주체자가 기술된다.
ex) ORGANIZER;CN="홍길동[홍]":mailto:nnn@zzzzz.com
3) RECURRENCE-ID: 반복일정의 객체(instance)를 식별하기 위한 프로퍼티이다.
UID, SEQUENCE와 함께 사용된다. 반복일정의 DTSTART 값이다.
ex) RECURRENCE-ID:20100513T093000Z
4) UID: 일정을 식별하기 위한 프로퍼티이다. 유일한(unique)값이어야 한다.
ex)UID:c2029c30f6146b336e2ec45e6693cda0a307e5322…@nhn.com
(5) 반복 컴포넌트 프로퍼티(Recurrence Component Properties)
1) EXDATE: 반복일정에서 일시가 예외일 경우 기술된다.
ex) EXDATE:19960402T010000Z,19960403T010000Z,19960404T010000Z
2) RRULE: 반복일정의 반복 패턴이 기술된다. DTSTART 프로퍼티와 함께 사용된다.
ex) RRULE:FREQ=DAILY;INTERVAL=1;UNTIL=20100503T145959Z
//2010.05.03 까지 매일 반복
(6) 알림 컴포넌트 프로퍼티(Alarm Component Properties)
1) ACTION: 알림 방법이 기술된다.
ex) ACTION:EMAIL //이메일로 알림.
2) TRIGGER: 알림이 일어날 시간를 기술한다. 몇분전 알림으로 주로 쓰임.
ex)TRIGGER:-PT15M // 15분 전 알림.
(7) 변경 관리 컴포넌트 프로퍼티(Change Management Component Properties)
1) DTSTAMP: METHOD 프로퍼티와 함께 사용할 경우, 일정이 만들어진 일시가 기술된다.
METHOD프로퍼티가 없을 경우, 수정 일시가 기술된다.
ex) DTSTAMP:20100524T103349Z
2) LAST-MODIFIED: 최종 수정 일시가 기술된다.
ex) LAST-MODIFIED:20100511T060818Z
(8) 기타 컴포넌트 프로퍼티(Miscellaneous Component Properties)
1) 비표준 프로퍼티: 프로퍼티 이름 앞에 "X-"이라는 접두사가 붙는다.
캘린더 객체의 확장을 제공한다.
ex) X-ALT-DESC;FMTTYPE=text/html:<!DOCTYPE HTML PUBLIC "-//W3C//…
3.iCalendar Object 예제
BEGIN:VCALENDAR // BEGIN:VALENDAR로 시작하여야 한다.
METHOD:REQUEST // iCalendar의 목적을 기술함. 답변을 요청함.
PRODID:Microsoft CDO for Microsoft Exchange // iCalendar 작성자
VERSION:2.0
BEGIN:VTIMEZONE // 시간대역 컴포넌트
TZID:서울
BEGIN:STANDARD
DTSTART:16010101T000000
TZOFFSETFROM:+0900
TZOFFSETTO:+0900
END:STANDARD
END:VTIMEZONE
BEGIN:VEVENT //VEVENT 컴포넌트
ATTENDEE;CN="가가가";RSVP=TRUE:mailto:stdayzzzz@zzzzz.com
ATTENDEE;CN="나나나";RSVP=TRUE:mailto:enigmakjozzzz@zzzzz.com
ATTENDEE;CN="다다다[블루]";ROLE=OPT-PARTICIPANT;RSVP=TRUE:mailto:ujdioszzzz@zzzzz.com
CLASS:PUBLIC
CREATED:20091117T091427Z
DESCRIPTION:정대리님을 위한 CA 리뷰를 진행 하고자 합니다.\n\n
DTEND:20091119T100000Z
DTSTAMP:20091117T091515Z
DTSTART:20091119T090000Z
LAST-MODIFIED:20091123T042643Z
LOCATION:15층 B회의실
ORGANIZER;CN="녕녕[쌀]":mailto:zzzz@zzzzznhn.com
PRIORITY:5
SEQUENCE:0
SUMMARY;LANGUAGE=ko: **&&&&CA 리뷰
TRANSP:OPAQUE
UID:040000008200E00074C5B7101A82E00800000000E0F659E9B167CA0100000000000000001000000089
AE9F788943DF47A3477FBF8C571E18
END:VEVENT
BEGIN:VALARM // 알림 컴포넌트
TRIGGER:-PT720M
ACTION:DISPLAY
DESCRIPTION:Reminder
END:VALARM
END:VCALENDAR
4.참고문서
4.1 RFC-5545 Internet Calendaring and Scheduling Core Object Specification (iCalendar)
- http://tools.ietf.org/html/rfc5545#section-3.6.6
- 이 문서에 기술되지 않은 프로퍼티나 파라미터는 위의 링크를 참조하면 됨.
<깜스추가부분 링크>
4.2 RFC-2445 Internet Calendaring and Scheduling Core Object Specification (iCalendar)
- http://www.ietf.org/rfc/rfc2445.txt
4.3 캘린더 표준으로 알아보는 일정관리 S/W의 구현방법
- http://jongmin.tistory.com/98
4.4 RRULE 정리
- http://expkks.spaces.live.com/blog/cns!49340B35A176265C!506.entry
[출처] iCalendar 주요 스팩|작성자 BestSuit
'DevTerms' 카테고리의 다른 글
TFT(TASK FORCE TEAM) (0) | 2012.04.30 |
---|---|
override VS overload (0) | 2012.02.23 |
ContentType 종류. (0) | 2010.09.28 |
네이티브 개발자와 매니지드 개발자 (0) | 2010.04.29 |
OOP & AOP (0) | 2010.02.25 |