Časované úlohy, díl první - MujMAC.cz - Apple, Mac OS X, Apple iPod

Odběr fotomagazínu

Fotografický magazín "iZIN IDIF" každý týden ve Vašem e-mailu.
Co nového ve světě fotografie!

 

Zadejte Vaši e-mailovou adresu:

Kamarád fotí rád?

Přihlas ho k odběru fotomagazínu!

 

Zadejte e-mailovou adresu kamaráda:

Seriály

Více seriálů



Informace

Časované úlohy, díl první

23. května 2006, 00.00 | Je-li počítač zapnutý, provádí mnoho operací, aniž by o nich uživatel nutně věděl. Systém neustále spravuje řadu úloh, které vyžaduje ke své činnosti. Doba, kdy byl v počítači spuštěn jediný program, je dávnou minulostí. Podívejme se, jak tyto možnosti využít pro své potřeby.

Počítač má jednu úžasnou schopnost, může za nás automaticky spravovat řadu informací a v pravou chvíli nám sdělit stav. Všichni si asi hned vybaví nějaký program na správu osobního času, třeba iCal. Správně, v celé řadě případů bude iCal tím nejvhodnějším řešením. O několik řádků dále si přiblížíme případy, kde právě tento program můžeme s úspěchem využít. V článku se však chci změřit na něco jiného. Na automatické úlohy, které počítač provádí zcela sám, po celou dobu své činnosti, v různých časových intervalech. Úlohy, které provádí v pozadí, tedy pro uživatele "neviditelně" až do okamžiku, kdy nastane ten správný čas k oznámení nějaké skutečnosti nebo provedení akce.

ical.gif

Vraťme se však zpět k programu iCal. Obecně je iCal znám jen jako "kalendářová aplikace". Opravdu tomu tak je, ovšem možnosti, které iCal nabízí, přesahují běžné chápání slova "kalendář". iCal za nás může hlídat přesný čas celého spektra událostí. Můžeme jej zapojit do správy našeho pracovního času i volných chvil. Uvědomíme-li si skutečnost, že čas události můžeme v tomto programu automaticky nastavit na různé intervaly, lze této aplikace využít i pro řízení práce počítače. Lze například vytvořit událost, která každý den v zadaném čase spustí zálohovací program. Upozornění na událost totiž může být prakticky cokoliv, od zobrazení běžné zprávy až po spuštění libovolné aplikace nebo skriptu. iCal si tak můžeme představit nejen jako kalendářovou aplikaci, ale též jako správce časovaných automatizovaných úloh v počítači.

Kde jsou ovšem hranice tohoto programu? iCal umožňuje nastavit událost podle pevného data a času, automaticky ji opakovat v pevném intervalu a veškeré události přitom zobrazuje v některém z kalendářů. Ovšem potřebujeme-li například provádět nějakou operaci každých deset minut, těžko nám v tom iCal pomůže. Dostáváme se k předmětu tohoto článku. Existuje řada úloh, které je třeba provádět v nějakém relativně krátkém časovém horizontu (sekundy, minuty, hodiny). Jistě existují programy, které to dokáží, ale v naprosté většině případů nám nepřinesou nic víc, než co nám standardně nabízí systém. Kvalita takových programů navíc může být různá a můžeme si tak do systému zavléci nějaký "nezbedný" program, který bude neustále spuštěný a tím může ohrožovat bezpečný chod celého počítače.

A nyní od teorie k praxi. Začneme tím, že si nejprve vytvoříme tři ukázkové programy, které později vyzkoušíme spouštět zcela automaticky a ukážeme si, jak takovéto automatické úlohy spravovat.

První příklad sice prakticky asi nikdo nevyužije, nanejvýš k pobavení někoho, kdo nebude vědět, že jej má v počítači instalovaný. Vytvořte si následující jednoduchý skript. Spusťte editor skriptů a vložte následující text, ověřte správnost syntaxe (Apple+K) a skript uložte jako aplikaci (bez dalších voleb) například pod jménem "Play Random Track".

