Intranet

Pojem „intranet“ bol spočiatku vnímaný iba ako preklep slova „internet“, ale dnes je už považovaný pomaly za nevyhnutnú súčasť vnútornej siete každej väčšej firmy. Hoci samozrejme nie je všeliekom, jeho výhody ho predurčujú ako najlepšie riešenie pre mnohé informačné systémy.

Zjednodušene povedané, intranet je vnútrofiremný (respektíve vnútrosieťový) internet. Používateľ ho vníma presne ako každú inú webovú stránku, prístupný je však len v rámci jednej siete. Z toho vyplývajú aj jeho sekundárne odlišnosti od internetu: vyššia rýchlosť (umožňuje komplikovanejšie a teda objemnejšie stránky) a vyššia bezpečnosť (keďže nie je prístupný zvonku - i keď za úplne bezpečný ho ani vtedy nemožno považovať).

Takmer každý informačný systém možno realizovať formou intranetu, pričom pre niektoré systémy je táto forma pochopiteľne menej výhodná než pre iné. Častý je aj prípad poskytovania intranetového rozhrania ako doplnku alebo alternatívy ku klasickej „okienkovej“ aplikácii.

Najčastejšie intranetové aplikácie sú asi tieto:

  • Prehliadač dokumentov (väčšinou sa jedná o interné firemné dokumenty, napríklad predpisy či smernice)
  • Telefónny zoznam/adresár
  • Fórum (každý môže napísať nejakú správu, ktorú si potom všetci ostatní môžu prečítať; väčšinou býva rozdelené podľa tém)

Oproti klasickej „okienkovej“ aplikácii má intranet viacero výhod:

  • Práca v sieti. Prakticky každý intranetový systém je okamžite pripravený na súčasné používanie viacerými užívateľmi. Hoci sa vám to môže zdať zatiaľ zbytočné, v budúcnosti možno budete potrebovať počítačovú sieť. Niekoľko pracovníkov bude musieť pracovať s jedným systémom alebo minimálne s tými istými údajmi. Prerábať klasické aplikácie na sieťové je vždy veľmi náročné, preto aj väčšinou zdĺhavé a drahé. Navyše systém s dodatočne pridanou podporou siete nebude jej možnosti nikdy využívať tak efektívne, ako systém priamo na tento typ práce navrhnutý.
  • Na klienta netreba inštalovať nič nové(!). Klasické systémy vyžadujú inštaláciu špeciálnej aplikácie na každý klientsky počítač. V prípade intranetu stačí ľubovoľný internetový prehliadač.
  • Ľubovoľná platforma. Ako už vyplýva z predošlej výhody, na klientskom počítači môže byť ľubovoľný operačný systém, pokiaľ preň existuje prehliadač. Počítače do dlane a pokročilé mobilné telefóny nevynímajúc (pre tie môže byť použitý WAP).
  • Nižšie výdavky na hardvér. V extrémnom prípade môžete ako klientsky program použiť aj textový prehliadač (ako napríklad Lynx), ktorý pobeží svižne aj na počítači spred 15 rokov. Môžete takto využiť napríklad staré počítače s DOS. Pri použití Linuxu ako operačného systému stačí na grafické prezeranie jednoduchších stránok počítač triedy 386. Klasické aplikácie majú navyše tendenciu zvyšovať postupne nároky na počítač, čo v prípade prehliadačov nehrozí (pokiaľ nie sú vyžadované nové technológie, ako napríklad Java; to však u absolútnej väčšiny systémov nie je potrebné).
  • Rýchla a „bezbolestná“ aktualizácia (upgrade). Klasické aplikácie treba preinštalovať na všetkých počítačoch, ktoré ju používajú. Aj keď sa to dá do značnej miery automatizovať, vždy to znamená minimálne výrazné prerušenie práce a na množstve počítačov to býva aj časovo náročné (taktiež automatizácia má problémy pri dlhšie vypnutých počítačoch). V prípade intranetu sa aktualizuje program jedine na serveri, čo je často možné takou rýchlosťou, že používatelia to ani nezbadajú.
  • Bezpečnosť a spoľahlivosť. Dáta sú vždy iba na serveri, vďaka čomu „spadnutý“ systém na klientovi nespôsobí výpadok celého systému. Aj zálohovanie dát je oveľa jednoduchšie. Hlavnou výhodou je však bezpečnosť. Zatiaľ čo na počítači klientov ju možno zabezpečiť iba ťažko (už len kvôli chybám samotných používateľov), správne nakonfigurovaný server poskytuje vysokú úroveň bezpečnosti.

