Absolutní a Relativní adresy na vhodném příkladu

Problematika Relativních a Absolutních cest

Především při tvorbě webových stránek se budete muset popasovat s často matoucí problematikou odkazování a s tím spojené definice cest. Cesty k souboru jsou v zásadě dvě, Absolutní a Relativní. Tak jako zřejmě každý i já jsem se v nich trochu ztrácel a popravdě i vztekal, čehož bych vás chtěl uchránit. Učebnicové "stručné a jasné" definice mi s pochopením pomohli jen pramálo, často předpokládají určité kvantum jakýchsi samozřejmých znalostí, jejichž nedostatek vám v uchopení problému účině zabrání. Ne tak zde, ačkoliv znalost HTML určitě není na překážku. Namísto stručných a jasných definic bych se rád pokusil především o demonstraci na příkladech a zpodobněních. V závěru článku pak vypíši onu stručnou a jasnou definici, která by měla vše zázračně spojit dohromady. Tak zhluboka nadechnout a přeji příjemné čtení!

Cesta do nočního klubu Nomád

Jako příklad odlišnosti cest si představíme situaci, kdy dva bratři, Absolutní Bob a Relativní Pepík přijeli ve své maringotce (tak jako každý rok) do města, aby zde navštívili oblíbený bordel U Nomáda. Maringotku zaparkovali jako vždy v nedalekém parku, Po dlouhém trmácení se myjí, upravují, převlékají, ale hlavně promýšlí kudy vlastně půjdou. Oba dva mají poněkud odlišné představy. Pojďme si je představit spolu s bratry samotnými

Absolutní Bob

Absolutní Bob je precizní, cílevědomý a schopný. Orientuje se ve světě, miluje pořádek a přehled. Bez ohledu na to kde stojí maringotka, Bob ví, že adresa Nomáda je v galaxii Mléčná Dráha, planeta Země, Evropa, Česká republika, Praha 3, Žižkov, 135 00, Skywalkerova 13 v přízemí. Jednoduše vyrazí a případně se poptá. Strach ale nemá, vždyť zná-li takto celou adresu, trefí takřka odkudkoliv.

Relativní Pepík

Relativní Pepík je Bobova noční můra, nemá rád plány, řazení, struktury, vládu a nektarinky. Nějaká adresa by mu byla k ničemu, neb ho vůbec nezajímá nějaká mléčná dráha, země, ba ani Žižkov. Žije tím co je, tím co vidí a v zásadě jen tím co potřebuje. Ví, že proto aby se dostal do Nomáda, musí jít z parku rovně, na přechodu doleva, pak rovně a doprava. Nic víc.

Pojďme jim to zkomplikovat

Oba bratři tedy cestu znají a oba skutečně do Nomáda dorazí a zahrají si vytoužené pexeso, nebo co se tam vlastně hraje. Výborně! Jenže tento nečekaný happy end s sebou přináší nepříjemnou avšak trefnou otázku. K čemu to tedy vlastně všechno je? K čemu je komplikovat cesty nesmyslným rozdělením na dvě kategorie, když obě fungují a obě vedou ke stejnému výsledku. Jako obvykle se charakter projeví až v pohybu. Pojďme to tedy bratrům zkomplikovat a sledovat jak si kdo poradí.

Přesuneme maringotku!

Řekněme že v parku, kde obvykle stojí bylo plno a museli letos zastavit na hlídaném parkovišti pět bloků od parku. Bob, který zná adresu, vyrazil a pexeso si skutečně zahrál. Bohužel Pepík, který se sprchoval a vyrazil později si nezahrál. Jeho rovně, doleva, rovně doprava ho zavedlo do řeky (kde se pexeso hrát nesmí). Výchozí bod, maringotka, tedy hraje roli jen pro relativního Pepíka. Absolutního Boba výchozí bod nezajímá, roli hraje jen cíl.

Přesuneme cíl

