abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    včera 14:22 | Nová verze

    HollowByte je zranitelnost typu Denial of Service (DoS) v kryptografické knihovně OpenSSL. Útočník může odesíláním škodlivého payloadu o velikosti pouhých 11 bajtů zaplnit paměť serveru. OpenSSL před ověřením dat vyhradí nepřiměřený blok paměti (až 131 KB). Server pak čeká na data, která nepřišla. Zranitelnost je opravena ve verzích OpenSSL 4.0.1, 3.6.3, 3.5.7, 3.4.6 a 3.0.21.

    Ladislav Hagara | Komentářů: 0
    včera 13:44 | Komunita

    Ve španělské A Coruñě probíhá GUADEC 2026, tj. letošní konference vývojářů a uživatelů desktopového prostředí GNOME. Videozáznamy přednášek jsou k dispozici na YouTube.

    Ladislav Hagara | Komentářů: 0
    včera 13:22 | Komunita

    Společnost Collabora ve spolupráci s Valve vyvíjí Holo Core, tj. port Arch Linuxu pro ARM64 procesory (AArch64), který bude pohánět VR headset Steam Frame. Pro testování Arch Linuxu pro AArch64 jsou k dispozici binární balíčky, zdrojové kódy i kontejner pro Docker nebo Podman.

    Ladislav Hagara | Komentářů: 1
    včera 13:00 | IT novinky

    Mikroprocesor Zilog Z80 byl oficiálně uveden na trh před 50 lety, tj. v červenci 1976. Výroba mikroprocesoru skončila v roce 2024.

    Ladislav Hagara | Komentářů: 0
    včera 02:55 | Bezpečnostní upozornění

    Výzkumníci ze společnosti ESET objevili 11 zapomenutých UEFI shim zavaděčů, které byly podepsány společností Microsoft, a které umožňují útočníkům obejít ochranu UEFI Secure Boot na většině zařízení. Microsoft je zneplatnil (přidal jejich hash do databáze dbx) v rámci aktualizace Patch Tuesday dne 9. června 2026. Uživatelé Linuxu mohou databází aktualizovat pomocí LVFS. Ověřit zneplatnění zavaděčů lze pomocí skriptu uefi-dbx-audit. Jedná se o CVE-2026-8863 a CVE-2026-10797.

    Ladislav Hagara | Komentářů: 3
    17.7. 16:55 | Zajímavý software

    pico-usb-wifi je open source firmware pro Raspberry Pi Pico W, který jej promění v USB Wi-Fi adaptér. Po připojení k počítači se objeví jako zařízení USB CDC-NCM.

    Ladislav Hagara | Komentářů: 0
    17.7. 16:00 | IT novinky

    Americká společnost Google ze skupiny Alphabet bude muset podle nových požadavků Evropské unie umožnit společnosti OpenAI i dalším konkurentům v oblasti umělé inteligence (AI) a internetových vyhledávačů přístup ke svým službám. Ve svém rozhodnutí o tom včera informovala Evropská komise (EK). Opatření má zajistit dodržování pravidel, jejichž cílem je omezit v EU tržní sílu velkých technologických firem. Google s tím nesouhlasí.

    … více »
    Ladislav Hagara | Komentářů: 0
    17.7. 04:55 | Komunita

    Nové verze webových prohlížečů Chrome a Firefox jsou vydávány každé 4 týdny. Aktuální verze Chrome je 150. Aktuální verze Firefoxu je 152. V březnu bylo oznámeno, že od září přejde Chrome na dvoutýdenní cyklus vydávání verzí. To by znamenalo, že Chrome v číslování verzí Firefox brzy přeskočí. Vývojáři Firefoxu proto také od září přecházejí na dvoutýdenní cyklus vydávání verzí. :-)

    Ladislav Hagara | Komentářů: 7
    17.7. 00:22 | Zajímavý software

    Microsoft Comic Chat (Wikipedie), tj. grafický IRC klient z devadesátek, který převáděl konverzace na IRC do podoby komiksových panelů, a který zpopularizoval font Comic Sans, je dnešním dnem open source. Zdrojové kódy jsou k dispozici na GitHubu pod licencí MIT.

    Ladislav Hagara | Komentářů: 3
    16.7. 19:55 | Nová verze

    Byla vydána (𝕏) nová verze 26.7 open source firewallové a routovací platformy OPNsense (Wikipedie). Jedná se o fork pfSense postavený na FreeBSD. Kódový název OPNsense 26.7 je Xenial Xenops. Přehled novinek v příspěvku na fóru.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (11%)
     (7%)
     (2%)
     (17%)
     (30%)
     (5%)
     (6%)
     (2%)
     (15%)
     (24%)
    Celkem 2174 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník


    Dotaz: Využití pojmenované roury v Linuxu

    polo23 avatar 15.2.2010 20:25 polo23 | skóre: 28 | blog: polo23
    Využití pojmenované roury v Linuxu
    Přečteno: 1908×
    Ahoj, zrovna si ctu knizku Vilema Vychodila: Linux - prirucka ceskeho uzivatele. No neni mi moc jasne vyuziti pojmenovanych rour v linuxu. Uvedu priklad:
    mkfifo moje_roura
    find /usr/share -type d >moje_roura 
    cat moje_roura | grep zoneinfo
    Co to dela chapu. Ale zaroven jsem si vyzkousel misto roury pouzit obycejny textak kam jsme ladoval data a pak je z neho precetl. Vysledek byl stejny. Muzete mi prosim napsat k cemu se prakticky pojmenovane roury pouzivaji? Pri tom laborovani jsme si vsimnul toho ze kdyz jsem spustil prikaz find tak on nic nedelal az do chvile kdy jsem sputil prikaz cat. Z toho mi vyplyva ze cele to zacne fungovat az ve chvili kdy je na rouru pripojeno neco co zapisuje a zaroven neco co cte. Ale k cemu je tohle zrovna dobre me ted nenapada. Diky za vysvetleni.


    Řešení dotazu:


    Odpovědi

    15.2.2010 20:36 Semo | skóre: 45 | blog: Semo
    Rozbalit Rozbalit vše Re: Využití pojmenované roury v Linuxu
    Odovzdavanie informacii mozes spravit aj cez textak, ale textak by si musel aktivne periodicky kontrolovat. Tu len pasivne cakas a system ta zobudi az treba.

    Spravis si napr. programcek, ktory bude stahovat subory, ktorych URL mu cez pomenovanu pipu posles. Staci ti na to:
    cat fifo |
    while read url; do
        wget "$url"
    done
    Zaroven pokial uz budes mat prilis vela neprecitanych dat v pipe, tak system zablokuje zapisovatelov. Co moze byt vyhoda alebo aj nie. Ale da sa zapisovat aj tak, aby ma to nezablokovalo ak je plno.
    If you hold a Unix shell up to your ear, you can you hear the C.
    15.2.2010 20:39 Semo | skóre: 45 | blog: Semo
    Rozbalit Rozbalit vše Re: Využití pojmenované roury v Linuxu
    Ten programcek bezi iba jediny a pritom zapisovat do pipy moze hocikolko procesov. To cez beznu nepomenovanu pipu nespravis. Trocha tam potom mozu nastavat problemy su synchronizaciou zapisovatelov (aby jedno url nebolo vlozene do prostred druheho), ale na nenarocne desktopove pouzitie by sa na to slo vykaslat.
    If you hold a Unix shell up to your ear, you can you hear the C.
    polo23 avatar 15.2.2010 21:27 polo23 | skóre: 28 | blog: polo23
    Rozbalit Rozbalit vše Re: Využití pojmenované roury v Linuxu
    Prave to s tim zapisovanim nekolika procesu zaraz mi prijde jako blbost... To tam jsou ta data navzajem prokladana a vznikne z toho gulas. Proces co z toho cte v tom pak musi mit zmatek.
    15.2.2010 21:35 Semo | skóre: 45 | blog: Semo
    Rozbalit Rozbalit vše Re: Využití pojmenované roury v Linuxu
    preto tam mam nenarocne desktopove pouzitie. Kde stahujes par malo url sa hodinu. Riziko, ze zapis vo fife bude prekladany je minimalny a pripadne nasledky male. Zapisujuci mozu samozrejme dobrovolne respektovat nejaky zamok (vytvorenie suboru s dohodnutym prefixom a pid ako suffix), ale potom mas riziko, ze ak zapisovac neodomkne (spadne pocas zapisu), tak sa vsetko zastavi.

    Viacero zapisovacov pouzivajucich ten isty subor dopadne rovnako. Musel by si ukladat obsah do suborov s nahodnym nazvom v dohodnutom adresari a stahovac bude periodicky prechadzat adresar, citat a mazat subory. Tym sa to ale o nieco komplikuje. Nieco za nieco.
    If you hold a Unix shell up to your ear, you can you hear the C.
    15.2.2010 21:44 Filip Jirsák | skóre: 67 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Využití pojmenované roury v Linuxu
    Klasický případ použití roury je propojení několika programů:
    ps ax | grep 'firefox'
    
    Tohle je ale anonymní (nepojmenovaná) roura – oba procesy (ten, který do ní zapisuje, i ten, který z ní čte) musíte vytvořit najednou. Pokud ty programy potřebujete spustit odděleně, použijete právě tu pojmenovanou rouru. Typický je případ, kdy v době vytváření prvního procesu (zapisujícího) ještě ani nevíte, co bude tím procesem, který bude data číst – tedy nechcete někde zadrátovat napevno, čím se budou data z roury zpracovávat, ale chcete to ponechat na uživateli. Přesměrujete je tedy do pojmenované roury a uživatel si je odsud už může číst čím chce.
    16.2.2010 10:37 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
    Rozbalit Rozbalit vše Re: Využití pojmenované roury v Linuxu
    Ne možná typické použití (jak je zde již popsáno), ale:
    Používám je na kontrolu memory leak-ů pomocí Valgrind.
    A to u kontroly consolové aplikace pro výpis hlášení (chybového výstupu) Valgrind do druhé terminálového okna a hezky vidím v jednom terminálu běh aplikace a v druhém hlášení o „problémech“.
    To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
    Fuky avatar 16.2.2010 16:05 Fuky | skóre: 52 | blog: 4u
    Rozbalit Rozbalit vše Re: Využití pojmenované roury v Linuxu

    Další možné použití jsou např. multivolume archívy:

    $ mkfifo /tmp/tar.fifo
    $ split -b 100k /tmp/tar.fifo archive.tgz- & tar zcf /tmp/tar.fifo data
    
    frEon avatar 16.2.2010 16:24 frEon | skóre: 40 | Praha
    Rozbalit Rozbalit vše Re: Využití pojmenované roury v Linuxu
    hoi,

    rozdil uvidis v techto dvou prikladech:
    cd /tmp
    touch soubor
    time cat soubor
    
    cd /tmp
    mkfifo roura
    time cat roura
    
    Slovy, u roury nikdy nenactes konec souboru a proto toho muzes vyuzit treba tak, ze cekas na data az se dockas, misto toho aby jsi se musel kazdou chvili kouknout jestli tam uz neco je.
    Talking about music is like dancing to architecture.
    16.2.2010 18:38 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: Využití pojmenované roury v Linuxu
    Ale zaroven jsem si vyzkousel misto roury pouzit obycejny textak kam jsme ladoval data a pak je z neho precetl. Vysledek byl stejny.
    Nebyl. Soubor zůstal na disku. Zabíral místo ale na druhou stranu si takový soubor můžete za rok přečíst znova.

    Roura (ať už pojmenovaná nebo ne) funguje jinak: co do ní zapíšete, si hned musíte přečíst, a jednou přečtená data už nemůžete přečíst znova. Proto taky zapisovací program čeká na ten čtecí, jinak by zapisoval do prázdna. Na disk se nic neukládá.
    Muzete mi prosim napsat k cemu se prakticky pojmenovane roury pouzivaji?
    Pro cokoliv, kde potřebujete rouru, ale nemůžete použít anonymní rouru |. Např. v bashi lze anonymní rouru použít pouze pro přesměrování stdout, ale ne stderr, takže na to druhé musíte mít pojmenovanou rouru. Bash má na tvorbu takové roury pro výstup resp. vstup a napojení dalšího programu nástroje >(program) a <(program).

    In Ada the typical infinite loop would normally be terminated by detonation.
    Fuky avatar 16.2.2010 19:28 Fuky | skóre: 52 | blog: 4u
    Rozbalit Rozbalit vše Re: Využití pojmenované roury v Linuxu

    Není pravda, že: ... v bashi lze anonymní rouru použít pouze pro přesměrování stdout, ale ne stderr ...

    $ program 2>&1 |zpracuj_stdout_a_stderr
    $ program >/dev/null 2>&1 |zpracuj_stderr
    
    16.2.2010 20:34 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: Využití pojmenované roury v Linuxu
    Stále pomocí roury odebíráte stdout...
    In Ada the typical infinite loop would normally be terminated by detonation.
    Fuky avatar 16.2.2010 22:29 Fuky | skóre: 52 | blog: 4u
    Rozbalit Rozbalit vše Re: Využití pojmenované roury v Linuxu

    Nesouhlas, při startu programu ukazuje file deskriptor stdout na anonymní rouru, ovšem 2>&1 zařídí, že na ní bude ukazovat i file deskriptor stderr, když poté zavolám >/dev/null bude se na vstupu anonymní roury opravdu odebírat jen stderr, protože stdout je nyní file deskriptor na /dev/null a s anonymní rourou nemá již nic společného.

    $ ls -l /proc/PID/fd
    0 -> /dev/pts/9
    1 -> /dev/null
    2 -> pipe:[118037]
    $ program 2>&1 >/dev/null |zpracuj_stderr
    

    Jinak je velice důležité pořadí viz níže, pokud si nejprve přesměruju stdout do /dev/null, ztratím file deskriptor na anonymní rouru a přesměrováním stderr na stdout přesměruji vlastně na /dev/null.

    $ program >/dev/null 2>&1 |nezpracuje_nic
    

    Někomu by se mohlo hodit:

    $ program > >(zpracuj_stdout) 2> >(zpracuj_stderr)
    

    Process Substitution

    17.2.2010 05:45 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: Využití pojmenované roury v Linuxu
    To je akorát tahanice o slovíčka. Z jiného úhlu pohledu trubka bere natvrdo stdout a je jedno co se na něj interně "předrátuje".
    Jinak je velice důležité pořadí viz níže
    V tom případě to máte v prvním příspěvku špatně.
    $ program > >(zpracuj_stdout) 2> >(zpracuj_stderr)
    Ano a to jsou ty pojmenované roury jak jsem o nich psal.
    In Ada the typical infinite loop would normally be terminated by detonation.
    Fuky avatar 17.2.2010 12:31 Fuky | skóre: 52 | blog: 4u
    Rozbalit Rozbalit vše Re: Využití pojmenované roury v Linuxu

    Není to tahanice o slovíčka, věci je třeba jednoznačně definovat a důležité je pochopit princip. To není o jiném úhlu pohledu, roura v žádném případě "nebere natvrdo" stdout, ale stdout implicitně ukazuje na zapisovací file descriptor roury, což je dost zásadní rozdíl. ;-)

    Process Substitution se implementují buď pomocí pojmenovaných rour a nebo pomocí nepojmenovaných. A minimálně na Linuxových systémech používá Bash 3.2 právě roury nepojmenované (anonymní). ;-) Viz:

    $ vim subst.c
    static char *
    process_substitute (string, open_for_read_in_child)
         char *string;
         int open_for_read_in_child;
    {
      char *pathname;
      int fd, result;
      pid_t old_pid, pid;
    #if defined (HAVE_DEV_FD)
      int parent_pipe_fd, child_pipe_fd;
      int fildes[2];
    #endif /* HAVE_DEV_FD */
    #if defined (JOB_CONTROL)
      pid_t old_pipeline_pgrp;
    #endif
    
      if (!string || !*string || wordexp_only)
        return ((char *)NULL);
    
    #if !defined (HAVE_DEV_FD)
      pathname = make_named_pipe ();
    #else /* HAVE_DEV_FD */
      if (pipe (fildes) < 0)
        {
          sys_error (_("cannot make pipe for process substitution"));
          return ((char *)NULL);
        }
      /* If OPEN_FOR_READ_IN_CHILD == 1, we want to use the write end of
         the pipe in the parent, otherwise the read end. */
      parent_pipe_fd = fildes[open_for_read_in_child];
      child_pipe_fd = fildes[1 - open_for_read_in_child];
      /* Move the parent end of the pipe to some high file descriptor, to
         avoid clashes with FDs used by the script. */
      parent_pipe_fd = move_to_high_fd (parent_pipe_fd, 1, 64);
    
      pathname = make_dev_fd_filename (parent_pipe_fd);
    #endif /* HAVE_DEV_FD */
    
    17.2.2010 13:55 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: Využití pojmenované roury v Linuxu
    Pokud narážíte na devfd, tak to pojmenované roury jsou.
    In Ada the typical infinite loop would normally be terminated by detonation.
    Fuky avatar 17.2.2010 14:33 Fuky | skóre: 52 | blog: 4u
    Rozbalit Rozbalit vše Re: Využití pojmenované roury v Linuxu
    Ano, jde mi o /dev/fd, kde je dostupná i anonymní roura, kterou vytvořil Process Substitution. Pokud si opravdu myslíte, že jde o rouru pojmenovanou, tak mi to prosím vysvětlete. Z uvedeného kódu je zřejmé, že se využívá fci pipe() a ne mkfifo().
    17.2.2010 17:35 pht | skóre: 48 | blog: pht
    Rozbalit Rozbalit vše Re: Využití pojmenované roury v Linuxu
    Pokud si opravdu myslíte, že jde o rouru pojmenovanou
    Roura je pojmenovaná právě tím, že se jmenuje /dev/fd/X.
    In Ada the typical infinite loop would normally be terminated by detonation.
    Fuky avatar 17.2.2010 18:25 Fuky | skóre: 52 | blog: 4u
    Rozbalit Rozbalit vše Re: Využití pojmenované roury v Linuxu

    Čemu z toho co jsem psal nerozumíš? Pokud se použije na Linuxu v Bashi "Process Substitution", tak se vytvoří nepojmenovaná roura pomocí funkce pipe(). Na systémech, kde se nepoužívají nepojmenované roury se používají roury pojmenované a ty se ukládají do $TMPDIR, což není mimochodem v žádném případě /dev/fd! Více informací viz zdrojáky Bashe.

    static char *
    make_named_pipe ()
    {
      char *tname;
    
      tname = sh_mktmpname ("sh-np", MT_USERANDOM);
      if (mkfifo (tname, 0600) < 0)
        {
          free (tname);
          return ((char *)NULL);
        }
    
      add_fifo_list (tname);
      return (tname);
    }
    

    Na závěr Ti ukážu jak vypadá /proc/PID/fd v případě když je stdin jeden konec nepojmenované roury | nebo > >() ("Process Substitution") a na nakonec jak to vypadá, když se v programu přistupuje k pojmenované rouře vytvořené pomocí mkfifo.

    # stdin je předaný pomocí |program
    lr-x------ 0 -> pipe:[121763]
    lrwx------ 1 -> /dev/pts/0
    lrwx------ 2 -> /dev/pts/0
    lr-x------ 4 -> /dev/null
    
    # stdin je předaný pomocí > >(program)
    lr-x------ 0 -> pipe:[123329]
    lrwx------ 1 -> /dev/pts/0
    lrwx------ 2 -> /dev/pts/0
    lr-x------ 4 -> /dev/null
    
    # program využívá /tmp/named.fifo
    lrwx------ 0 -> /dev/pts/0
    lrwx------ 1 -> /dev/pts/0
    lrwx------ 2 -> /dev/pts/0
    lr-x------ 3 -> /tmp/named.fifo
    lr-x------ 4 -> /dev/null
    
    $ ls -l /tmp/named.fifo
    prw-r--r-- /tmp/named.fifo
    

    Tak co, už to chápeš? BTW: Snad nevadí tykání, ja nemám rád, když mi někdo vyká. ;-)

    polo23 avatar 17.2.2010 13:22 polo23 | skóre: 28 | blog: polo23
    Rozbalit Rozbalit vše Re: Využití pojmenované roury v Linuxu
    Tady bych trochu odbocil od tematu - chtel bych se zeptat zda je v Linuxu pravidlem ze std err byva vzdy vypisovan na monitor? Pokud jsou totiz nekdy situace ze tomu tak neni pak by mel byt zpusob jak toho dosahnout...

    Jak by ste dosahnul toho kdyby bylo potreba vypsat std err na monitor (uvazujme ze by to nebylo implicitne nastaveno), ale std out by bylo potreba zahodit?
    program >/dev/null 2>&1 |nezpracuje_nic
    Tento radek posle std out do /dev/null a std err posle na std out, tim padem pujde taky do /dev/null. Napada me jen to ze std err bych musel smerovat primo na terminal ktery ma uzivatel pusteny.
    Fuky avatar 17.2.2010 14:13 Fuky | skóre: 52 | blog: 4u
    Rozbalit Rozbalit vše Re: Využití pojmenované roury v Linuxu

    Jak jsem psal výše, pokud chci využít file descriptor stdout, tak ho nejprve musím uložit i do stderr a teprve poté zahodit:

    $ program 2>&1 >/dev/null |zpracuj_stderr
    

    File descriptors se dědí od rodičovského procesu.

    A co se týče vypisování stderr "na monitor", tak nejprve je třeba si uvědomit, že žádné vypisování "na monitor" neprobíhá. Uvedu několik příkladů.

    Naloguju se bez X přímo v terminálu, mám k dispozici Bash, který má k dispozici následující file descriptors. Pokud spustím nějaký program, tak zdědí dceřiný proces tyto descriptory a je pouze na něm jak s nimy naloží.

    $ ls -l /dev/fd/
    0 -> /dev/tty2
    1 -> /dev/tty2
    2 -> /dev/tty2
    3 -> /proc/12710/fd
    

    Po spuštění X a Konsole mám zase k dispozici níže uvedené file descriptors.

    $ ls -l /dev/fd/
    0 -> /dev/pts/3
    1 -> /dev/pts/3
    2 -> /dev/pts/3
    3 -> /proc/12777/fd
    4 -> /dev/null
    

    Takže file descriptors mi vždy implicitně ukazují na terminál kde jsem příkaz spustil tj. o stderr nepřijdu, pokud si ho sám nezničím.

    Mrkni se třeba i na další procesy v systému a jejich file descriptors /proc/PID/fd/.

    Proto je např. třeba, když vytváříš daemona nastavit sdtin, stdout, stderr na /dev/null, aby se osamostatnil od rodičovského procesu se vším všudy.

    def daemonize():
        pid = os.fork()
        if (pid < 0):
            sys.exit(1)
        elif (pid > 0):
            # exit the parent process
            sys.exit(0)
    
        os.setsid()
        os.umask(0)
    
        pid = os.fork()
        if (pid < 0):
            sys.exit(1)
        elif (pid > 0):
            # exit the parent process
            sys.exit(0)
        
        stdin = open("/dev/null", "r")
        stdout = open("/dev/null", "a+")
        stderr = open("/dev/null", "a+", 0)
    
        os.dup2(stdin.fileno(), sys.stdin.fileno())
        os.dup2(stdout.fileno(), sys.stdout.fileno())
        os.dup2(stderr.fileno(), sys.stderr.fileno())
    

    Už je to trochu jasnější?

    polo23 avatar 19.2.2010 11:32 polo23 | skóre: 28 | blog: polo23
    Rozbalit Rozbalit vše Re: Využití pojmenované roury v Linuxu
    Rekl bych ze jo. Dekuji za vysvetleni.

    Založit nové vláknoNahoru

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.