Nič samozrejme nemá iba výhody a aj intranet má niekoľko závažných nevýhod vyplývajúcich z jeho technológie:

  • Pomalosť. Aj keď sa samotné stránky generujú rýchlo, rozhodne je tam badateľné spomalenie oproti lokálnym aplikáciám. Vyplýva to z nutnosti prenášať dáta po sieti od servera ku klientovi a následného spracovania prijatých dát pre zobrazenie stránky. U dobre navrhnutých systémov by však medzi odoslaním požiadavky a zobrazením ďalšej stránky nemali prejsť viac ako tri sekundy.
  • Neinteraktívne prostredie vyplýva zo samotnej technológie intranetu (internetu). Stránka má len veľmi obmedzené možnosti priamo reagovať na akcie používateľa - požiadavku treba najprv odoslať a až na ďalšej stránke vidno výsledok. Skriptovacie jazyky, Java a Flash síce umožňujú túto nevýhodu do istej miery zmenšiť, ale často zároveň pridávajú neželanú komplexnosť (čo znamená aj väčšiu pravdepodobnosť chýb a ťažšiu údržbu systému).
  • Horšie možnosti prispôsobenia dizajnu. Jazyk HTML, ktorý sa používa na popis stránok, pôvodne vôbec nebol určený na presné úpravy výzoru. S príchodom štýlov sa síce situácia mení, ale ešte vždy sú možnosti v tejto oblasti obmedzené; navyše pokročilé štýly podporujú iba najnovšie verzie prehliadačov a často nie správne. Na druhej strane prvoradá je funkčnosť systému a dizajn je zaujímavý skôr v reklame.

Ako väčšina známych technológií aj intranet zažil „hviezdne“ obdobie, keď bol prezentovaný ako absolútna nevyhnutnosť pre každú firmu. Dnes už väčšina (hlavne veľkých) firiem intranet využíva hlavne ako interný informačný zdroj. To však vôbec neznižuje výhody intranetu pre použitie v informačných systémoch. Ak potrebujete sieťový informačný systém (čo možno len odporučiť), určite sa oplatí zvážiť ho medzi prvými.

Pbatenghyngvbaf Lbh ner n bofreinag jro unpxre Vs Lbh jnag n wbo va bhe pbzcnal cyrnfr znvy gb gbhtuthl ng ci2p qbg fx Unir n avpr qnl
	Zpravidla ho varovali trojnožkoví krabi, kteří se neškodně pásli
v prachu. Když vypadali poplašeně, byl čas se rychle ukrýt. Několikrát
se v poslední chvíli stačil přitisknout k regálu, když se kolem vzápětí
přehnal některý z obrovských tezaurů. Trpělivě čekal, když se mu přes
cestu kolem plazilo stádo kritvorů, kteří cestou hodovali na obsahu
šťavnatějších knih a za sebou nechávali hromádky malých oslizlých knih
literárních kritik. A byly tady další věci, věci, od kterých se raději
držel dál a pokoušel se na ně raději nedívat... 
	A taky bylo třeba vyhýbat se ze všech sil každému klišé, na