Nyní budeme poněkud dramatičtější. Bráškům se povedlo zaparkovat v oblíbeném parku avšak během sprchování se planeta země nečekaně přesunula do galaxie NGC 3314. Pepík jde nyní první. Jeho rovně doleva, rovně, doprava funguje bez problémů a Pepík dorazí. Bob si pro jistotu překontroluje plánek a rozhodne vyrazit. Jenže v galaxii NGC 3314 žádná Země není. Bob je nyní opravdu zmaten a neví jak si poradit. Jeho sofistikovaná, pokročilá absolutní metoda hledání cesty byla poražena Pepíkovým rovně doleva rovně doprava. Bob se z toho pravděpodobně samovznítí nebo mu exploduje hlava. Každopádně v NGC 3314 si pexeso rozhodně nezahraje. Změnili jsme tedy cílovou adresu, absolutní cílovou adresu a zmátli s ní naopak Boba.

Ještě jedna komplikace.

Nyní se může zdát, že výchozí bod je oním důležitým pouze pro relativního Pepíka a naopak cílový bod pro absolutního Boba, nedbaje na to odkud vyrazil. Není to však přesné. Pojďme nyní přesunout samotnou budovu Nomáda o pár bloků na východ. Ačkoliv Bob může vyrazit odkudkoliv, na cílové adrese nalezne jen novou budovu zelinářství namísto vytouženého Nomáda. Pepík, který také dorazí na místo si popláče s ním. Prakticky měli oba bratři pravdu, přesto si však pexeso zahrají leda spolu v maringotce.

Výsledky komplikačního testu

Absolutní Bob věří, že čím přesnější popis cesty má, tím lépe. Trefí odkudkoliv kamkoliv. Relativní Pepík vnímá pouze vztah mezi výchozím a cílovým bodem. Nezávisle na okolí. Jak je vidět na třetí komplikaci, kde byl tento vztah narušen. Přesun Země do NGC 3314 se Pepíka nijak netýká, protože je daleko od jeho sféry zájmu, totiž cesty maringotka-Nomád.

Příklad využití v HTML

Nyní konečně trochu v praxi. Představme si situaci, kdy máme na serveru nahranou složku Galerie, obsahující soubor index.html a složku photos, ze které si bere index.html bere obrázky. Budeme sledovat jakým způsobem se index.html do složky dostává.

Do složky photos Absolutně

Absolutní adresa bude vypadat v případě Carnivory takto...

<img src="http://www.carnivora-publishing.com/Galerie/photos/mrkev_1.jpg">

V této chvíli víme jasně, kde máme mrkev hledat. Ať už k ní budeme přistupovat odkudkoli, například z jiné domény. Problém však nastane, přesuneme-li, v rámci zpřehledňování webu, složku Galerie do složky graphics. Nyní potřebujeme následující adresu, neb předchozí nás nezavede nikam.

<img src="http://www.carnivora-publishing.com/graphics/Galerie/photos/mrkev_1.jpg">

Do složky photos Relativně

Nyní budeme pozorovat rozdílné chování, výhody a nevýhody použití relativní cesty.

<img src="../photos/mrkev_1.jpg">

Jak na první pohled vidíme, cesta je podstatně kratší. Jde opět jen o vztah mezi dvěma soubory. Mezi index.html a složkou photos (respektive mrkvi v ní). Stejně jako Pepíka, ani index.html nezajímá nic kolem, nic navíc. Stejně jako Pepík pro pexeso, ví index.html, že pro mrkev musí do photos. Pokud přesuneme složku Galerie do složky graphics, nestane se nic, protože jsme tím nijak nenarusili vztah indexu a mrkve. Změna proběhla naprosto mimo okruh jejich zájmu. Samozřejmě přesuneme-li složku photos, jejich vztah narušíme a ani relativní cesta nám nepomůže.

Kde tedy jakou cestu použít?

Absolutní cesta se používá především pro jasné určení destinace, nezávisle na výchozím bodu. Především pak na orientaci mezi doménami, kde fakticky žádný výchozí bod ani není. Relativní cesta je naproti tomu vhodná pro vnitřní potřeby domény. Pominu-li kratší zápis, vhodně zvolená struktura souborů, umožňuje snadnější manipulaci, jako například ono zmíněné přesouvání, kde se vyhnete nutnosti přepisovat všechny odkazující stránky v případě přesunu souboru byť jen o jednu úroveň.