tell application "iTunes"
	set theLibrary to (name of first source) as Unicode text
	tell source theLibrary
		tell playlist theLibrary to play some track with once
	end tell
end tell

Zkopírovat jako archiv (4 KB)

Tato skriptová aplikace spustí iTunes, náhodně vybere skladbu a jednou ji přehraje. Trochu odbočím od tématu, všimněte si, že ve skriptu nejprve zjišťuji jméno knihovny, mohl bych sice rovnou napsat tell source "Knihovna", problém by ovšem nastal u iTunes v libovolné jiné lokalizaci než české. Proto využiji skutečnosti, že knihovna je vždy první položka ve zdroji (Source) a dotážu se na její lokalizované jméno, které předám příkazu tell.

Druhý příklad již naznačí praktické využití například v počítačové síti, kde si její uživatelé často vyměňují soubory. Vytvoříme si skript, který bude hlídat obsah nějaké složky a informovat uživatele, zjistí-li v ní nějaký obsah. Postupujte shodně jako u příkladu předešlého.

tell application "Finder"
	set theContents to count every item of folder ¬
		"Macintosh HD:Users:Formanek:Desktop:Sample:"
end tell
if (theContents = 1) then
	display dialog "Hlídaná složka obsahuje novou položku." buttons {"Budiž"} ¬
		default button 1
else if (theContents > 1) then
	display dialog "Hlídaná složka obsahuje nové položky." buttons {"Budiž"} ¬
		default button 1
end if

Zkopírovat jako archiv (4 KB)

Pochopitelně řetězec "Macintosh HD:Users:Formanek:Desktop:Sample:" musíte nahradit cestou k libovolné složce ve vašem počítači. Opět si dovolím trochu odbočit, v cestě ke složce lze zároveň použít i lokalizovaná jména (platí jen pokud pracujete s příkazy programu Finder), například "Macintosh HD:Users:Formanek:Desktop:Hlídaná složka:" se shoduje s "Macintosh HD:Uživatelé:Formanek:Plocha:Hlídaná složka:". Přesto doporučuji používat originální jména složek, kterým bude program "rozumět" v libovolném prostředí. Poznámka: Originální jména složek zjistíte spolehlivě například když poslední položku v cestě přetáhnete do okna programu Terminál (Terminal).

Posledním příkladem si nastíníme oblast využití, kterou by mohl požadovat jednotlivec připojený k Internetu. Kontrola webových stránek a zjišťování jejich změn zabírá čas, v řadě případů lze toto svěřit počítači. Existují internetové služby, které stránky hlídají, mnoho stránek využívá kanály RSS apod. Ale co když pro nás důležitá stránka kanál RSS nemá a interval ověřování internetovou službou je pro nás příliš dlouhý? Můžeme si vytvořit jednoduchý program, který takovou stránku zkopíruje a porovná s předchozí verzí umístěnou na našem disku. Takový program lze napsat přímo v prostředí shellu, následující kód je pro zpřístupnění většímu počtu uživatelů přepsán a okomentován v jazyce AppleScript. Znalci nechť omluví toto poněkud neelegantní řešení.

try
	do shell script "test -f /page.html"
	-- Existuje již nějaká verze souboru? Ne = chyba.
	do shell script "mv /page.html /page-old.html"
	-- Existující soubor se přejmenuje (-old).
	try
	do shell script "curl -s http://www.server.cz/page.html -o /page.html"
	-- Zkopíruje se aktuální verze stránky.
	try
		do shell script "diff -q /page-old.html /page.html"
		-- Soubory se porovnají.
		log "Soubor je beze změn."
		on error
		do shell script "open http://www.server.cz/page.html"
		-- Stránka se otevře v prohlížeči.
		log "Soubor byl změněn!"
		end try
		do shell script "rm /page-old.html"
		-- Smaže se stávající soubor *-old
	on error
		log "Chyba sítě."
	end try
on error
	try
	do shell script "curl -s http://www.server.cz/page.html -o /page.html"
	-- Prvně zkopíruje stránku.
	end try
end try

Zkopírovat jako archiv (4 KB)