které náhodou narazil.
		-- T. Pratchett: Stráže! Stráže!
    function perr($msg, $level)
    {
        echo $msg;
    }

    function readcsv_get_entity($fh, $sep = ';')
    {
        $entity = array();
        $attr = '';
        $eoe = false;

        while((! feof($fh)) && (! $eoe))
        {
            $ch = fgetc($fh);
            switch($ch)
            {
                case "\r":
                    break;
                case "\n":
                    $eoe = true;
                case $sep:
                    array_push($entity, $attr);
                    $attr = '';
                    break;
                case '"':
                    $ch = '';
                    while((! feof($fh)) && $ch != '"')
                    {
                        $ch = fgetc($fh);
                        $attr .= $ch;
                    }
                    $attr = rtrim($attr, '"');
                    break;
                default:
                    $attr .= $ch;
            }
        }

        if(feof($fh) && ($entity || $attr))
        {
            array_push($entity, $attr);
        }
        elseif(feof($fh))
        {
            $entity = false;
        }

        return $entity;
    }

    function readcsv_parsecsv($filename)
    {
        $ret = false;
        $sep = ';';
        $line = '';
        $line_num = 0;
        $cells = array();
        $names = array();

        $fh = fopen($filename, 'r');
        if(! $fh)
        {
            perr('Failed to open file \''
                . $file . "'\n", 8);
        }
        else
        {
        $line = '';
        while(! feof($fh))
        {
        $entity = readcsv_get_entity($fh, $sep);

        if($entity)
        {
        if($line_num == 0)
        {
        foreach($entity as $name)
        {
            array_push($names, trim($name, '"'));
        }
        }
        else
        {
        foreach($entity as $index => $val)
        {
        if(isset($names[$index]))
        {
            $cells[$line_num][$names[$index]]
                = trim($val, '"');
        }
        else
        {
            array_push($cells[$line_num],
                trim($val, '"'));
        }                            
        }
        }
        $line_num ++;
        }
        }
        fclose($fh);
        }

        return $ret;
    }
        
    function perr($msg, $level)
    {
        echo $msg;
    }

    function readcsv_get_entity($fh, $sep = ';')
    {
        $entity = array();
        $attr = '';
        $eoe = false;

        while((! feof($fh)) && (! $eoe))
        {
            $ch = fgetc($fh);
            switch($ch)
            {
                case "\r":
                    break;
                case "\n":
                    $eoe = true;
                case $sep:
                    array_push($entity, $attr);
                    $attr = '';
                    break;
                case '"':
                    $ch = '';
                    while((! feof($fh)) && $ch != '"')
                    {
                        $ch = fgetc($fh);
                        $attr .= $ch;
                    }
                    $attr = rtrim($attr, '"');
                    break;
                default:
                    $attr .= $ch;
            }
        }

        if(feof($fh) && ($entity || $attr))
        {
            array_push($entity, $attr);
        }
        elseif(feof($fh))
        {
            $entity = false;
        }

        return $entity;
    }

    function readcsv_parsecsv($filename)
    {
        $ret = false;
        $sep = ';';
        $line = '';
        $line_num = 0;
        $cells = array();
        $names = array();

        $fh = fopen($filename, 'r');
        if(! $fh)
        {
            perr('Failed to open file \''
                . $file . "'\n", 8);
        }
        else
        {
        $line = '';
        while(! feof($fh))
        {
        $entity = readcsv_get_entity($fh, $sep);

        if($entity)
        {
        if($line_num == 0)
        {
        foreach($entity as $name)
        {
            array_push($names, trim($name, '"'));
        }
        }
        else
        {
        foreach($entity as $index => $val)
        {
        if(isset($names[$index]))
        {
            $cells[$line_num][$names[$index]]
                = trim($val, '"');
        }
        else
        {
            array_push($cells[$line_num],
                trim($val, '"'));
        }                            
        }
        }
        $line_num ++;
        }
        }
        fclose($fh);
        }

        return $ret;
    }