Doplňující poznámky

  • Relativní adresy se mohou vztahovat i ke kořeni domény (případně značky base=""), v takovém případě začínají přímo závorkou /. tedy bez tečky před.

    <img src="/Galerie/photos/mrkev_1.jpg">

  • V případě vkládaného obsahu, kde se mění výchozí bod je proto vhodné používat buď absolutní adresu, nebo právě výše zmíňenou metodu odkazování od kořenu domény.
  • Chceme-li relativní adresou určit postup do složky výše, popíšeme každou úroveň zpět pomocí oddílu dvou teček mezi závorkami na začátku adresy

    <img src="../../Galerie/photos/mrkev_1.jpg">   →  jedna úroveň nahoru a poté zpracovat adresu

    <img src="../../../Galerie/photos/mrkev_1.jpg">   →  dvě úrovně nahoru a poté zpracovat adresu

  • Relativní adresy jsou nesmírně užitečné například při odkazování sdílených souborů. Sdílím-li například scénu Blenderu, do které bych, nedejbože, absolutně vložil odkazy na postavy bude pro mě vše fungovat správně, nicméně ne pro ostatní a to z prostého důvodu. Toto je adresa, kterou scéna používá pro vložení postav...

    C:/usr/local/lib/Tonda/characters/character_1.blend"

    C:/usr/local/lib/Eva/characters/character_1.blend"

    Oproti tomu relativní cesta nebude řešit nic, co jí nenáleží a bude tedy ignorovat jiné prostředí a jiného uživatele.

    /characters/character_1.blend"

Závěrečné shrnutí

Absolutní a relativní cesty (adresy), mají rozdílné použití, obecně však lze říci, že relativní adresy jsou používány pro interní zacházení se soubory a ono zmíněné sdílení. Obecně pro prostředí, kde může dojít ke změně okolí. Absolutní adresy jsou vhodné pro přechod mezi doménami a obecně pro pevné určení adresy. V počátcích webové tvorby nemusíte rozdíl brát v potas, nicméně jednoho dne se k němu bezesporu propracujete a podobně jako neštovice čím dřív tím lépe. Pochopit princip jejich použití vám ušetří zdlouhavé a iritující přepisování adres při každé drobné změně nebo pohybu složky či případně osvětlí co přesně není správně se sdíleným souborem. Snad vám tento článek trochu posloužil. A ano-li dejte prosím vědět v komentářích, stejně tak v případě nějakého dotazu, nebo připomínky.
zatím přeji hodně štěstí a veselé Cestování!

Brought to you by Tony tony slacik carnivora profile photo Tony Slacik Animation, Special Effects, CG SFX, Properties I have no description!


Blender Character Repository | Download and animate fully operational & ready riggs!
Search

Discover the secrets of Carnivorian library. Search in ancient archives of amazing articles and open-source research. Just type what you are looking for into that white field above, say "渇しても盗泉の水を飲まず" and click that magic button "Ok, sniff it!". You´ll never forget the following events.

News by Email
Social networks Rich Site Summary Do you like Carnivora articles?. Stay in touch with us! Subscribe to our RSS feed and you´ll be infromed whenever a new article will be posted. No tweets, no one-word news, no spam. Just "serious" articles. Stay in touch with open-source and free software news in human readable way. And in touch with research of computer graphics, animation and experimental movie techniques. Google+ Join us on our Google+ page and stay informed about upcoming projects and articles. Facebook Become our friend on Facebook and share your opinion on projects. Vimeo Got Vimeo?! Cool, we too, let´s meet there. Looking forward! YouTube Prefer YouTube? Right, visit us there and tell us what you think. Subscription will be nice indeed, but no pressure... Myspace Visit our profile on MySpace. Stumble Upon Recommend us on Stumble Upon! Klout Help us in Klout performance by visiting our profile, joining us or even giving us a point or two... please. Although we don´t really know how it works, but it looks serious and important... Twitter Let´s tweet together, join us on Twitter and stay in touch with Carnivora every second... well that sounds horrible... every day seems to sound better. Digg Recommend Carnivora on Digg, give us thumb, or like, something :) Both might be acceptable compromise Delicious Share your experiences from Carnivora on Delicious and spread a word. You´ll gretly help us this way. Same as any other time you actually mention us somewhere. Reddit Preffer Reddit? Well, visit us there! GMail Email us! Anything you have to say secretely? Do not hesitate to write us. Really, we might even read it some day! Discussion forumBest way to stay in touch with us is joining the forum, which is a heart of our production and where the projects are dicussed and realized. Register in the forum and help us to evolve by sharing your opinion and point of view.
Shirt project sketch. Want to learn more?
Shirt project sketch. Want to learn more?
Your Ad Here