달력

1

« 2025/1 »

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
2010. 6. 11. 11:15

iCalendar 란?? DevTerms2010. 6. 11. 11:15

요새 PIMS 관련 어플을 보면 내부적으로  iCalendar 이나 vCard를 지원한다.

아웃룩이나 구글이나 연락처,일정 관리를 이러한 식으로 관리를 하기 때문에 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
:
Posted by 깜스