Poznámka: Obsahuje-li adresa (URL) znak "&", je třeba jeho zápis ošetřit zpětným lomítkem. Ve výše uvedeném kontextu by zápis adresy "http://www.server.cz/index.php?page=1&lang=cz" mohl vypadat takto:

do shell script ¬
"curl -s http://www.server.cz/index.php?page=1\\&lang=cz -o /page.html"

Všechny tři ukázkové příklady si můžete ihned vyzkoušet. Pochopitelně musí fungovat i při manuálním spuštění. Můžete si též vyzkoušet jejich pravidelné spouštění z programu iCal. Všimněte si ještě jedné důležité věci společné všem třem příkladům – pokud není důvod, program se po spuštění sám ukončí aniž by provedl jakoukoliv akci. To je důležité, představte si třeba skript na kontrolu složky, který by nám každých deset minut oznamoval, že složka je stále prázdná. V příštím díle se již budeme věnovat jediné věci – naučíme se programy automaticky spouštět v časovém intervalu a spravovat spuštěné úlohy. Popřemýšlejte zatím nad dalšími úlohami, které by šlo obdobě automatizovat.

Obsah seriálu (více o seriálu):

Tématické zařazení:

 » Rubriky  » Informace  

 » Rubriky  » Agregator  

 » Rubriky  » Tipy a Triky  

 » Rubriky  » Software  

Diskuse k článku

 

Vložit nový příspěvek   Sbalit příspěvky

 

Ten druhý příklad také není úplně nejšťastnější...

Autor: OC Muž

Založeno: 23.05.2006, 00:41
Odpovědí: 0

... viz Folder Actions :)

Ale jo, já vím, že o to teď vůbec nejde. To doplňuji jen pro případ, že by někdo *skutečně* potřeboval hlídat změny nějaké složky, tak aby to náhodou neřešil doopravdy přes iCal :)

Odpovědět na příspěvek

RE: Ten druhý příklad také není úplně nejšťastnější...

Autor: jf Muž

Založeno: 23.05.2006, 09:40

Nevím jak nyní, neověřoval jsem to, ale Folder Actions (Akce složky) fungují jen pokud se složka otevře a nebo je do ní něco přímo vhozeno (na její ikonu) ve Finderu. Pokud by složka byla na serveru nebo byla sdílená, tak akce nepomohou...

PS: Jinak ty příklady jsou opravu jen pro nastínění možností -- aby si to mohl každý vyzkoušet. V reálném nasazení by to takto stejně nefungovalo, ale o tom v dalším díle ... ;-)

Odpovědět na příspěvek

RE: RE: Ten druhý příklad také není úplně nejšťastnější...

Autor: nm Muž

Založeno: 23.05.2006, 17:04

Zajímavé téma, těším se na pokračování.
Jen ze zvědavosti: bude se mluvit o launchd?

Odpovědět na příspěvek

RE: RE: RE: Ten druhý příklad také není úplně nejšťastnější...

Autor: jf Muž

Založeno: 23.05.2006, 18:04

Ano, mimo jiné také o launchd. Nebude to však nic extrémně odborného -- asi nic nového pro správce serverů -- bude to taková exkurze pro každého...

Odpovědět na příspěvek

RE: RE: RE: RE: Ten druhý příklad také není úplně nejšťastnější...

Autor: nm Muž

Založeno: 23.05.2006, 19:06

Nedávno jsem náhodou našel aplikaci Lingon, se kterou launchd není pro opakované úlohy o nic méně přívětivý, než iCal.
Obzvláště zabudovaný "asistent" je uživatelsky přívětivý.
Asi to znáte, ale pokud ne, určitě stojí za zkoušku.

Odpovědět na příspěvek

 

 

Vložit nový příspěvek

Jméno:

Pohlaví:

,

E-mail:

Předmět:

Příspěvek:

 

Kontrola:

Do spodního pole opište z obrázku 5 znaků:

Kód pro ověření

 

 

 

 

Nejčtenější články
Nejlépe hodnocené články
Apple kurzy

 

Přihlášení k mému účtu

Uživatelské jméno:

Heslo: