IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

iCalendar - Internetový standard pro přenos událostí

Úvod

Pokud se řídíte přesně daným časovým rozvrhem, uloženým například v Google kalendáři, nebo Applovském iCalu, určitě ste se občas při importu/exportu či synchronizaci mezi zařízeními setkali s podivným souborem s příponou .ics. Tento soubor se dá otevřít v jakémkoliv textovém editoru a je psán podle normy RFC 2445 - Internet Calendaring and Scheduling Core Object Specification(i­Calendar). K čemu je to dobrý? Pomocí tohohle souboru můžete komunikovat mezi různými aplikacemi a zároveň zachovat kompatibilitu snad se všemi časovími organizéry. Chcete příklad? Máme webovou aplikaci, pomocí které se svolává pracovní tým na pivko. Aplikace umí například účetnictví, evidenci docházky (řád musí být) a zpracovávat .ics soubory. Tato aplikace mi běží ve dvou instancích - jedné pro programátory, druhé pro grafiky. Jednou se programátoři dohodnou, že půjdou i s grafiky. Nahrají tedy .ics soubor na adresu grafici.net/poz­vete_nas.php - aplikace skript zpracuje z .ics vytáhne všechny potřebné informace jako kdy, kde, geo-souřadnice, popřípadě jak dlouho dopředu má dát grafikům vědět, pak ten samý soubor nabídne grafikům (kteří chtějí jít s programátory na pivko) ke stažení, ti si jej stáhnou do svých iPhonů a Siri je včas upozorní že mají vyrážet. Byla tedy přenesena informace o události mezi různými platformami a každá jí rozumí.

icalendar - Co to teda umí?

Jak už sem psal, icalendar umí předávat informace o událostech, to ale není všechno. Kromě událostí lze takhle přenášet i úkoly (to-do), vést deník, či vést informace o volném čase. Nevýhodou icalendaru, je, že má poměrně striktní formátování a výsledný soubor je pro člověka vcelku nepřehledný. Dnes si ukážeme jak sestavit jednoduchý "kód" pro přenos událostí.

V kalendáři se setkáme se známými datovými typy(TEXT, FLOAT), ale jeden je zde přeci jenom zvláštní: DATE-TIME Nejedná se o klasický time-stamp jako třeba v PHP, nebo o unixový čas, ale má následující formát(používá 24-hodinový záznam): yyyymmddThhmmssZ e.q 13.6.2013 10:30PM UTC se zapíše: 20130613T223000Z Z na konci udává že uvedený čas je v UTC. Bez něj se použije časová zóna nastavená v programu, který ICS zpracovává.

Každý .ics musí mít kódování UTF-8. Dále musí začínat a končit uvozením kalendáře, musí obsahovat verzi použitého icalendaru (obdoba DOCTYPE u HTML, aktuální verze je 2.0) a "produkční identifikátor" - značku podle které lze jasně definovat kdo, nebo jaký produkt událost vytvořil. PRODID by měl vypadat zhruba takhle: PRODID:-ABC CorporationNONSGML My Product//EN Prázdný kalendář vypadá takhle:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//DevBook.cz-theAMD//NONSGML icalendar clanek v1.0//cs-CZ
END: VCALENDAR

Takovýhle kalendář však nic neumí. Vnitřek kalendáře, tedy jeho vlastnoti definují komponenty:

  • To-do - úkol
  • event - událost - tu dnes popíšu
  • journal - deník
  • Free/Busy - požadavek na volný čas
  • TimeZone - časová zóna
  • Alarm - upomínky

Zkusme ho naplnit nějakou událostí:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//DevBook.cz-theAMD//NONSGML icalendar clanek v1.0//cs-CZ
BEGIN:VEVENT
UID:[email protected]/zed/144
DTSTAMP:20130204T103700
DTSTART:20130222T103000
DTEND:20130222T221959Z
SUMMARY:Programátorský pifko
LOCATION:Hospůdka Za Rohem
END:VEVENT
END:VCALENDAR

Celkem přibylo 8 řádků z toho je 5 velice podstatných BEGIN:VEVENT a END:VEVENT - uvozuje komponentu události UID:jednoznačný identifikátor události - jeho generátor by měl deklarovat náhodnost, autoři icalendaru doporučili tvar, kdy nalevo od zavináče je čas vytvoření události a napravo je odkaz na autora - jeden autor těžko vytvoří 2 události v jedné vteřině. DTSTART: čas začátku události SUMMARY: Otrocky přeloženo shrnutí. Prostě název události, její popis, např. Zubař nebo Sraz Devbooku. Bez těchto řádků to většina programů nepřevezme, nebo nedokáže zpracovat.

Dále je tady spousta nepovinných parametrů, jako DTEND, který definuje konec události, LOCATION - textový popis místa(např. Čajovna Zelená kočka), GEO: udává souřadnice ve formátu dvou floatů oddělených středníkem, CLASS který určuje zda je událost veřejně přístupná či nikoliv, CATEGORIES, který udává zařazení události... Dál jsou tady parametry určující dokončenost projektu, ke kterému se událost váže, popis, prioritu, status události...

Máme tedy událost, kterou nám vezme OutLook, Google Calendar, iCal... příště se podíváme jak na rozdílné časové zóny a jak nastavit upozornění.

Odkazy:

Specifikace icalendar (RFC2445)

EDIT: Protože se asi najde pár lidí kteří neví jak importovat obrázek do kalendáře, tak zde je malá nápověda: Software

A aby jste viděli že to funguje, stáhněte si do svého kalendáře pozvánku na Setkání Devbooku v Praze.


 

Stáhnout

Stažením následujícího souboru souhlasíš s licenčními podmínkami

Staženo 1550x (415 B)

 

Všechny články v sekci
Software
Článek pro vás napsal Neaktivní Účet
Avatar
Uživatelské hodnocení:
Ještě nikdo nehodnotil, buď první!
Aktivity