Professional Documents
Culture Documents
OkruhyBcStatnice2024_BETA
OkruhyBcStatnice2024_BETA
Obsah
I. Predmet „Základy informatiky“ .......................................................................................... 1
1. Základy programovania ................................................................................................. 1
2. Dátové štruktúry a algoritmy ....................................................................................... 13
3. Objektovo orientované programovanie........................................................................ 19
4. Operačné systémy ........................................................................................................ 27
II. Predmet „Aplikácie informatiky“ ..................................................................................... 48
1. Webové technológie a dizajn ....................................................................................... 48
2. Modelovanie podnikových systémov .......................................................................... 67
3. Projektový manažment................................................................................................. 75
1. Základy programovania
ZI.1.1. Základné dátové typy v C: signed, unsigned, char, short, int, long, float, double,
aritmetické jazyku Java, rozsah člena triedy, životný
a relačne operácie, ich priority, pretečenie, podtečenie a presnosť aritmetických
operácii, pevná a pohyblivá desatinná čiarka, celé a reálne čísla, single precision,
double precision, exponenciálny tvar reálnych čísel. Uveďte jednoduché príklady.
1. signed a unsigned: Tieto dva pojmy definujú, či daná premenná môže byť záporná
(signed) alebo iba nezáporná (unsigned). Pre signed premennú sú rezervované dva
komplementárne bity pre záporné hodnoty. Unsigned premenné sú používané pre
hodnoty, ktoré nikdy nemajú byť záporné. Napríklad, signed integer môže mať hodnotu -5
až 5, kým unsigned integer môže mať hodnoty 0 až 10.
2. char, short, int, long: Tieto sú základné typy pre reprezentáciu celých čísel rôznych
veľkostí. Char reprezentuje znak, short a int sú celé čísla rôznych veľkostí (short je
zvyčajne 2 bajty, int môže byť 2 alebo 4 bajty), long je väčší typ ako int, obvykle 4 alebo
8 bajtov na 64-bitovom systéme.
3. float, double: Tieto sú dátové typy používané na reprezentáciu reálnych čísel. Float je
jednoduchá presnosť (single precision) a zvyčajne zaberie 4 bajty, zatiaľ čo double je
dvojitá presnosť (double precision) a zvyčajne zaberie 8 bajtov. Double poskytuje vyššiu
presnosť ako float.
1
4. aritmetické a relačné operácie: Aritmetické operácie sú základné matematické operácie
ako sčítanie, odčítanie, násobenie a delenie. Relačné operácie slúžia na porovnávanie
hodnôt, ako sú väčší ako, menší ako, rovné atď.
Aritmetické operácie:
Relačné operácie:
Menší alebo rovná sa (<=): Porovnáva, či je jedna hodnota menšia alebo rovnaká ako druhá.
Väčší alebo rovná sa (>=): Porovnáva, či je jedna hodnota väčšia alebo rovnaká ako druhá.
5. priority operácií: Každá operácia má svoju vlastnú prioritu, ktorá určuje poradie, v akom
sa operácie vykonávajú vo výraze. Napríklad, násobenie a delenie majú vyššiu prioritu
ako sčítanie a odčítanie.
V jazyku C je dôležité porozumieť priorite operácií, aby ste vedeli, v akom poradí sa vykonávajú
matematické operácie a logické operácie vo vašom kóde. Tu je zoznam priorit operácií v jazyku C,
usporiadaný od najvyššej priority po najnižšiu:
2
2. Prefixné a postfixné operátory: Tieto zahŕňajú operátory ako inkrementácia (++) a
dekrementácia (--). Ich priorita závisí od toho, či sú použité ako prefixové alebo postfixové
operátory.
3. Unárne operátory: To zahŕňa unárne mínus (-) a unárny plus (+).
4. Násobenie (*) a delenie (/): Tieto operácie sú vykonávané v poradí, v ktorom sa nachádzajú
výskyty výrazu.
5. Sčítanie (+) a odčítanie (-): Podobne ako násobenie a delenie, sčítanie a odčítanie sú vykonávané
v poradí, v ktorom sa nachádzajú výskyty výrazu.
6. Porovnávacie operátory: To zahŕňa operácie ako rovná sa (==), nerovná sa (!=), menšie ako (<),
menšie alebo rovné (<=), väčšie ako (>), a väčšie alebo rovné (>=).
7. Logické operátory: To sú operátory ako AND (&&) a OR (||).
8. Priraďovací operátor: Priraďovací operátor (=) má najnižšiu prioritu. Je to operátor, ktorý priradí
hodnotu na pravú stranu výrazu do premennej na ľavej strane.
Poradie operácií môže byť ovplyvnené aj pomocou zátvoriek, ktoré môžete použiť na
jasné definovanie požadovaného poradia operácií
Presnosť aritmetických operácií v jazyku C môže byť kritická v niektorých situáciách, najmä pri manipulácii
s číslami s pohyblivou desatinnou čiarkou a pri veľkých číslach. Tu sú niektoré základné záležitosti, ktoré
treba zvážiť:
1. Celé čísla: V jazyku C sú celé čísla obvykle reprezentované buď ako int alebo long int. Pri
bežných operáciách s celými číslami je presnosť zvyčajne zachovaná, pokiaľ sa neprekrývajú s
maximálnymi hodnotami reprezentácie (napr. pre int 32-bitový systém je to 2^31 - 1). Pri delení
celých čísel sa pamätá iba celočíselný výsledok a zvyšok.
3. Veľké čísla: Ak sa pracuje s veľkými číslami, ktoré prekračujú rozsah bežných typov (int, long
int, float, double), môže dôjsť k strate presnosti a presnosti číselného zobrazenia. V takýchto
prípadoch sa používajú knižnice alebo vlastné implementácie, ktoré podporujú veľké celé čísla
alebo riešenia s pohyblivou desatinnou čiarkou s väčšou presnosťou (napr. long double).
3
5. Aritmetické operácie s rôznymi typmi: Pri vykonávaní aritmetických operácií s rôznymi typmi v
jazyku C dochádza k automatickej konverzii typov, čo môže viesť k stratám presnosti, ak nie je
správne riadená.
6. Zmenšovanie pri konverzii: Konverzia medzi typmi s menšou a väčšou presnosťou môže viesť k
stratám presnosti. Napríklad, konverzia z double na float môže spôsobiť stratu presnosti, ak číslo
je príliš veľké alebo má veľa desatinných miest.
8. pevná a pohyblivá desatinná čiarka: Pevná desatinná čiarka používa fixný počet
desatinných miest, zatiaľ čo pohyblivá desatinná čiarka umožňuje posúvať desatinnú
čiarku na základe potreby.
V jazyku C existujú dva základné typy pre reprezentáciu čísel s desatinnou čiarkou: pevná
desatinná čiarka a pohyblivá desatinná čiarka. Každý z týchto typov má svoje vlastnosti a
použitia.
• Výhody: Pevná desatinná čiarka je výhodná, ak potrebujete presnú kontrolu nad počtom
desatinných miest a presnosťou. Často sa používa v aplikáciách, kde sú známe konkrétne
požiadavky na presnosť.
• Nevýhody: Nevýhodou pevnej desatinnej čiarky je, že neposkytuje takú flexibilitu ako
pohyblivá desatinná čiarka. Čísla s pevnou desatinnou čiarkou môžu byť obmedzené na
určitý rozsah a presnosť.
• Príklad: Typy float a double v jazyku C sú príkladmi pohyblivej desatinnej čiarky. float
má menšiu presnosť a zaberá menej pamäte ako double.
4
• Výhody: Pohyblivá desatinná čiarka poskytuje väčšiu flexibilitu a rozsah pre reprezentáciu
čísel s desatinnou čiarkou. Je ideálna pre situácie, kde nie je potrebné striktne kontrolovať
počet desatinných miest a presnosť.
V praxi sa používa pohyblivá desatinná čiarka (typy float a double) pre bežné výpočty,
pretože poskytuje primeranú presnosť a rozsah s dostatočnou flexibilitou. Avšak, v
niektorých prípadoch môže byť lepšie použiť pevnú desatinnú čiarku, ak sú presné počty
desatinných miest dôležité.
9. celé a reálne čísla: Celé čísla sú čísla bez desatinných miest, zatiaľ čo reálne čísla môžu
mať desatinnú čiarku.
10. exponenciálny tvar reálnych čísel: Exponenciálny tvar reprezentuje reálne čísla
pomocou exponentu a základu. Napríklad, číslo 3.14 môže byť reprezentované ako
3.14e0.
c
#include <stdio.h>
int main() {
// signed a unsigned
signed int a = -5;
unsigned int b = 10;
// float, double
float g = 3.14;
double h = 3.14159265359;
// aritmetické operácie
int result1 = e + d;
float result2 = g * 2;
// relačné operácie
if (a < b) {
printf("a je menšie ako b\n");
}
return 0;
}
5
Reťazce (Strings):
Reťazce v jazyku C sú postupnosti znakov ukončené nulovým znakom ('\0'). Každý znak v
reťazci je uložený v pamäti na po sebe nasledujúcich pozíciách. Pre prácu s reťazcami sa
zvyčajne používa knižnica string.h, ktorá poskytuje funkcie na manipuláciu s reťazcami.
1. strcpy():
2. strcat():
• Funkcia strcat() slúži na spojenie dvoch reťazcov.
• Syntax: char *strcat(char *dest, const char *src);
• Parametre: dest je cieľový reťazec, ku ktorému sa pridáva obsah src.
3. strlen():
4. strcmp():
• Funkcia strcmp() porovnáva dva reťazce a vráti hodnotu, ktorá indikuje, či sú reťazce
rovnaké, menšie alebo väčšie.
• Syntax: int strcmp(const char *str1, const char *str2);
• Parametre: str1 a str2 sú reťazce, ktoré sa porovnávajú.
5. strchr() a strrchr():
• Funkcie strchr() a strrchr() hľadajú prvý alebo posledný výskyt určitého znaku v
reťazci.
• Syntax: char *strchr(const char *str, int c); (hľadá prvý výskyt), char
*strrchr(const char *str, int c); (hľadá posledný výskyt).
• Parametre: str je reťazec, v ktorom sa vyhľadáva znak c.
6. strstr():
7. strtok():
6
• Funkcia strtok() slúži na tokenizáciu reťazca na základe oddelovačov.
• Syntax: char *strtok(char *str, const char *delim);
• Parametre: str je reťazec, ktorý sa má tokenizovať, a delim je reťazec s oddelovačmi.
Tieto sú len niektoré z najčastejšie používaných funkcií v knižnici string.h. Táto knižnica
poskytuje ďalšie funkcie na manipuláciu s reťazcami, ktoré umožňujú efektívne a
robustné operácie so znakmi a reťazcami v jazyku C.
c
• #include <stdio.h>
#include <string.h>
int main() {
// Deklarácia a inicializácia reťazca
char str1[] = "Hello";
char str2[10];
// Kopírovanie reťazca
strcpy(str2, str1);
return 0;
}
• Súbory (Files):
Práca so súbormi v jazyku C sa vykonáva pomocou štandardných knižníc stdio.h. Pre otvorenie
súboru sa používa funkcia fopen(), pre čítanie a zápis sa používajú funkcie fread() a
fwrite(), a nakoniec súbor treba uzavrieť pomocou fclose().
c
• #include <stdio.h>
int main() {
FILE *file;
char text[] = "Hello, World!";
// Uzavretie súboru
fclose(file);
return 0;
}
7
• Vstup z klávesnice a výstup na monitore:
Pre získanie vstupu z klávesnice sa používa funkcia scanf(), ktorá číta vstup zo štandardného
vstupu (klávesnice), a pre výstup na monitor sa používa funkcia printf().
c
• #include <stdio.h>
int main() {
int number;
// Vstup z klávesnice
printf("Zadaj číslo: ");
scanf("%d", &number);
// Výstup na monitor
printf("Zadal si číslo: %d\n", number);
return 0;
}
• Práca s knižnicami:
Knižnice v jazyku C sú súbory, ktoré obsahujú definície funkcií a premenných, ktoré môžu byť
použité v rôznych programoch. Pre použitie knižnice sa musí pridať príkaz #include na začiatok
zdrojového súboru.
c
1. #include <stdio.h> // Štandardná knižnica pre vstupno-výstupné operácie
2. #include "mylibrary.h" // Užívateľsky definovaná knižnica
3.
4. int main() {
5. int result = add(5, 3); // Volanie funkcie z užívateľskej knižnice
6. printf("Výsledok sčítania: %d\n", result);
7.
8. return 0;
9. }
10.
Tieto príklady ukazujú základnú funkcionalitu pre prácu s reťazcami, súbormi, vstupom z
klávesnice a výstupom na monitor, ako aj prácu s knižnicami v jazyku C.
ZI.1.3. Smerníky a dynamické údaje v jazyku C: typ smerník, pojem dynamického údaju,
prideľovanie a uvoľňovanie dynamickej pamäte, vysvetlite pojem diery v pamäti a
vystrčené smerníky, statické a dynamické pole. Uveďte jednoduché príklady.
8
c
• int *ptr; // Smerník na celé číslo
char *ptr_char; // Smerník na znak
Na alokáciu dynamického údaju v jazyku C sa používa funkcia malloc() alebo jej varianty ako
calloc() alebo realloc(). Na uvoľnenie pamäti sa používa funkcia free(). Je dôležité, aby
sme uvoľnili pamäť, ktorú sme alokovali dynamicky, aby sme predišli úniku pamäte.
c
• int *ptr;
ptr = (int *)malloc(sizeof(int)); // Alokácia pamäti pre celé číslo
free(ptr); // Uvoľnenie pamäti
Diera v pamäti je situácia, kedy sa medzi dvomi alokovanými úsekmi pamäti nachádza
nealokovaná pamäť. Vystrčené smerníky sú smerníky, ktoré odkazujú na diery v pamäti, čo môže
viesť k nežiaducemu správaniu programu alebo k haváriám.
Statické pole má statickú veľkosť a pamäť preň sa rezervuje pri kompilácii programu. Naopak,
dynamické pole má dynamickú veľkosť a pamäť sa alokuje a dealokuje počas behu programu.
c
1. // Statické pole
2. int static_array[10];
3.
4. // Dynamické pole
5. int *dynamic_array;
6. dynamic_array = (int *)malloc(10 * sizeof(int));
7.
Jednoduchý príklad ukazuje vytvorenie smerníka na celé číslo a alokáciu pamäte pre neho:
c
#include <stdio.h>
#include <stdlib.h>
int main() {
int *ptr;
ptr = (int *)malloc(sizeof(int)); // Alokácia pamäti pre celé číslo
if (ptr == NULL) {
printf("Chyba pri alokácii pamäti.\n");
return 1;
}
9
printf("Hodnota: %d\n", *ptr);
return 0;
}
Tento príklad dynamicky alokuje pamäť pre celé číslo a následne uvoľní túto pamäť po jej
použití.
ZI.1.4. Programátorom definované údajové typy v C: pole, reťazec, typedef, enum, struct,
union a sizeof. Uveďte jednoduché príklady.
Pole (Array):
Pole je kolekcia rovnakých typov údajov, ktoré sú usporiadané za sebou v pamäti. Každý prvok
poľa má index, ktorý sa začína od 0.
c
• int numbers[5]; // Deklarácia poľa s 5 celými číslami
• Reťazec (String):
Reťazec v jazyku C je pole znakov ukončené nulovým znakom ('\0'). Tento nulový znak
označuje koniec reťazca.
c
• char str[] = "Hello"; // Deklarácia reťazca
• Typedef:
Typedef v C umožňuje programátorovi definovať nový názov pre existujúci typ. To uľahčuje
zmeny typov a zlepšuje čitateľnosť kódu.
c
• typedef unsigned int uint; // Nový názov pre typ unsigned int
uint number = 10;
• Enum (Enumeration):
c
• enum Color {RED, GREEN, BLUE}; // Definícia enumerácie
enum Color color = RED; // Použitie enumerácie
• Struct (Structure):
10
c
• struct Person {
char name[50];
int age;
}; // Definícia štruktúry
• Union:
Union je špeciálny dátový typ v C, ktorý umožňuje viacerým členom používať rovnaký úsek
pamäti.
c
• union Data {
int i;
float f;
char str[20];
}; // Definícia unionu
• Sizeof:
Sizeof je operátor v C, ktorý vráti veľkosť daného typu alebo premennej v bajtoch.
c
1. int size = sizeof(int); // size bude obsahovať veľkosť typu int v
bajtoch
2.
c
#include <stdio.h>
// Definícia štruktúry
struct Person {
char name[50];
int age;
};
int main() {
// Deklarácia a inicializácia premenných typu struct Person
struct Person person1 = {"John", 30};
struct Person person2;
return 0;
}
11
Tento príklad demonštruje použitie štruktúry na reprezentáciu osoby, kde každá osoba má meno a
vek.
ZI.1.5. Binárne a logické operátory v C: logické a binárne AND, logické a binárne OR, logické
a binárne NOT, bitové posuvy doprava a doľava, bitové makrá. Uveďte jednoduché
príklady.
Logický operátor && vyhodnocuje sa na true iba vtedy, ak sú obe jeho operandy true, inak sa
vyhodnocuje na false. Binárny operátor & vykonáva bitovú konjunkciu na každom bite svojich
operandov.
c
• int a = 5, b = 3;
if (a > 0 && b < 5) {
printf("Oba podmienky sú splnené.\n");
}
int c = a & b; // Bitová konjunkcia
Logický operátor || vyhodnocuje sa na true, ak je aspoň jeden z jeho operandov true, inak sa
vyhodnocuje na false. Binárny operátor | vykonáva bitovú disjunkciu na každom bite svojich
operandov.
c
• int x = 5, y = 3;
if (x == 5 || y == 3) {
printf("Aspoň jedna podmienka je splnená.\n");
}
int z = x | y; // Bitová disjunkcia
Logický operátor ! invertuje hodnotu svojho operandu (ak je operand true, vráti false a
naopak). Binárny operátor ~ vykonáva bitovú negáciu, čo znamená, že invertuje každý bit svojho
operandu.
c
• int p = 1, q = 0;
if (!p) {
printf("Hodnota p je false.\n");
}
int r = ~q; // Bitová negácia
Operátory << a >> vykonávajú bitové posuny operandov doľava alebo doprava o určitý počet
bitov.
12
c
• int num = 8; // Binárne: 0000 1000
int left_shift = num << 2; // Binárne: 0010 0000 (32 v desiatkovej)
int right_shift = num >> 1; // Binárne: 0000 0100 (4 v desiatkovej)
• Bitové makrá:
Bitové makrá v C sú definície, ktoré umožňujú pracovať s bitmi v pamäti, čo sa používa najmä
pri manipulácii s registrovými bitmi.
c
#define SET_BIT(x, n) ((x) |= (1 << (n)))
#define CLEAR_BIT(x, n) ((x) &= ~(1 << (n)))
c
1. int num = 0; // Binárne: 0000 0000
2. SET_BIT(num, 3); // Binárne: 0000 1000
3. CLEAR_BIT(num, 3); // Binárne: 0000 0000
4.
Tieto príklady demonštrujú použitie logických a bitových operátorov v jazyku C a ich použitie na
manipuláciu s bitmi v pamäti.
ZI.2.1. Smerníky a dynamické údaje, typ smerník, pojem dynamického údaju, prideľovanie
a
uvoľňovanie dynamickej pamäte, vysvetlite pojem diery v pamäti a vystrčené
smerníky v C++, konštruktory a deštruktory dynamických objektov, dynamické pole
ako trieda a virtuálne funkcie.
cpp
Dynamický údaj je údaj, ktorý je vytvorený a uvoľnený za behu programu. To znamená, že pamäť
pre tento údaj sa alokuje a dealokuje dynamicky počas behu programu.
13
Na alokáciu dynamického údaju v jazyku C++ sa používa operátor new, a na uvoľnenie pamäte sa
používa operátor delete.
cpp
Diera v pamäti je situácia, keď medzi dvoma alokovanými úsekmi pamäti existuje nealokovaný
úsek. Vystrčené smerníky sú smerníky, ktoré odkazujú na takéto diery v pamäti, čo môže
viesť k neočakávanému správaniu programu alebo k haváriám.
Konštruktor je špeciálna metóda triedy, ktorá sa volá pri vytváraní objektu. Deštruktor je tiež
špeciálna metóda triedy, ktorá sa volá pri zániku objektu. Ich úlohou je inicializovať a
uvoľniť zdroje spojené s objektom.
cpp
class MyClass {
public:
MyClass() { // Konštruktor
cout << "Objekt vytvorený." << endl;
}
~MyClass() { // Deštruktor
cout << "Objekt zničený." << endl;
}
};
Dynamické pole môže byť reprezentované ako trieda, ktorá obsahuje dynamicky alokované pole
ako svoj atribút. Virtuálne funkcie v C++ sú funkcie, ktoré sa môžu prekryť alebo prepísať
v odvodených triedach.
cpp
class DynamicArray {
private:
int *array;
int size;
public:
DynamicArray(int s) : size(s) { // Konštruktor s parametrom
array = new int[size];
}
virtual ~DynamicArray() { // Virtuálny deštruktor
delete[] array;
}
14
};
Tieto príklady demonštrujú použitie smerníkov a dynamických údajov v jazyku C++, ako aj
použitie konštruktorov a deštruktorov dynamických objektov. Ich správne použitie je
kľúčom k úspešnému riadeniu pamäte a správnej funkčnosti programu.
Hrubá miera na porovnanie zložitosti algoritmov poskytuje hrubý odhad toho, ako sa algoritmy
porovnávajú vzhľadom na ich výkon a pamäťové nároky. Tento odhad sa zvyčajne
vyjadruje v big O notácii.
Kritický kód programu je časť kódu, ktorá má významný vplyv na celkový výkon alebo
fungovanie programu. Tieto časti kódu sú obvykle optimalizované pre maximalizáciu
výkonu a minimalizáciu pamäťových nárokov.
Vyhľadávanie kľúča v zozname je proces nájdenia konkrétneho prvku alebo kľúča v zozname
údajov. Najznámejšími algoritmami na vyhľadávanie sú lineárne vyhľadávanie a binárne
vyhľadávanie.
Hašovacia tabuľka je dátová štruktúra, ktorá umožňuje rýchle vyhľadávanie a vkladanie údajov
pomocou hašovacej funkcie. Kolízia nastáva, keď dve alebo viacero kľúčov má rovnakú
hašovaciu hodnotu. Spôsoby riešenia kolízií zahŕňajú rôzne techniky, ako sú otvorené
adresovanie, zretelenie a hašovanie so zretelením.
15
Algoritmy s časovou zložitosťou nlognnlogn sú efektívne algoritmy usporiadania a
vyhľadávania, ktoré majú lepšiu výkonnosť ako algoritmy s kvadratickou zložitosťou.
Medzi najznámejšie patria quicksort, mergesort a heap sort.
Quicksort:
Mergesort:
ZI.2.3. Formálne definujte pojem zásobníka, vysvetlite špecifikáciu a dve rôzne možnosti
implementácie abstraktného údajového typu zásobník, vysvetlite pretečenie
a podtečenie zásobníka. Uveďte aspoň dva jednoduché príklady jeho použitia.
Formálna definícia zásobníka:
Zásobník je abstraktný dátový typ, ktorý reprezentuje kolekciu prvkov usporiadaných podľa
LIFO (Last-In-First-Out) princípu. To znamená, že prvok, ktorý bol posledný pridaný
(vrchol zásobníka), je prvý, ktorý je vybraný.
Špecifikácia zásobníka:
Operácie:
push(item): Pridá položku na vrchol zásobníka.
pop(): Odstráni a vráti položku z vrcholu zásobníka.
peek(): Vráti hodnotu položky na vrchole zásobníka bez jej odstránenia.
isEmpty(): Vráti true, ak je zásobník prázdny, inak false.
isFull(): Vráti true, ak je zásobník plný (v prípade obmedzenej veľkosti), inak false.
16
Flexibilnejší a efektívnejší pre zásobníky s neobmedzenou alebo veľkou kapacitou.
Pretečenie:
Pretečenie zásobníka nastáva, keď sa do plného zásobníka pokúšame pridať ďalší prvok.
V prípade statického zásobníka môže dôjsť k pretečeniu pamäte.
V dynamickom zásobníku môže dôjsť k dynamickému rozšíreniu zásobníka, alebo sa môže
vyvolať výnimka (ak nie je možné alokovať ďalšiu pamäť).
Podtečenie:
Podtečenie zásobníka nastáva, keď sa z prázdneho zásobníka pokúšame odstrániť prvok.
V prípade podtečenia je vrátená chybová hodnota (napríklad ak sa snažíme vykonať pop()
na prázdnom zásobníku).
Obecný strom je hierarchická štruktúra dát, ktorá pozostáva z vrcholov a hrán, kde každý vrchol
má jeden nadriadený vrchol a môže mať viacero podriadených vrcholov. Každý vrchol v
strome sa nazýva uzol.
Inorder (V-stred-O):
Najprv navštívi ľavého potomka, potom aktuálny uzol a nakoniec pravého potomka.
17
Preorder (V-O-stred):
Najprv navštívi aktuálny uzol, potom ľavého potomka a nakoniec pravého potomka.
Postorder (O-ľavý-pravý):
Najprv navštívi ľavého potomka, potom pravého potomka a nakoniec aktuálny uzol.
Matematické výrazy:
Binárny strom môže byť použitý na reprezentáciu a vyhodnotenie matematických výrazov.
Napríklad výraz "((3 + 4) * 5)" môže byť reprezentovaný ako binárny strom, kde uzly sú
operátory (+, *) a listy sú hodnoty (3, 4, 5).
ZI.2.5. Formálne definujte pojem grafu, vysvetlite špecifikáciu a dve rôzne možnosti
implementácie abstraktného údajového typu graf, definujte minimálnu cestu v grafe
a vysvetlite algoritmus pre jej nájdenie. Uveďte aspoň dva jednoduché príklady
použitia grafu.
Graf je matematická štruktúra, ktorá sa skladá z množiny vrcholov a množiny hrán, ktoré
spájajú tieto vrcholy. Hrany môžu byť orientované alebo neorientované a môžu mať váhy.
18
Minimálna cesta medzi dvomi vrcholmi v grafe je najkratšia cesta, ktorá spája tieto dva
vrcholy.
Môže byť definovaná ako minimálny počet hrán alebo minimálna váha na ceste.
19
o Prúdy s vyrovnávajúcou pamäťou ukladajú údaje do vyrovnávacej pamäte pred ich
skutočným zápisom na disk alebo odoslaním cez sieť.
o To zvyšuje efektivitu operácií vstupu a výstupu tým, že minimalizuje počet
skutočných prístupov k zariadeniam.
o Triedy ako BufferedReader a BufferedWriter poskytujú vyrovnávanie pamäte
pre čítanie a zápis textu.
4. Štandardné triedy pre vstup a výstup:
o Java poskytuje niekoľko štandardných tried pre vstup a výstup, ako sú
FileInputStream, FileOutputStream, FileReader, FileWriter,
BufferedReader, BufferedWriter a ďalšie.
o Tieto triedy umožňujú interakciu so súbormi, sieťovými spojeniami a ďalšími
zdrojmi a cieľmi dát.
5. Práca so súbormi:
o V Jave je práca so súbormi implementovaná pomocou tried ako File,
FileInputStream, FileOutputStream, FileReader, FileWriter.
o Súbory môžu byť otvorené, čítané, zapisované a zatvárané pomocou týchto tried.
6. Reťazce v jazyku Java:
o V Jave je reťazec objektom triedy String.
o Reťazce sú nezmeniteľné, čo znamená, že ich obsah sa nemôže po vytvorení
zmeniť.
o Poskytujú množstvo metód na manipuláciu a prácu s textom.
7. Práca s reťazcami:
o Manipulácia s reťazcami sa vykonáva pomocou metód triedy String.
o Tieto metódy zahŕňajú operácie ako získanie dĺžky reťazca, vyhľadávanie
podreťazcov, nahradenie podreťazcov, rozdelenie reťazca na časti a mnoho
ďalších.
Príklady:
java
// Čítanie zo súboru riadok po riadku
try (BufferedReader reader = new BufferedReader(new FileReader("subor.txt")))
{
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
// Zápis do súboru
try (BufferedWriter writer = new BufferedWriter(new FileWriter("vystup.txt")))
{
writer.write("Hello, world!");
} catch (IOException e) {
e.printStackTrace();
}
20
ZI.3.2. Triedy a objekty v jazyku Java, rozsah člena triedy, životný cyklus objektov triedy,
metódy a konštruktory tried, garbage collector, rôzne typy prístupu k metódam
triedy, združovanie
príbuzných tried, tvorba a využitie balíkov a podbalíkov tried. Uveďte jednoduché
príklady.
21
oNa úrovni balíka (package-private):
▪ Metóda je prístupná v rovnakom balíku.
7. Združovanie príbuzných tried:
o Združovanie (agregácia a kompozícia) je spôsob, ako triedy môžu byť vzájomne
prepojené tak, že jedna trieda obsahuje referenciu na inú triedu ako svoj atribút.
8. Tvorba a využitie balíkov a podbalíkov tried:
o Balík je skupina súborov a tried, ktoré sú zaradené do toho istého adresára.
Používa sa na organizáciu a štruktúrovanie kódu.
o Podbalíky môžu byť vytvorené pre ďalšie štruktúrovanie kódu a lepšiu
organizáciu.
Príklady:
java
// Jednoduchá trieda Car s konštruktorom a metódou
public class Car {
private String brand;
private String model;
Tento príklad demonštruje vytvorenie triedy Car, vytvorenie objektu tejto triedy a volanie jej
metód.
ZI.3.3. Dedičnosť v jazyku Java: typy a výhody dedenia, jeho cena: rýchlosť, veľkosť a
zložitosť
programu, blokovanie dedičnosti, rozsah člena pri dedení, konštruktory pri dedení,
predefinovanie a preťažovanie metód, polymorfizmy, abstraktné metódy a triedy,
rozhrania. Uveďte jednoduché príklady.
22
o Typy dedenia:
▪ V Jave môžete dediť z inej triedy alebo implementovať jedno alebo viac
rozhraní.
▪ Jednoduchá dedičnosť: Jedna trieda môže dediť z inej triedy.
▪ Viacnásobná dedičnosť nie je povolená v Jave.
o Výhody dedenia:
▪ Znovupoužiteľnosť kódu: Existujúce triedy môžu poskytnúť funkcionality
novým triedam.
▪ Zjednodušená správa kódu: Dedičnosť môže viesť k lepšej organizácii
kódu a jeho štruktúre.
▪ Flexibilita a rozšíriteľnosť: Nové triedy môžu rozširovať funkcionality
existujúcich tried.
2. Cena dedenia: rýchlosť, veľkosť a zložitosť programu:
o Rýchlosť:
▪ Pri dedení môže dôjsť k určitej miere zrýchlenia vývoja, ale zároveň môže
byť vyššia cena výpočtových zdrojov počas behu programu kvôli
dynamickému prehľadávaniu a volaniu metód.
o Veľkosť:
▪ Dedičnosť môže zvýšiť veľkosť kódu a potrebných zdrojov, pretože nové
triedy môžu obsahovať dodatočný kód navyše k tomu, čo dedia.
o Zložitosť programu:
▪ Dedičnosť môže zvýšiť zložitosť programu tým, že vytvára vzťahy medzi
triedami a vďaka možnosti preťažovania a predefinovania metód môže byť
kód menej prehľadný.
3. Blokovanie dedičnosti:
o Blokovanie dedičnosti je mechanizmus, ktorý bráni iným triedam v dedení od
určitej triedy.
o Používa sa v prípadoch, keď je potrebné zamedziť istým triedam využívať
funkcionalitu z inej triedy.
4. Rozsah člena pri dedení:
o Rozsah člena triedy definuje dostupnosť daného člena triedy pre iné triedy.
o Môže byť verejný, chránený, súkromný alebo na úrovni balíka.
5. Konštruktory pri dedení:
o Konštruktory nie sú dedené, ale konštruktor nadradenej triedy je volaný implicitne
pri vytvorení objektu podradenej triedy.
o Konštruktor podradenej triedy môže volať konštruktor nadradenej triedy pomocou
super().
6. Predefinovanie a preťažovanie metód:
o Predefinovanie metód:
▪ Podradená trieda môže definovať metódu s rovnakým názvom, ako má jej
nadradená trieda.
▪ Táto metóda sa nazýva predefinovaná a preberá kontrolu nad metódou
rovnakého mena v nadradenej triede.
o Preťažovanie metód:
▪ Preťažovanie metód umožňuje definovať viacero metód s rovnakým
názvom, ale rôznymi parametrami.
▪ Java rozlišuje medzi nimi na základe počtu a typu parametrov.
7. Polymorfizmus, abstraktné metódy a triedy, rozhrania:
o Polymorfizmus:
▪ Polymorfizmus v Jave umožňuje objektom rôznych tried vykonávať
rovnaké operácie rôznymi spôsobmi.
23
▪ Môže byť dosiahnutý pomocou predefinovania metód (polymorfizmus
bežný).
o Abstraktné metódy a triedy:
▪ Abstraktná metóda je metóda bez implementácie, ktorá je označená
kľúčovým slovom abstract.
▪ Abstraktná trieda je trieda obsahujúca aspoň jednu abstraktnú metódu.
▪ Nesmie byť vytvorený objekt abstraktnej triedy, ale môže byť použitá ako
nadradená trieda.
o Rozhrania:
▪ Rozhranie je zbierka abstraktnych metod, ktoré musia byť implementované
triedami, ktoré implementujú toto rozhranie.
▪ Všetky metódy v rozhraní sú implicitne verejné a abstraktné.
▪ Rozhrania umožňujú vytvárať plne polymorfné aplikácie.
Príklady:
java
// Dedičnosť: Tvorba podradenej triedy z nadradenej triedy
class Vehicle {
public void move() {
System.out.println("Vehicle is moving");
}
}
1. Pojem kolekcie:
o Kolekcia v jazyku Java je objekt, ktorý umožňuje uchovávať a manipulovať s
množinou prvkov.
o Kolekcie môžu byť rôzne typy, ako sú zoznamy, množiny, mapy a fronty.
o Kolekcie sú dôležitou súčasťou štandardnej knižnice jazyka Java a nachádzajú sa
v balíku java.util.
2. Rozhranie Collection a jeho základné metódy:
o Rozhranie Collection je základným rozhraním pre všetky kolekcie v jazyku
Java.
24
o Obsahuje základné metódy na manipuláciu s prvkami v kolekcii, ako sú add(),
remove(), contains(), size(), isEmpty() a ďalšie.
o Toto rozhranie nezaručuje poradie prvkov a môže obsahovať duplicitné prvky.
3. Iterátor kolekcie:
o Iterátor je objekt, ktorý umožňuje prechádzať cez prvky v kolekcii.
o Rozhranie Iterator definuje metódy ako hasNext() na overenie existencie
ďalšieho prvku a next() na získanie tohto ďalšieho prvku.
4. Rozhrania Set, SortedSet, List, Queue a ich možné implementácie:
o Rozhranie Set:
▪ Reprezentuje množinu unikátnych prvkov.
▪ Nepodporuje indexovanie.
▪ Nie je zaručené poradie prvkov.
▪ Implementácie: HashSet, LinkedHashSet, TreeSet.
o Rozhranie SortedSet:
▪ Podobné ako rozhranie Set, ale zaručuje triedenie prvkov podľa ich
poradia.
▪ Implementácie: TreeSet.
o Rozhranie List:
▪ Reprezentuje zoznam prvkov, ktoré sú indexované.
▪ Podporuje duplicitné prvky a zachováva poradie, v akom boli pridané.
▪ Implementácie: ArrayList, LinkedList, Vector.
o Rozhranie Queue:
▪ Reprezentuje frontu prvkov, ktorá dodržiava princíp FIFO (First-In-First-
Out).
▪ Implementácie: LinkedList, ArrayDeque, PriorityQueue.
5. Príklady:
java
// Príklad vytvorenia HashSetu a pridania prvkov
Set<String> set = new HashSet<>();
set.add("apple");
set.add("banana");
set.add("apple"); // Duplicitný prvok, nebude pridaný
System.out.println(queue.poll()); // Vypíše: 3
System.out.println(queue.poll()); // Vypíše: 5
25
ZI.3.5. Paralelné programovanie v Jave: pojem vlákna a jeho tvorba, životný cyklus vlákna,
priorita, rozvrhovanie a synchronizácia vlákien, uviaznutie vlákna, užívateľské
a démonické vlákna, skupiny vlákien, súvislosť s bezpečnosťou programu. Uveďte ich
výhody a jednoduché príklady použitia.
• Vlákno:
o Vlákno je jednotka spracovania, ktorá umožňuje vykonávanie kódu súčasne s
inými vláknami v rámci rovnakého procesu.
o V Jave môžete vytvoriť vlákno pomocou triedy Thread alebo implementovaním
rozhrania Runnable.
• Tvorba vlákna pomocou triedy Thread:
java
• Thread thread = new Thread() {
public void run() {
// Kód, ktorý sa má vykonať vo vlákne
}
};
thread.start(); // Spustenie vlákna
java
1.
o Runnable myRunnable = new Runnable() {
o public void run() {
o // Kód, ktorý sa má vykonať vo vlákne
o }
o };
o Thread thread = new Thread(myRunnable);
o thread.start(); // Spustenie vlákna
o
2. Životný cyklus vlákna:
o Nové: Vlákno je vytvorené, ale ešte nebolo spustené.
o Spustené: Vlákno je spustené a vykonáva sa jeho kód.
o Zastavené alebo ukončené: Vlákno skončilo svoj beh alebo bolo ukončené.
3. Priorita, rozvrhovanie a synchronizácia vlákien:
o Priorita vlákna:
▪ Každé vlákno má prioritu, ktorá určuje, akým spôsobom má byť
vykonávané v porovnaní s ostatnými vláknami.
▪ Priorita vlákna je celé číslo od 1 do 10, pričom 1 je najnižšia priorita a 10
je najvyššia.
o Rozvrhovanie vlákien:
▪ Rozvrhovanie je proces rozhodovania, ktoré vlákno bude vykonávané v
akom čase.
▪ Rozvrhovanie je riadené plánovačom vlákien JVM.
o Synchronizácia vlákien:
▪ Synchronizácia je mechanizmus, ktorý umožňuje viacerým vláknám
pristupovať k zdieľaným zdrojom bezpečne.
26
▪ Používa sa k zablokovaniu prístupu k zdieľaným zdrojom počas ich
používania iným vláknom.
4. Uviaznutie vlákna:
o Uviaznutie (deadlock) nastáva, keď dva alebo viac vlákien čakajú navzájom na
uvoľnenie zdrojov, ktoré drží jeden z nich, a žiadne z týchto vlákien nie je ochotné
uvoľniť zdroje, ktoré drží.
5. Užívateľské a démonické vlákna:
o Užívateľské vlákno:
▪ Sú to vlákna, ktoré majú rovnakú prioritu ako ostatné vlákna.
▪ JVM čaká na ich ukončenie pred ukončením programu.
o Démonické vlákno:
▪ Sú to vlákna, ktoré nebránia ukončeniu programu.
▪ Ak zostane jediným bežiacim vláknom v JVM, JVM ukončí svoj beh.
6. Skupiny vlákien:
o Skupiny vlákien sú kolekcie vlákien, ktoré sa zdieľajú spoločné vlastnosti, ako
napríklad priorita a kontrola.
7. Súvislosť s bezpečnosťou programu:
o Paralelné programovanie môže viesť k rôznym problémom spojeným s
bezpečnosťou, ako je súčasné prístupovanie k zdieľaným zdrojom, deadlocky a
úniky pamäte.
java
public class Main {
public static void main(String[] args) {
// Vytvorenie a spustenie nového vlákna pomocou anonymnej triedy
Thread thread = new Thread() {
public void run() {
System.out.println("Hello from thread");
}
};
thread.start();
}
}
4. Operačné systémy
ZI.4.1. Vytvorenie procesu a jeho životný cyklus. Pojem vlákno (thread). Preemptívny
multitasking. Plánovanie procesov a priorita. Spravovanie procesov operačným
systémom: tabuľka procesov. Hardvérová podpora pre správu procesov: prerušenie
a privilegovaný režim procesora.
Prostredníctvom procesu – interpretera príkazov môže používateľ spúšťať
programy/procesy, ktoré potrebuje. Aby proces mohol spustiť iný proces,
27
existujú v jadre operačných systémov nasledujúce služby, ktoré môžu byť
procesmi volané:
fork(), exec(), exit() (vytvorenie, vykonanie a skončenie procesu)
FORK(),
RODIČOVSKÝ
PROCES,
POTOMOK,
PID, GID
Služba fork() („vidlička“) vytvára z bežiaceho procesu druhý jemu identický
a samostatne bežiaci proces. Keď proces volaním požiada o túto systémovú
službu, dôjde ku vzniku kópie a od toho okamihu beží v systéme o jeden proces
viac, obr. 1.5. Proces ktorý o túto službu požiadal je bežiaci program
pozostávajúci z vykonávaných inštrukcií a po vykonaní fork() sám v princípe
nevie, či je rodičovským procesom ktorý obsluhu volal (parent process), alebo
potomkom (offspring, child), teda bežiacou kópiou. Túto informáciu sa dozvedá
z vonkajšieho okolia, podľa hodnoty vrátenej funkciou fork() do programu:
_ proces()
{
int pid;
pid=fork(); // pid oznamuje, kto som odteraz
if(pid==0) printf("som potomok s číslom %d", getpid());
else printf("som rodič a mám nového potomka %d", pid);
. . .
}
Rodič sa tu dozvie číslo procesu svojho potomka (PID), takže s ním môže
nadviazať komunikáciu, alebo ho kontrolovať, pretože pri volaní príslušných
požiadaviek na systémovú obsluhu oznámi toto PID.
Vytváraním procesov potomkov a ich potomkov vzniká v operačnom systéme
rodinná hierarchia navzájom príbuzných procesov, ktoré sa poznajú a operačný
systém im prideľuje určité právomoci vzájomne spolu komunikovať alebo na
seba vplývať. V operačnom systéme UNIX majú procesy okrem PID prideľované
aj skupinové identifikačné číslo GID (Group ID), takže procesy s rovnakým GID
sú systémom rozpoznávané že patria k sebe. Ak v operačnom systéme naraz
bežia procesy patriace viacerým používateľom, je zrejmé že budú patriť do
oddelených skupín.
28
aktivity v rámci jedného procesu sa nazývajú vlákna (threads).
Pokiaľ konkrétny operačný systém umožňuje používanie vlákien, tak jeho služba
fork() má dve podoby: buď požiadame jadro systému, aby vytvorilo nový
proces, alebo aby sa vytvorilo nové vlákno. Ak je jadro systému požiadané, aby
vytvorilo nové vlákno, tak situácia na obr. 1.5 nie je sprevádzaná vytvorením
kópie procesu v pamäti. Zaznamenajú sa len informácie o vytvorení ďalšieho
riadiaceho bodu v rámci existujúceho rodičovského procesu.
Výhodou rozdelenia jednej úlohy na paralelne bežiace vlákna namiesto paralelne
bežiacich procesov je jednoduchá komunikácia a zdieľanie dát medzi vláknami,
pretože vlákna predstavujú jeden program, ktorý je v sebe vykonávaný na
viacerých miestach súčasne. Tiež aj vytvorenie nového procesu je pre jadro
operačného systému zložitejšia činnosť ako len vytvorenie nového vlákna.
Predovšetkým sa pri novom vlákne nemusí obsadiť pamäť počítača pre ďalší
samostatne existujúci proces.
1 Paralelné procesy 31
PRÍKLAD S TROMA
VLÁKNAMI
V nasledujúcom príklade sa proces postupne rozdelí na vlákna, reprezentované
funkciami main(), vlákno1(), vlákno2(). Proces vytvára na výstupe
postupnosť striedajúcich sa znakov A, B. Ak predpokladáme takú konvenciu, že
pri skončení hlavného vlákna main() sa automaticky nútene ukončia všetky
ostatné vlákna (teda celý proces), potom hlavné vlákno musí počkať na
dokončenie ostatných vlákien. To je realizované pomocou premenných stop1 a
stop2. Keďže všetky vlákna existujú v rámci jedného procesu, všetky majú
prístup k týmto premenným.
29
V ďalšom texte budeme mať na mysli preemptívny multitasking, ako obvyklý
spôsob organizácie vykonávania procesov v operačných systémoch.
30
A, B, C sa s číslami určujúcimi ich prioritu A (5), B (3), C (2) vykonajú
v nasledujúcom poradí:
28 Základy operačných systémov
A: 5 4 3 2 - - - - - 1 (5 krát)
B: - - - - 3 2 1 - - - (3 krát)
C: - - - - - - - 2 1 - (2 krát)
Okrem pevne pridelenej statickej priority môže byť priorita dynamická, ktorá
sa nastavuje podľa momentálnej situácie. Napríklad ak vieme, že proces A zo
svojho vyhradeného času strávil určité percento nečinným čakaním na pomalú
komunikáciu (napríklad s pamäťovým diskom), jeho priorita sa v nasledujúcom
kole zníži. Takže ak sa dá v systéme napríklad stanoviť percento času, ktoré
proces v jemu vyhradenej dobe strávil užitočnou činnosťou, jeho číslo priority
pre nasledujúce kolo sa nastavuje s prihliadnutím na tento údaj, prípadne aj na
iné údaje o správaní sa procesu, ak ich je možné v systéme zisťovať.
Procesory používané v počítačoch sú bežne vybavené možnosťou prepnúť svoj
stav, režim činnosti. V princípe sa rozlišujú dva režimy činnosti – tzv.
privilegovaný režim, teda režim správcu systému (privileged mode, supervisor
mode) a neprivilegovaný režim určený pre procesy používateľa systému.
V neprivilegovanom režime nemožno na procesore vykonať niektoré typy
strojových inštrukcií, niektoré registre procesora sú inštrukciám neprístupné,
alebo fyzicky interpretované ako iné registre, niektoré adresy v pamäti nemožno
vygenerovať (vznikne signál chyby) a podobne. Procesory bývajú konštruované
na rozlíšenie aj viac ako dvoch rôznych režimov, avšak v operačných systémoch
sa bežne používajú len spomenuté dva režimy.
Zavedenie dvoch režimov procesora umožňuje rozdeliť bežiace programy a
paralelné procesy na dve množiny. Jedna je privilegovaná, ktorá má možnosť
ovplyvňovať celý systém a sú to procesy patriace operačnému systému. Druhá je
neprivilegovaná, čo sú procesy spúšťané používateľom operačného systému,
ktoré sú takto pod kontrolou a nemôžu zasahovať do činnosti privilegovaných
procesov, kým naopak je to možné. Privilegovaný režim procesora sa teda
označuje aj ako režim jadra, alebo režim správcu operačného systému (kernel
mode, superuser mode), neprivilegovaný sa označuje ako režim používateľa
(user mode). Proces alebo program bežiaci v režime jadra môže pristupovať do
registrov a do pamätí patriacich iným procesom, napríklad môže vykonať
prepnutie kontextu medzi procesmi a potom prepnúť režim procesora na
neprivilegovaný. Proces bežiaci v neprivilegovanom režime používateľa nemá
takéto právomoci, môže vykonávať len svoju izolovanú činnosť a ak
chce komunikovať s okolím, tak musí požiadať jadro operačného systému
o sprostredkovanie tejto komunikácie, pomocou inštrukcie prerušenia seba
samého.
18 Základy operačných systémov
Príklad využitia prepínania režimov pri striedavom spúšťaní procesov: hodiny
vyvolajú prerušenie procesu, teda skok procesora na adresu obslužnej procedúry,
ktorá má možnosť prepnúť režim procesora na privilegovaný a začne vykonávať
inštrukcie, ktorými odloží kontext práve bežiaceho procesu A na určené miesto
v pamäti a z iného miesta pamäti prečíta a nastaví kontext ďalšieho procesu B.
Potom je osobitnou inštrukciou prepnutý režim procesora na používateľský
a vykoná sa skok na adresu, na ktorej je inštrukcia patriaca spúšťanému procesu
B. Vtedy procesor začne vykonávať inštrukcie procesu B, pričom tento proces už
beží na procesore nastavenom do používateľského režimu a nemôže svojvoľne
prepnúť režim (cesta naspäť je zatvorená), aby získal prístup do kontextu iných
procesov a do priestoru operačného systému. Prepnutie režimu môže nastať len
nepriamo vonkajšou akciou, nie priamou činnosťou procesu vovnútri.
PLÁNOVAČ
PROCESOV
Privilegovaný a neprivilegovaný režim procesora umožňujú programátorovi
operačného systému organizovať a riadiť množinu paralelne bežiacich procesov
tak, že v privilegovanom režime sa pravidelne vykonáva riadiaci program,
ktorého úlohou je prepínanie kontextu používateľských procesov, ktoré bežia na
31
neprivilegovanej úrovni. Tento riadiaci program sa nazýva správca úloh (task
manager) a informácie o procesoch spravuje v tabuľke procesov (process
table). Každá položka tabuľky procesov obsahuje informácie o stave jedného
existujúceho používateľského procesu, predovšetkým údaje o kontexte procesu,
aby bolo možné každý prerušený proces znova spustiť.
Správca úloh je pravidelne automaticky spúšťaný pri prerušení spôsobenom
hodinami, pretože na adrese toho prerušenia sú umiestnené privilegované
inštrukcie na vykonanie akcie správcu úloh. Akciou je výber ďalšieho procesu na
spustenie a prepnutie kontextu na tento proces. Správca by mal byť v princípe na
procesoch nezávislý a nemal by skúmať, či prerušenie procesu bolo pre ten
proces v danom okamihu optimálne. Vykonáva sa teda preemptívny multitasking,
vynútené striedanie paralelne bežiacich procesov po časových kvantách,
ohraničených prerušením hodinami. Takéto kvantá majú na počítačoch veľkosť
rádovo 10 - 100 ms.
32
ktorý tiež musí vykonať podobnú činnosť, aby získal smerník na zdieľaný
priestor (viac k alokácii je uvedené v kapitole o správe pamäte).
RÚRA Rúra (pipe) je súbor, ktorý sa pri zápise a čítaní správa ako prenosový kanál na
údaje, tzv. dátovod. To znamená, že čítaním sa údaje z neho vyberajú, inak
povedané, vymazávajú. Pri zápise a čítaní je vkladanie a vyberanie znakov
organizované metódou FIFO (First in First out):
zápis znakov … štvrtý tretí druhý prvý... čítanie znakov
(viac k rúram je uvedené v kapitole o systéme súborov)
SIGNÁLY
V OPERAČNOM
SYSTÉME:
PODANIE,
DORUČENIE,
OBSLÚŽENIE,
KILL
Signál je prostriedok na prenos jednobitovej informácie medzi procesmi o tom,
že v operačnom systéme nastala určitá udalosť. Neslúži na prenos dát, ale na
organizáciu činnosti bežiacich procesov. Každý proces má na príjem signálov
vyhradenú vo svojej pamäti jednu premennú, ktorá sa používa ako bitové pole, v
ktorom stav každého bitu je informáciou o výskyte určitého konkrétne
dohovoreného signálu. Signálov je v operačných systémoch typicky 16, alebo 32,
alebo iný násobok čísla 2, pretože sa obvykle spravujú ako jedno pamäťové
slovo, v ktorom každý bit zodpovedá jednému signálu.
Zdrojmi signálov sú buď softvérové udalosti (napríklad problémy pri behu jadra
operačného systému, delenie nulou, preplnenie pamäte a podobne), alebo
hardvérové udalosti (odpoveď vstupno/výstupných zariadení, napríklad disku).
Zdrojom signálov môžu byť aj procesy, keď použijú volanie systémovej služby
s uvedením typu signálu (ktorý signál) a adresáta (ktorý proces, prípadne ktorá
skupina procesov).
ynchronizácia je zabezpečenie požiadavky časovo usporiadať udalosti.
Nasledujúce dva nezávisle bežiace procesy sú usporiadané v čase pomocou
telefonickej správy:
Jano Juro
1 raňajkujem A raňajkujem
2 pracujem B čakám na telefón
3 zavolám Jura C obedujem
4 obedujem
Správa telefónom usporiada udalosť 3 a udalosť B tak, že sa vykonajú sekvenčne
po sebe v určenom poradí. Telefón je tu prostriedkom na zabezpečenie
synchronizácie. Keďže iná synchronizácia tu nie je zabezpečená, nemožno
rozhodnúť kto raňajkuje skoršie, alebo či Jano pracuje až po Jurových raňajkách,
alebo pred nimi, alebo zároveň. Podobne nie je určené, ako to bude s obedom. To
znamená, že najprv raňajky (s prácou) a potom obedy obidvoch prebiehajú
súbežne, paralelne. Synchronizácia telefónom však umožňuje zabezpečiť, že
udalosť C je sekvenčne vykonaná po udalostiach 1,2.
Pokiaľ udalosti v uvedenom príklade chápeme ako inštrukcie vykonávané na
jednom procesore, ktorý je striedavo prideľovaný jednému alebo druhému
procesu, tak paralelné vykonávanie znamená, že nie je vopred stanovená
postupnosť, v akej sa procesor medzi procesmi prepína. Správca úloh a plánovač
vykonávajú svoju činnosť nezávisle na procesoch a neskúmajú, čo kedy procesy
robia a kedy by mali. Ak je potrebné procesy zosynchronizovať tak, aby udalosť
C nastala určite po udalosti 2, potom musia byť v systéme zavedené osobitné
prostriedky pre programátora, ktorými urobí požadovanú synchronizáciu.
ZDIEĽANIE
PROSTRIEDKOV,
SERIALIZÁCIA,
VZÁJOMNÉ
VYLÚČENIE,
KRITICKÁ OBLASŤ
Zmyslom synchronizácie paralelne bežiacich procesov v počítači je zdieľanie
spoločných prostriedkov (sharing the resources) pre vstup a výstup informácií.
V opačnom prípade by nebol dôvod procesy vzájomne synchronizovať a mohli
by bežať nezávisle na sebe. Zdieľanie sa deje zápisom a/alebo čítaním údajov na
spoločne prístupnom mieste (súbor s údajmi, adresa v pamäti, poštová schránka,
33
komunikačná linka a podobne). Vtedy sa musí zabezpečiť, aby boli operácie
zápisu a čítania usporiadané v čase v určenej sekvencii po sebe, teda
serializované podľa požiadaviek. Iným prípadom je, keď síce nezáleží na poradí
vykonania operácií, avšak záleží na vykonaní celej operácie bez prerušenia iným
procesom. Takáto požiadavka sa nazýva vzájomné vylúčenie (mutual exclusion).
V nasledujúcom príklade jeden paralelne bežiaci proces Producent vkladá
znaky do zásobníka a proces Konzument tieto znaky vyberá. Premenná x
odovzdáva informáciu, po ktoré miesto je zásobník naplnený znakmi. Udalosti
vyprázdnenia alebo preplnenia zásobníka tu neriešime. Napriek tomu môže
nastať problém pri paralelnom vykonávaní týchto procesov, keď Producent už
inkrementoval premennú , avšak ešte nestihol zapísať znak a medzitým
40 Základy operačných systémov
_
_
inkrementoval premennú x, avšak ešte nestihol zapísať znak a medzitým
Konzument už číta x-tý prvok poľa.
Producent Konzument
for(;;){ for(;;){
x++; znak = zásobník[x];
zásobník[x] = znak; x--;
} }
Je potrebné zabezpečiť požiadavku vzájomného vylúčenia, aby sa vykonanie tej
dvojice inštrukcií udialo v každom procese určite naraz, bez striedania druhým
procesom. Uvedená dvojica inštrukcií sa nazýva kritická oblasť (critical
section) a z pohľadu programátora je optimálne mať k dispozícii špeciálne
operácie, pomocou ktorých ohraničí kritické oblasti vo svojich programoch a
oznámi tak operačnému systému, na ktorom mieste proces vstupuje do kritickej
oblasti a kde ju opúšťa, vystupuje z nej:
Producent Konzument
for(;;){ for(;;){
vstup(oblasť_A); vstup(oblasť_A);
x++; znak = zásobník[x];
zásobník[x] = znak; x--;
výstup(oblasť_A); výstup(oblasť_A);
} }
Pomocou takýchto operácií vstup/výstup možno zabezpečiť aj vyššie uvedenú
požiadavku serializácie, keď programátor do kritickej oblasti vloží inštrukcie,
pomocou ktorých procesy vzájomne počítajú svoje aktuálne poradie a v prípade
potreby čakajú na seba v cykle.
PROSTRIEDKY NA
VZÁJOMNÉ
VYLÚČENIE
Operácie pre vstup do kritickej oblasti a výstup z nej možno technicky realizovať
rôznymi spôsobmi, buď softvérovo (vytvoria sa osobitné programy), alebo
hardvérovo (osobitné typy inštrukcií pre procesor). V ďalšom texte sú opísané
tieto základné riešenia:
• zákaz prerušenia (inštrukcia procesora),
• uzamknutie pomocou premenných (inštrukcia procesora),
• algoritmické prostriedky (softvérové riešenie).
ZÁKAZ
PRERUŠENIA
Jednoduchým riešením, ako zabrániť konkurenčným procesom vstúpiť do
kritickej oblasti, je využitie strojovej inštrukcie zákazu prerušenia procesora
(interrupt disable). Pokiaľ proces vykoná na túto inštrukciu, procesor prestane
reagovať na prerušenie a nemôže dôjsť k prepnutiu kontextu na iný proces.
Avšak akákoľvek chyba alebo negatívny zámer v bežiacom procese môže takto
neželane pozastaviť činnosť všetkých ostatných procesov natrvalo, alebo ich
vykonávanie veľmi obmedziť. Preto použitie tejto inštrukcie nemožno povoliť
pre procesy používateľa (procesor v režime používateľa ju nemôže vykonať).
Programy operačného systému ju môžu používať, pretože sú privilegované.
34
2 Komunikácia a synchronizácia 41
UZAMKNUTIE,
ZÁMKA
_
Uzamknutie pomocou premennej (locking) je použitie takej premennej zdieľanej
paralelne bežiacimi procesmi, ktorej stavom sa oznamuje povolenie alebo zákaz
vstupu do kritickej oblasti. Takáto premenná sa nazýva zámka (lock) a v princípe
môže nadobúdať dva rôzne logické stavy 0,1 (zamknuté, odomknuté). Ak proces
nájde zámku odomknutú (v stave 1), zamkne ju (nastaví 0) a môže vstúpiť do
kritickej oblasti. Ostatné procesy nájdu zámku v zamknutom stave a vedia, že
musia počkať. Pri opustení kritickej oblasti musí proces zámku odomknúť:
while(lock==0); // zámka je zamknutá, čakaj v cykle
lock=1; // vôjdi a zamkni za sebou
# // začiatok kritickej oblasti
#
# // koniec kritickej oblasti
lock=0; // odomkni zámku
Bohužiaľ synchronizačný problém nie je týmto vyriešený, iba je presunutý ďalej.
Procesy vykonávajú svoje inštrukcie paralelne, teda v nedefinovanom poradí.
Vtedy sa môže vyskytnúť taká postupnosť, pri ktorej zámka nebude fungovať.
Napríklad pri paralelnom behu procesov na jednom procesore môže dôjsť k
takémuto striedaniu:
35
okolností z troch strojových inštrukcií: kopírovanie obsahu premennej do registra
procesora, odpočítanie jednotky a kopírovanie nazad. V podobe jednej atomickej
inštrukcie sú tieto tri kroky vykonané procesorom naraz ako jeden a nemožno ich
prerušiť inými krokmi iného procesu.
Procesor je teda možné prerušovať pri vykonávaní postupnosti jeho strojových
inštrukcií, nie však v rámci vykonávania obsahu jednej inštrukcie. Keď je k
dispozícii inštrukcia TSL, tak vstup do kritickej oblasti možno naprogramovať
bez problémov.
2 Komunikácia a synchronizácia 43
_
STOCHASTICKÁ
A REKURZÍVNA
ZÁMKA
ALGORITMUS NA
VSTUPENKY
Zostáva tu však jedna nevýhoda – procesy, ktoré čakajú v cykle na uvoľnenie
zámky sa vlastne neustále vykonávajú, správca úloh ich opakovane spúšťa, aj
keď vlastne nič nerobia, len vykonávajú naprázdno príkaz cyklu v ktorom zostali
čakať. Takéto čakanie v cykle sa nazýva rotujúca zámka (spin lock). Rotujúce
zámky je efektívne používať len v prípadoch, kde sa predpokladá skoré
uvoľnenie kritickej oblasti. Riešením je použitie volania služby sleep(), čím
proces požiada správcu úloh o svoje uspanie. Program optimálne pracujúcej
zámky má potom nasledujúci tvar:
while(1){ // po zobudení znova testujem zámku
TSL(reg,lock);
if(reg==1) { sleep(lock); continue; }
else break;
}
# // začiatok kritickej oblasti
#
# // koniec kritickej oblasti
lock=0; // odomkni zámku
wakeup(lock); // nech sa ďalší zobudí
V hornom obdĺžniku je procedúra pre vstup do kritickej oblasti, v dolnom
procedúra pre výstup z nej a programátor má už tieto procedúry v určitej forme
syntaxe a sémantiky hotové k dispozícii v knižnici funkcií. Volaním systémovej
služby sleep() oznamuje proces jadru operačného systému, že chce byť
pozastavený v súvislosti so zámkou lock. Volaním služby wakeup() oznamuje
proces jadru, aby zobudilo niektorý z tých procesov, ktoré boli v súvislosti s
touto zámkou uspané (ak také v danej chvíli existujú) a zobudený proces potom
pokračuje príkazom continue a vykoná ďalší testovací cyklus while().
Procedúra vstupu do kritickej oblasti môže byť modifikovaná tak, že proces
nebude uspaný natrvalo, ale na vopred náhodne zvolený čas, po ktorom
pokračuje a znova otestuje zámku. Takáto zámka je vlastne ako rotujúca, avšak
prerušovaná uspávaním. Takáto zámka sa nazýva stochastická.
Ak proces vstúpil do kritickej oblasti a zavolá procedúru, ktorá explicitne
požaduje vstup tiež do tej istej kritickej oblasti, je potrebné rozpoznať, že ide o
ten istý proces a umožniť vstup. Zámka, ktorá to rozpoznáva, sa nazýva
rekurzívna.
Jednoduchý algoritmus synchronizácie vstupu do kritickej oblasti založený na
princípe rozdávania vstupeniek (Ticket algorithm) umožňuje dodržať poradie, v
akom procesy požiadali o vstup. Princíp je používaný v bežnej realite: pri vstupe
do úradu si klient prevezme lístok s prideleným poradím a čaká, až sa zjaví
na tabuli rovnaké číslo, aké má na lístku (proces je vpustený do kritickej
oblasti). Po obslúžení (výstup z kritickej oblasti) sa číslo na tabuli inkrementuje
o jednotku a je pripustený ďalší klient.
Uviaznutie (deadlock) stolovania môže nastať v prípade, keď všetci naraz držia
v ruke každý jednu vidličku a naveky čakajú na druhú. Výskyt takejto situácie je
pravdepodobný, pretože prepínanie a plánovanie procesov beží v operačnom
systéme nezávisle od obsahu činnosti procesov. Triviálnym riešením tohoto
problému je prístup, označovaný ako takzvaný pštrosí algoritmus (ostrich
36
algorithm). Je to kalkulácia, že ak by bolo bezchybné riešenie príliš zložité alebo
nákladné, ak zároveň problém nastáva s malou pravdepodobnosťou a ak sú
následky relatívne zanedbateľné, tak je uvedené jednoduché riešenie vyhovujúce.
Riešenie možno modifikovať tak, že ak je po odobratí prvej vidličky druhá
vidlička ešte stále obsadená, potom prvú vidličku vrátime, počkáme náhodne
dlhú chvíľu a pokus začneme odznova. Zostane tu potom menej pravdepodobná
možnosť vyhladovania (starvation), keď budú všetci opakovane naraz dvíhať
a odkladať vidličky a pritom sa niektorý z účastníkov tak dlho nedostane k jedlu,
že to pre neho bude znamenať problém. Ďalšou úpravou na zníženie
pravdepodobnosti takýchto problémov je náhodné striedanie poradia pri
prepínaní procesora medzi týmito procesmi.
_
Jedno z možných riešení tohto problému pomocou semaforov je uvedené v
literatúre [2] a [3], pričom sa pripomína, že tiež nezaručuje korektnosť za
všetkých okolností. Riešenie používa pole semaforov a pole premenných, pričom
každá položka z týchto polí patrí jednému filozofovi. Okrem toho je použitý
jeden semafor mutex na výlučný prístup len jedného zároveň k manipulácii
s riadiacim poľom stav.
semafor sem[N]; // pole semaforov inicializovaných na 0
int stav[N]; // pole premenných inicializovaných na NEJEM
semafor mutex; // binárny semafor inicializovaný na 1
void zober_vidličky(int i) // i-ta osoba vezme obidve
{
down(mutex);
// nasledujúcu sekvenciu dvoch príkazov
// nemôžu vykonať súčasne dve alebo viac osôb
stav[i] = ŽIADAM; // chcem vidličky
testuj(i); // budem jesť?
up(mutex);
down(sem[i]);
// ak medzitým nebolo vykonané up() v procedúre
// testuj(), tak zaspím
}
void polož_vidličky(int i) // vráti obe vidličky
{
down(mutex);
// nasledujúcu sekvenciu troch príkazov
// nemôžu vykonať súčasne dve alebo viac osôb
stav[i] = NEJEM;
testuj(ľavý(i)); // ponúkni suseda vľavo
testuj(pravý(i)); // ponukni suseda vpravo
up(mutex);
}
2 Komunikácia a synchronizácia 51
ZI.4.3. Rozdelenie pamäťového priestoru pre proces: text, statické dáta, dynamické dáta,
zásobník (stack), systémová oblasť. Pamäť fyzická, virtuálna a odkladací priestor
(swap space). Stránkovanie, tabuľka stránok, výpadok stránky. MMU (Memory
Management Unit) a jeho funkcia.
37
Prideľovanie pamäte (memory allocation) je určovanie vhodného voľného
miesta v pamäti pre procesy a ich údaje. Pri vzniku procesu (operácia fork) je
potrebné prideliť preňho miesto. Pokiaľ proces potomka pokračuje vo
vykonávaní rovnakej postupnosti inštrukcií ako rodičovský proces, môžu
spoločne zdieľať tú oblasť pamäte, v ktorej sú inštrukcie uložené. Tiež môžu
3 Správa pamäte 65
spoločne zdieľať tú oblasť pamäte, v ktorej sú inštrukcie uložené. Tiež môžu
spoločne zdieľať tie údaje, ktoré len čítajú. Akonáhle dôjde ku zápisu, zdieľanie
je zrušené a pridelí sa ďalšie miesto v pamäti.
Ak nie je v primárnej pamäti dostatok priestoru pre všetky paralelne bežiace
procesy, tak operačný systém obsahuje automatickú službu, ktorá dočasne
odkladá práve nebežiace procesy (buď celé, alebo len časti ich priestoru) do
externej pamäte, zvyčajne do špeciálneho súboru na disku. Nazýva sa to
odkladací priestor (swap space) v externej pamäti.
STATICKÉ
PRIDEĽOVANIE
_
Pri statickom prideľovaní (statickej alokácii) je trvale pridelený pamäťový
priestor nemennej veľkosti. To je vyhovujúce pre uloženie množiny inštrukcií,
ktorá sa počas behu procesu nemení. Tiež sa nemení objem tých údajov, ktorých
veľkosť bola staticky nastavená programátorom:
int a,b,c;
int alfa[10000];
char text[80];
tu je bežiacemu procesu vopred staticky pridelená pamäť pre tri celé čísla, pre
pole o veľkosti 10000 celých čísiel a pre pole 80 znakov. Špecifikátory typov
int,char oznamujú, koľko adresových miest v pamäti zaberú jednotlivé typy
premenných. Pri kompilácii programu do strojových inštrukcií je manipulácia s
premennými transformovaná do manipulácie s pevne pridelenými adresami.
DYNAMICKÉ
PRIDEĽOVANIE,
SMERNÍK
_
Pri dynamickom prideľovaní (dynamickej alokácii) je pamäťový priestor
prideľovaný priebežne, podľa okamžitých potrieb bežiacich procesov. Napríklad
žiadosť o alokáciu pamäte pre pole o veľkosti 1000 čísiel v programovacom
jazyku C vyzerá nasledovne:
int *pole;
pole = (int *)malloc(1000 * sizeof(int));
if(pole == NULL) exit(); // nepodarilo sa
pole[999] = 2005; // používame premennú
free(pole); // uvoľníme túto pamäť
pole[999] = 2004; // chyba, teraz už nemôžeme
Premenná pole je typu smerník (ukazovateľ, pointer), pri vykonaní operácie
malloc() (memory allocation) je do nej zapísaná adresa začiatku prideleného
priestoru v pamäti. Pridelenie tu znamená, že na pozadí, do ktorého programátor
– používateľ priamo nevidí, sa urobil záznam o pridelení miesta veľkého tisíc
krát počet miest, potrebných pre uloženie čísla typu int. Pri každej ďalšej
požiadavke na alokáciu je toto miesto už považované za obsadené a hľadá sa iné
miesto. Pokiaľ už niet miesta s požadovanou veľkosťou, oznámi sa to vhodným
spôsobom, napríklad nastavením adresy na konštantu NULL, pretože žiadna
alokácia pre premenné programu nikdy takúto adresu nepoužíva. Pri dynamickej
alokácii je možné požiadať o zmenu veľkosti prideleného priestoru v pamäti
operáciou realloc(), alebo ho uvoľniť, prestať používať, čo sa oznamuje
operáciou free().
66 Základy operačných systémov
Treba si všimnúť, že pri používaní premenných typu smerník v programoch sa
nikdy nezisťuje, aký je ich konkrétny obsah počas vykonávania programu,
pretože ten závisí od aktuálnej situácie v okamihu pridelenia pamäte. S obsahom
smerníkov sa v programe pracuje len relatívnym spôsobom – možno k nim
38
pripočítavať veľkosť indexu pri pohybe v poli.
Operácia malloc() je pre programátora k dispozícii v knižnici funkcií a jej
obsahom je algoritmus, ktorý vyberá miesto v pamäťovom priestore, ktorý patrí
procesu a vedie záznam o pridelených úsekoch.
Pri vytvorení bežiaceho procesu je mu operačným systémom pridelený priestor v
pracovnej pamäti počítača s určenou počiatočnou veľkosťou, ktorá sa podľa
potreby môže na požiadanie dynamicky meniť. Na úrovni operačného systému je
alokácia pamäte jeho službou pre jadro a pre procesy, v Unixe sa nazýva brk().
Pri alokácii pamäte pre nový proces je potrebné túto časť pamäte vymazať,
pretože sú v nej údaje, zostávajúce po predošlých procesoch. Bola by to
bezpečnostná chyba, ak by používateľský proces vo svojom priestore pamäte
mohol čítať predchádzajúce informácie.
VIRTUÁLNA PAMÄŤ
VIRTUÁLNA PAMÄŤ,
ODKLADACÍ
PRIESTOR
Šírka adresovej zbernice procesora určuje maximálnu použiteľnú adresu pre
bežiaci proces. Napríklad pri 64–bitovej adresovej zbernici je priestor adries od 0
do 264, pričom ale kapacita reálnej fyzickej pamäte v bežnom počítači je z
ekonomických a praktických dôvodov obmedzená. V praxi sa požíva také
riešenie, pri ktorom bežiaci proces môže adresovať väčší priestor v pamäti, než je
veľkosť fyzickej pracovnej pamäte počítača: tento väčší priestor sa pomocou
určitých technických prostriedkov simuluje, že akoby existoval. Je to metóda
takzvanej virtuálnej pamäte (virtual memory). Pri tejto metóde sa využíva
externá pamäť, kde sa do určeného odkladacieho priestoru (swap space)
automaticky premiestňujú tie úseky z pracovnej pamäte, ktoré sa momentálne
nepoužívajú a tak uvoľnujú miesto iným úsekom.
3 Správa pamäte 71
Kvôli zjednodušeniu organizácie sa virtuálna pamäť spravidla stránkuje. Vo
fyzickej pamäti sa nachádzajú momentálne používané stránky a v odkladacom
priestore (čo je obvykle súbor na disku) sa nachádzajú momentálne nepoužívané
stránky.
MMU, PREKLAD
39
ADRESY, TABUĽKA
STRÁNOK
Simulácia virtuálnej pamäte je realizovaná v procesoroch priamo na úrovni ich
hardvéru, predovšetkým kvôli rýchlosti vykonávania. Procesory majú osobitnú
hardvérovú časť, označovanú ako MMU (Memory Management Unit), ktorá
zabezpečuje takzvaný preklad virtuálnej adresy (virtual address) na fyzickú
adresu (physical address). Tam je uložená tzv. tabuľka stránok (page table),
obsahujúca informáciu o prítomnosti/neprítomnosti každej stránky vo fyzickej
pamäti alebo v odkladacom priestore. Princíp funkcie tabuľky stránok a schéma
činnosti MMU pri preklade virtuálnej adresy na fyzickú adresu je na obr. 3.4.
40
tabuľke stránok v MMU a prerušený proces je znovu spustený
zopakovaním jeho poslednej vykonávanej inštrukcie. Potom je všetko v
poriadku, potrebná stránka sa už nachádza vo fyzickej pamäti;
c) virtuálna adresa ukazuje do takej stránky, kam ešte neukazovala a v
tabuľke stránok nie je o tejto stránke záznam. Vtedy sa tiež vyvolá
prerušenie aby sa v tabuľke stránok vytvoril nový záznam a vo fyzickej
pamäti pridelilo miesto pre novú stránku;
d) virtuálna adresa ukazuje do takej stránky, kde nemá bežiaci proces
povolený prístup a vyvolá sa prerušenie. Ak je adresa mimo rozsahu
jemu povolenej veľkosti virtuálnej pamäti, potom pri obsluhe prerušenia
môže operačný systém rozšíriť povolený priestor procesu. Tiež sú
situácie, keď virtuálna adresa ukazuje do existujúcej stránky, avšak
proces chce vykonať nepovolenú operáciu, napríklad vykonať zápis na
takú adresu, kde má povolené len čítanie a vtedy je rozpoznaná chyba.
Ku každej stránke sa pridáva informácia o prístupových právach a
pravidlách použitia (read only a podobne).
Situácie opísané v bodoch b), c), d) nazývame výpadok stránky (page fault),
pričom aj keď b) a c) nie sú chybným stavom, ošetrovanie výpadkov stránok
určite spomaľuje činnosť procesov a preto je v operačných systémoch
realizované čo najúspornejším spôsobom.
Každý bežiaci proces má vlastnú nezávislú virtuálnu pamäť a vlastnú tabuľku
stránok. Pri prepnutí medzi procesmi je potrebné odložiť tabuľku stránok
predchádzajúceho procesu a vložiť do MMU tabuľku stránok ďalšieho procesu.
Vo fyzickej pamäti sa potom v rozličných stránkových rámoch nachádzajú
stránky patriace rozličným procesom, pričom aktuálny obsah MMU ukazuje len
na tie stránkové rámy, kde sú stránky práve bežiaceho procesu.
Veľmi veľká tabuľka stránok môže byť hierarchicky organizovaná ako
viacúrovňová tabuľka stránok (multilevel page table), keď tabuľka stránok
odkazuje na podtabuľku stránok a až hierarchicky posledná odkazovaná tabuľka
obsahuje samotnú informáciu o stránke.
ZI.4.4. Súbor ako dáta typu prúd (stream), atribúty súboru. Tabuľka otvorených súborov
a presmerovanie zápisu do súboru, rúra. Súborový systém založený na i-uzloch.
Súborový systém typu FAT a modernejšie súborové systémy. Žurnálový súborový
systém a kontrola ukončenia transakcií. RAID. Súborový systém ako sieťová služba.
Novší systém súborov NTFS (Windows NT FileSystem)
organizuje súbor ako množinu údajových reťazcov (streams) a existujú aj iné
metódy
Atribúty súboru sú
všetky sprievodné informácie týkajúce sa súboru, počnúc prístupovými právami
(napríklad je povolené len čítanie, len pre určených používateľov a podobne)
a končiac napríklad grafickou ikonou, ktorou je súbor označovaný na obrazovke
Rúra (pipe) je súbor, ktorého funkciou je prenášať údaje medzi procesmi
v podobe frontu FIFO (First In First Out). Jeden proces do takéhoto súboru
zapisuje a druhý z neho číta, pričom prečítané sa automaticky vymazáva. Rúra sa
vytvára volaním služby operačného systému, avšak na rozdiel od regulárneho
súboru nedostanú procesy jeden deskriptor súboru (číslo ukazujúce na súbor), ale
dva, kde jeden je pre vstup do rúry a druhý pre výstup. Tieto deskriptory si
potom komunikujúce procesy rozdelia medzi sebou, každý používa iný.
41
nazýva nepriamy (indirect) index. Blok obsahujúci indexy sa nazýva nepriamy
blok. Uvedená schéma stromu priamych a nepriamych (jednoducho alebo
viacnásobne nepriamych) indexov umožňuje kaskádovite adresovať aj veľmi
veľké množiny blokov pre uloženie veľkého súboru. Keďže často existujú aj
malé súbory, ktoré obsadzujú malý počet blokov, tak i-uzol obsahuje aj priame
indexy na bloky, aby nemuseli vzniknúť nadbytočné nepriame bloky.
Pri vytváraní súboru postupným zapisovaním zo strany používateľa vykonáva
systém súborov algoritmus, ktorý postupne zapisuje do voľných blokov na
logickom disku údaje a vytvára uvedenú schému na Obr. 4.4. Táto schéma má
vždy v rámci jedného systému súborov jeden konkrétne určený tvar (koľko akých
nepriamych indexov sa použije), podľa ktorého sa jednotne pristupuje ku
všetkým súborom. Tu uvedená schéma je len všeobecný príklad. I-uzol môže, ale
nemusí mať v praxi veľkosť jedného bloku a môže obsahovať aj atribúty súboru.
42
alebo hlavne aby sme dosiahli spoľahlivé zálohovanie a
obnovu dát pri havárii
jednotlivého zariadenia, alebo tiež aj aby sme vôbec
mohli detekovať chybné dáta
pre zvýšenie rýchlosti prístupu: posielanie častí súboru
strips postupne viacerým
diskom, nečakáme na jeden kým spracuje požiadavku,
tento spôsob je RAID 0
pre zvýšenie spoľahlivosti zrkadlíme (mirror) zapísaný
obsah na viacerých diskoch,
alebo obsah inak usporiadame pre detekciu a opravu
chyby
na realizáciu RAID je potrebné mať v počítači radič
diskov, ktorý toto umožňuje,
pričom veľké profesionálne diskové polia počítajú s
nonstop prevádzkou, kde
chybný disk je oznámený a za jazdy ho možno fyzicky
vymeniť a nový zaradený disk
sa automaticky začne napĺňať obsahom a stáva sa ďalšou
novou zálohou
43
Žurnálový systém súborov (Journal file
system)
obsahuje komponent “log file” ktorý funguje ako
žurnálový súbor, kam sa zapisujú akcie
so súbormi a až potom sú akcie vykonávané na reálnom
pamäťovom médiu
committed changes - vykonané zmeny
not yet committed changes - zmeny zaznamenané do
logu, ešte nevykonané,
po páde systému sa najprv urobí upratovanie čítaním
logu, to zrýchľuje reštart
nevýhody:
- nutnosť "zrekonštruovať" prostredníctvom logu každý
súbor ktorý chceme čítať
(data retrieval) je nutná dostatočne veľká CACHE, kde sa
poznamenáva štruktúra i-uzlov
44
a podobné veci, aby nebolo nutné stále prečítavať log
- nie je možné dostatočne dobre odmerať zostávajúce
voľné miesto na disku, ťažko sa
definuje
- log súbor je potrebné čistiť od starých neaktuálnych
záznamov,
je to tzv. garbage collection process, resp. cleaner process
záznam akcií do logu:
a) metadáta súborov a aj ich dáta(obsahy) (physical
journal)
b) len metadáta - výkon sa zvýši, ale aj riziko zmätkov
(logical journal)
príklad postupnosti akcií pri vymazaní súboru -
opakujeme predošlé obrázky:
1. remove dir entry
2. release i-node to the pool of free inodes
3. return used blocks of file to the free pool of blocks
čo sa stane, ak systém havaruje pri niektorom kroku?
následne fsck (file system check) - čítaním
žurnálového súboru ušetríme čas
žurnálový súbor máva záznamy s kontrolnými súčtami
(ext4)
externý žurnálový súbor - na inom zariadení
základná otázka: vykonáva sa zápis jednotlivých blokov
súboru atomicky?
ZI.4.5. Komunikácia používateľa s operačným systémom prostredníctvom terminálu.
Terminál a skriptové programovanie. Textové filtre awk a grep. Operačné systémy
reálneho času (Real Time Operating Systems).
45
Komunikácia používateľa s operačným systémom prostredníctvom terminálu je základným
spôsobom interakcie s počítačom. Terminál, tiež nazývaný príkazový riadok alebo konzola,
poskytuje užívateľovi prostredie na zadávanie príkazov a manipuláciu súborov a adresárov
pomocou textového rozhrania.
V tomto prostredí užívateľ pracuje s textovými príkazmi, ktoré systému poskytujú inštrukcie na
vykonanie určitých úloh. Príkazy môžu zahŕňať manipuláciu súborov (ako napríklad kopírovanie,
presúvanie alebo vymazávanie), správu procesov (ako spúšťanie, zastavovanie alebo sledovanie
behu programov) alebo nastavenie rôznych systémových parametrov.
Komunikácia s operačným systémom cez terminál zvyčajne vyžaduje znalosť príkazového jazyka
(napríklad Bash pre systémy založené na Unixe, alebo Command Prompt pre systémy Windows).
Užívateľ zadáva príkazy do terminálu, kde sú spracované a vykonané systémom. Výstup z
príkazov sa zobrazuje priamo v termináli, čo umožňuje užívateľovi okamžite vidieť výsledky
svojich akcií.
Grep:
Grep je príkazový riadok používaný na vyhľadávanie reťazcov v textových súboroch
alebo výstupe iných príkazov.
Jeho syntax je jednoduchá: grep pattern file, kde "pattern" je reťazec, ktorý sa má
vyhľadať, a "file" je súbor, v ktorom sa má vyhľadávať.
46
Grep umožňuje použitie rôznych možností na upresnenie vyhľadávania, ako napríklad
hľadanie iba celých slov, ignorovanie veľkosti písmen alebo výpis počtu výskytov.
Awk:
Awk je výkonný programovací jazyk a nástroj na manipuláciu s textom a dátami v
textových súboroch.
Jeho syntax sa skladá z pravidla a akcií: awk 'pattern { action }' file, kde "pattern"
určuje, kedy sa má vykonať akcia, a "action" určuje, čo sa má vykonať.
Awk má bohatú sadu funkcií na manipuláciu s textom, ako sú rozdelenie riadkov na
polia, aritmetické operácie a formátovanie výstupu.
Determinizmus:
RTOS sa musí správať deterministicky, čo znamená, že časy odozvy musia byť
konzistentné a známe.
Riadne plánovanie:
RTOS používajú špeciálne plánovacie algoritmy, ktoré zabezpečujú, že kritické úlohy
budú vykonávané včas a bez prerušenia.
Nízka latencia:
Jednou z kľúčových vlastností RTOS je nízka latencia, čo znamená, že systém musí
reagovať na udalosti v minimálnom čase.
Príklady:
47
Niektoré príklady RTOS zahŕňajú VxWorks, FreeRTOS, QNX a RTLinux.
Tieto systémy sú nevyhnutné pre aplikácie, kde časové obmedzenia sú kľúčové, ako sú
letecké riadenie, lekárske zariadenia, riadenie priemyselných procesov a ďalšie kritické
systémy. Ich spoľahlivosť a garancie časovej správnosti sú základnými vlastnosťami, ktoré
ich odlišujú od bežných operačných systémov.
AI.1.1. Dizajn web stránok (funkčný dizajn, logická štruktúra, navigácia, grafický dizajn).
Grafické formáty súborov pre web (rastrové a vektorové).
Vo svete webu existuje obrovský rozdiel medzi estetickým príjemnou stránkou a vytvorením
stránky, ktorá bude funkčná a bude mať najlepšia šancu na úspech.
Ľudia často navrhujú svoje stránky tak, akoby boli umeleckým dielom, má veľa krásnej grafiky,
animácií, vizuálu efekty atď. Aj keď všetky tieto veci môžu určite vytvoriť krásnu stránku,
sú to tak tiež jedna z najväčších prekážok úspechu firmy. Na internete sú dve kľúčové veci,
ktoré musí mať webmaster vždy na pamäti: pri navrhovaní stránky; návštevníka a
vyhľadávacích nástrojov. Ak musí návštevník čakať je príliš dlhá na to, aby sa stránka
mohla stiahnuť, alebo vyhľadávací modul nedokáže web správne indexovať, nezáleží na
tom, aký pekný a informatívny je web, nebude generovať biznis potrebný na prežitie, tým
menej excelovať. Pozrime sa na niekoľko najbežnejších vecí, ktoré by ste si mali uvedomiť.
Veľkosť stránky
Odhaduje sa, že ak sa stránka nenačíta do 8 - 10 sekúnd, stratíte 1/3 z vašich návštevníkov. To
znamená, že stránka by nemala mať viac ako 30 kilobajtov celkom vrátane textu, grafiky,
html, JavaScriptu atď.
Logo, pozadie a ďalšie obrázky sú vynikajúce, ale vaše stránky sa načítavajú príliš pomaly,
spôsobujú viac škody ako úžitku. Celkom úprimne, vaši návštevníci sa nestarajú o vaše
logo, grafiku, pozadie atď. sú tu z jedného dôvodu a iba z jedného dôvodu ... aby zistili, čo
im môžete ponúknuť.
Ak musíte použiť grafiku, udržujte ich veľkosť súboru čo najmenšiu optimalizáciou súboru grafiku
v maximálnej možnej miere a udržiavať malú veľkosť obrázka. Splash Pages / Flash Intros
Sú priepasťou internetu. Ak máte úvodnú stránku, zostavenú z veľkej grafiky alebo pekného
úvodného videa, znižujete svoje šance. Dizajnéri firmy často radi prehovoria svojich
klientov na tieto stránky, pretože sú kreatívni (ach ... a účtovať viac).
Pravdou je, že vytvorenie jednej z týchto stránok ako vstupnej cesty na vaše stránky je jedna z
najhorších vecí, ktoré môžete urobiť. Návštevníci nenávidia úvodné stránky, pretože ich
stiahnutie často trvá príliš dlho a neposkytnú návštevníkovi nič. Pamätajte, že návštevníci
sú tu z jedného dôvodu, aby zistili, čo ponúkate a získali informácie, ktoré hľadajú.
Obrovská grafika nezodpovedá ktorúkoľvek z ich otázok, iba zdržuje ich hľadanie. Flash
úvod je takmer rovnaký, aj keď sa spravidla stiahne veľmi rýchlo, stále zdržuje návštevníka
pri hľadaní toho, čo hľadá. Jedným z najväčších pravidiel, ktoré by ste si mali pamätať, je
udržiavať počet kliknutí, ktoré musí návštevník urobiť, aby sa dostal ku kvalitným
informáciám na nevyhnutné minimum. S každým následným kliknutím, ktoré musí
návštevník urobí, existuje väčšia šanca, že sa vzdá a pôjde niekam inam.
48
Vidíme správy z rôznych webov, ktoré používali (všimnite si minulý čas) flash úvodné stránky.
Ťažko prekvapujúca je skutočnosť, že v priemere je to ohromných 20 - 30% návštevníkov
opustilo stránku po vstupe IBA na domovskú stránku (kde úvodná stránka alebo flash).
Druhým dôvodom, prečo sa od nich držať, je to, že majú obrovský vplyv na vyhľadávače.
Vyhľadávacie nástroje môžu indexovať iba text, veľká grafika alebo flash úvod nevie
poskytnúť vyhľadávačom čokoľvek na indexovanie. Výsledkom je domovská stránka,
ktorá je často stránka s najvyšším stránkou, nemá takmer žiadnu šancu na dobrý celkový
ranking. V navyše v závislosti na tom, ako odkazy z grafiky alebo odkazované na interné
stránky, vyuhlkadávače pravdepodobne nebudú schopné sledovať odkazy na zvyšné
stránky na webe, čo znamená, že váš web nebude správne namapovaný. Ak to zhrnieme,
drž sa ďalej od úvodných obrazoviek a flash úvodov. Dajte návštevníkovi nejaký skutočný
text na čítanie a vyhladávačom niečo na indexovanie. Udržanie vašich návštevníkov sa
zvýši, rovnako ako aj prevádzka vášho vyhľadávacieho nástroja. Hypertextové odkazy
Hypertextové odkazy sú základom pri jednaní s vyhľadávacími nástrojmi. Sú spôsobom, ktorým
vyhľadávacie nástroje vyhľadajú všetky stránky na webe a indexujú ich. Ak internetové
prehľadávače nemôže nasledovať hypertextový odkaz, nebude môcť indexovať cieľovú
stránku, čo znamená, že časti vášho webu môžu byť pre internetové prehľadávače
neviditeľné.
Na svojom webe používajte iba skutočné hypertextové odkazy. Existuje veľa stránok, ktoré
používajú namiesto skutočných hypertextových odkazov niektoré odkazy v jazyku
JavaScript. Zatiaľ čo tieto budú fungovať pre väčšinu prehľadávačov (asi 90%), nedávajú
pre internetové prehľadávače čo sledovať.
Skutočný hypertextový odkaz by mal povedať: href = ”URL_of_page_here.html”
Akýkoľvek iný typ odkazu nebude pravdepodobne sledovaný správne. Body Text
Ako sme už spomenuli, internetové prehľadávače môžu indexovať iba text. Príliš často sa
stretávame s webmi, ktoré používajú grafické textové reprezentácie alebo grafiku, ktorá ich
obsahuje dôležitý text. Robte všetko pre to, aby ste sa od toho držali čo najďalej. Ak tvoje
najdôležitejšie slová sú v grafickom formáte, internetové prehliadača potrebujú správne
indexovanie a hodnotenie vašich stránok. Prehliadače tiež chcú vidieť kontinuitu v štruktúre
stránky. Keď správca webu používa veľa tabuliek, rámov a iných dizajnových prvkov,
rozdeľuje tok súboru text na stránke a môže to mať negatívny vplyv na vaše hodnotenie.
Kedykoľvek je to možné, použite čo najmenej tabuliek. Ak používate tabuľky, snažte sa nerozdeliť
odsek alebo vetu do samostatných buniek v tabuľke, zničí sa tak plynulosť textu a slová sa
budú považovať za nesúvisiace fragmenty namiesto časti tej istej súvislej vety / odseku. je
dôležité si uvedomiť, že internetové prehľadávače nevidia stránky rovnako ako návštevník
robí. Zatiaľ čo návštevník vidí stránku správne zobrazenú a všetok plynulý text pekne,
prehľadávač vidí za stránkou, ktorá sa rozpadne, iba HTML kód plynulosť textu. Všeobecne
platí, že čím je stránka jednoduchšia a HTML za ňou, tým bude lepšie hodnotená.
Zhrnutie
Vždy si uvedomte, aký dopad bude mať konkrétny dizajnový prvok na vašich návštevníkov aj na
schopnosť internetových prehliadačov správne indexovať vaše stránky.
Pochopením toho, ako prehliadače pracujú, čo hľadajú, čo môžu a nemôžu, výrazne zvýšite svoje
šance na úspešné dosiahnutie poradia, aby bolo vaše podnikanie úspešné. Navigácia
Navigácia na webe je dôležitá pre úspešnosť zážitku návštevníkov vášho webu na váš web.
Navigačný systém webu je ako cestovná mapa k rôznym oblastiam a informáciám
obsiahnutým na webovej stránke. Používanie konzistentnej navigačnej schémy zo stránky
na stránku pomáha návštevníkovi webu naučiť sa váš navigačný systém webových stránok.
Typy navigácie na webových stránkach
Existujú rôzne typy navigácie na webových stránkach: Hierarchická navigácia na webových
stránkach
Štruktúra navigácie na webových stránkach je zostavená od všeobecnej po konkrétnu.
49
Poskytuje to jasnú a jednoduchú cestu ku všetkým webovým stránkam odkiaľkoľvek na webovú
stránku. Globálna navigácia na webových stránkach
Globálna navigácia na webových stránkach zobrazuje sekcie / stránky na najvyššej úrovni webu.
Je k dispozícii na každej stránke a obsahuje zoznam hlavných sekcií / stránok s obsahom webovú
stránku.
Navigácia na miestnej webovej stránke
Miestna navigácia umožňuje prepojenie textu vašich webových stránok s inými stránkami v rámci
webovej stránky.
Štýly navigácie na webových stránkach
Štýly navigácie na webe odkazujú na spôsob zobrazenia navigačného systému. Textové odkazy
Textové odkazy sú slová (text), ktoré sú obklopené ukotvenou sadou značiek pre vytvorenie textu,
na ktorý sa dá kliknúť, ktorý privedie návštevníka na inú webovú stránku v rámci vášho
webu, dokument na stiahnutie z vášho webu alebo na iné webové stránky na internete.
Breadcrumbs navigačná lišta
Navigácia v navigácii zobrazuje návštevníkovi webu cestu na stránku, na ktorej sa práve nachádza.
Navigačná lišta
Navigačná lišta je kolekcia zoskupených navigačných odkazov na webové stránky. Navigačná lišta
môže byť vodorovná alebo zvislá. Navigácia na tabulátore
Navigácia na tabulátore je miesto, kde sa odkazy na navigáciu na webe zobrazujú ako podobné
tabulátory ty, ktoré používate v zakladačoch na rozdelenie obsahu do sekcií. Sitemap
Sitemap je stránka na vašom webe, ktorá obsahuje zoznam všetkých sekcií a webových stránok
stránky (ak ich nemáte príliš veľa), ktoré obsahuje web. Toto sa líši od súborov Sitemap
Google a Sitemap Yahoo. Tradičný súbor Sitemap poskytuje navigáciu pre návštevníkov
vašich webových stránok - a
kratšia cesta k rôznym oblastiam webu pre tých, ktorí to vedia presne čo hľadajú, a prostriedok,
pomocou ktorého môžu vyhľadávače nájsť všetky stránky na vašom webe.
Rozbaľovacia ponuka
Rozbaľovacia ponuka je štýl navigácie webových stránok, kde je iná ponuka je zobrazená, keď
návštevník umiestni myš nad položku ponuky. Rozbaľovacia ponuka ponuka môže
obsahovať rozbaľovaciu ponuku (pozri nasledujúcu položku). Systém rozbaľovacej ponuky
môže vytvárať problémy s prístupnosťou a problém ako pokiaľ vyhľadávače nie sú schopné
čítať odkazy v ponuke, ale ak sú správne zostavené, je možné ich prekonať.
Flyout - Rozbaľovacie menu
Flyout - Rozbaľovacie menu je zostavené podobne ako dropdown rozbaľovacia ponuka. Keď
návštevník umiestni myš nad odkaz, ďalšie menu sa zobrazí, zvyčajne na vpravo od odkazu,
kde je umiestnená myš.
Flyout rozbaľovacie ponuky čelia rovnakým výzvam ako dropdown rozbaľovacie ponuky, ale ak
sú zostavené správne, môžu byť vyhľadávacími nástrojmi prístupné a čitateľné. Named
Anchors
Named Anchors sú typom odkazov, ktoré vás dovedú priamo na miesto na webe aktuálnej stránke
alebo na inej webovej stránke.
Používanie navigácie na webových stránkach
Aby bol webový navigačný systém efektívny, potrebuje:
Byť konzistentný na celom webe.
Návštevníci webových stránok sa opakovaním naučia, ako sa pohybovať vo webovej stránke.
Držať hlavné navigačné odkazy pohromade. Návštevník sa tak ľahšie dostane do hlavných častí
webových stránok. Zredukovaný neporiadok zoskupovaním odkazov do sekcií.
Ak je zoznam navigačných odkazov na webové stránky zoskupený do sekcií a do všetkých a sekcia
má iba 5 - 7 odkazov, uľahčí to čítanie navigačnej schémy.
Minimálne kliknutie, aby ste sa dostali tam, kam sa chce návštevník dostať.
50
Ak je počet kliknutí na webovú stránku, ktorú si návštevník želá navštíviť, minimálny, to vedie k
lepšej skúsenosti.
Niektorí návštevníci môžu byť pri kliknutí na veľa ľudí zmätení alebo nedočkaví odkazy, aby sa
dostali tam, kde chcú byť. Na veľkých webových stránkach to môže byť ťažké zredukovať.
Používanie strúhanky je jedným zo spôsobov, ako pomôcť návštevníkovi zistiť, kde sa
nachádza sú v rámci webovej stránky a cesty späť po navigačnej ceste, po ktorej sa vybrali.
LOGICKÁ STRUKTURA
Rozdělme web na jednotlivé logické celky.
Jak obsáhlé vaše budoucí stránky mají být? Budou prezentovat pouze základní informace o vás
nebo budete chtít poskytnout uživatelům i podrobnější informace? Jaké položky budou
součástí menu a jaké množství položek bude potřeba? Jakým způsobem budou jednotlivé
stránky provázány?
Rozdělte web na jednotlivé logické celky. Tyto celky, „rodiče“, mají podcelky, „děti“, jež mohou
mít další děti – vzniká struktura webu v podobě tzv. stromu. Většinou je lepší rozdělit obsah
na více stran, než vytvořit jednu velice dlouhou stranu. Logická a jasná struktura webu je
pro orientaci návštěvníka iklíčovým faktorem. Vizuální podobou struktury webu je tzv.
mapa webu (site map).
Grafický dizajn
Farby vo webdizajne Možno si neuvedomujete, aké dôležité sú farby vo webdizajne. Ak je webová
stránka zelená, pokojne môže byť aj modrá; na tom nezáleží. A zatiaľ čo som si to myslel,
nedávno prišiel na to, že farba vlastne spraví obrovský rozdiel a vyjadrí publiku niečo iné.
Ľudské zmysly sa reagujú na veľa vecí. Jeden z najúčinnejších spôsobov, ako niekoho
vzrušiť, že na steny svojej izby premietne červenú farbu. Je to tak už skôr robili vedci a
dospeli k jasnému záveru. Človek, ktorý život v červenej miestnosti má vyššiu srdcovú
frekvenciu a krvný tlak ako človek, ktorý žije v modrej miestnosti. Je to preto, že červená
farba symbolizuje vzrušenie, všetci to vieme.
Existuje dôvod, prečo si spoločnosti rýchleho občerstvenia vyberajú ako svoju hlavnú alebo
druhoradú červenú farba.
Dobrými príkladmi sú Coca-Cola, McDonald’s, Burger King alebo Pepsi (aj keď modrá je ich
hlavná farba).
Farby stimulujú zmysly Farby môžu ľudí stimulovať a vzrušovať, zvyšovať ich apetít, cítiť ich
teplo alebo sa v nich cítiť pokojne. Červená vás jednoducho nadchne podľa tých, ktorí
študujú chromodynamiku. Web spoločnosti Coke je červený - dodáva vám pocit lenivého,
horúceho letného dňa - práve vtedy, keď cítite potrebu piť colu.
Farby vo webdizajne majú nielen emocionálny faktor. Ľudia majú tendenciu hazardovať viac za
podmienok červeného svetla ako za modrého svetla. Toto je hlavný dôvod, prečo mestá ako
Las Vegas používajú veľa červených svetiel. Farby mať vplyv na výkon. Červené svetlá
umožňujú ľuďom konať rýchlejšie a cítiť sa viac silný, čo nie je vždy výhodné, zatiaľ čo
modrá farba núti ľudí premýšľať viac pred konaním. Existuje dôvod, prečo sú značky STOP
červené - musíte konať okamžite a zastavte vozidlo, ktoré riadite, inak by ste boli v
nebezpečenstve.
Miešanie farieb
Miešanie farieb je prospešné, ak sa robí správnym spôsobom. Miešanie veľmi doplnkové farby tiež
ľudia robia, ale malo by sa to robiť iba príležitostne. To nemali by ste to preháňať, pretože
to má zlý vplyv na oči ľudí. Môžete si myslieť čierneho webu s ružovým textom.
Za spoločným používaním doplnkových farieb je veľmi dobrý trik. Kreslenie tenká neutrálna biela,
sivá alebo čierna čiara okolo dvoch farebných tvarov bude aby oči videli obidve farby
zvlášť. Stačí sa pozrieť na logo Pepsi: červené a modré sú oddelené nielen tenkou vrstvou
bielej, ale aj celkom veľkou. Toto biely tvar spája červenú a modrú lepšie, ako keby boli
umiestnené priamo na vrchu navzájom. Farby a kultúry
51
Farby navyše znamenajú v rôznych častiach sveta niečo iné. Zatiaľ čo červená znamená šťastie v
Číne, znamená to nedostatok v Nemecku. Obrovské spoločnosti s množstvom finančných
zdrojov použije veľké množstvo peňazí na štúdium rôznych účinkov farby majú na rôznych
kultúrach pred vstupom na nový trh. Veľa ľudí si myslí, že je to nemožné, ale klienti sa
môžu stratiť kvôli nesprávnym farbám. A hoci obrovské korporácie zvyčajne najímajú
odborníkov, aby pre nich robili tento výskum, výsledky nie sú vždy dobré. Každý dizajnér
(a každý človek všeobecne) má tendencia páčiť sa farbám alebo kombináciám farieb a
používať ich v rôznych farbách situácie, pretože to je to, čo sa im osobne páči. Farby pre
web
Výber farby pre web znamená oveľa viac ako výber vašej obľúbenej farbu a premeniť ju na
rozloženie. Znamená to zvoliť správnu farbu, aby ste dosiahli požadované reakcie publika.
Ak dobre poznáte svoje publikum a zistili ste, ktorá farba sa k nim najlepšie hodí, už ste v
polovici cesty v procese tvorby. Je tiež nepravdepodobné, že si vyberiete farbu, ktorá sadne
každému návštevník vášho webu, preto je ešte dôležitejšie vedieť to určiť ktorá farba a tón
fungujú najlepšie pre väčšinu používateľov, na ktorých zacielite. Podľa rôznych zdrojov
polovica ľudí navštevujúcich webové stránky nepríde späť kvôli farbe vzoru. Prvá vec,
ktorú ľudia musia uznať keď vidia vaše stránky, sú vo farbách značky
(branding). Ak máte viac farieb a návštevníci nevidia tú dominantnú, treba prerobiť.
Responzívny webový dizajn
Responzívny webový dizajn (RWD) je prístup k webdizajnu zameranému na vytváranie webov pre
zaistenie optimálneho zážitku zo sledovania - ľahké čítanie a navigácia pomocou
minimálnej zmeny veľkostí, posúvania a skrolovania - na širokej škále zariadení (od
mobilných telefónov po monitory stolových počítačov).
Stránka navrhnutá s programom RWD prispôsobuje rozloženie prostrediu na prezeranie pomocou
pomocou plynulých, proporcionálnych mriežok, flexibilných obrázkov a mediálnych
dotazov CSS3, rozšírenie pravidiel @media.
• Koncept fluidnej mriežky vyžaduje, aby veľkosť prvkov stránky bola v relatívnych
jednotkách, ako je percentá, nie absolútne jednotky, ako sú pixely alebo body.
• Flexibilné obrázky sa tiež zväčšujú v relatívnych jednotkách, aby sa zabránilo ich
zobrazeniu mimo ich obsahujúceho prvku.
• Mediálne dotazy umožňujú stránke používať rôzne pravidlá štýlu CSS na základe
charakteristík zariadenia, na ktorom sa web zobrazuje, najčastejšie šírka prehliadača.
• Komponenty na strane servera (RESS) v spojení s komponentmi na strane klienta ako napr.
mediálne dotazy môžu vytvoriť stránky s rýchlejším načítaním pre prístup cez mobilné siete
a tiež poskytujú bohatšiu funkčnosť / použiteľnosť, aby sa predišlo niektorým nástrahám
riešení iba na strane zariadenia.
Farebné modely pre webdizajn
Vo webdizajne používame farebný model RGB. Je to dôležité, pretože naše primárne zobrazovacie
médiá sú zariadenia vyžarujúce svetlo. Farebný model RGB je doplnkový farebný model,
v ktorom sa spája červené, zelené a modré svetlo rôznymi spôsobmi reprodukovať širokú
škálu farieb. Názov modelu pochádza z iniciálok troch aditívnych základných farieb,
červenej, zelenej a modrej. Hlavným účelom farebného modelu RGB je snímanie,
reprezentácia a zobrazovanie obrazov v elektronických systémoch, ako sú televízory a
počítače, aj keď sa používa aj v konvenčnej fotografii. RGB je farebný model závislý od
zariadenia: rôzne zariadenia ho detekujú alebo reprodukujú danú hodnotu RGB odlišne,
pretože farebné prvky (napríklad fosfor alebo farbivá) a ich reakcia na jednotlivé hladiny
R, G a B sa líši od výrobcu výrobcovi alebo dokonca v rovnakom prístroji. Teda RGB
hodnota nedefinuje rovnakú farbu naprieč zariadeniami bez nejakého druhu farby
zvládanie.
Na obrázkoch s 8 bitmi na kanál sú hodnoty intenzity od 0 (čierne) do 255 (biela) pre každú z
komponentov RGB (červená, zelená, modrá) vo farebnom obrázku.
52
Napríklad jasne červená farba má hodnotu R 246, hodnotu G 20 a B hodnotu 50. Keď sú hodnoty
všetkých troch zložiek rovnaké, výsledkom je a odtieň neutrálnej šedej. Keď sú hodnoty
všetkých komponentov 255, výsledkom je čistá biela; keď sú hodnoty 0, čisto čierna. Na
reprodukciu farieb na obrazovke používajú obrázky RGB tri farby alebo kanály. V
obrázkoch s 8 bitmi na kanál, tri kanály sa prekladajú do 24 (8 bitov x 3 kanály) bitov
farebnej informácie na pixel. Pri 24-bitových obrázkoch sú to tri kanály dokáže
reprodukovať až 16,7 milióna farieb na pixel.
Webové farby sú farby použité pri navrhovaní webových stránok a spôsoby ich použitia popisujúce
a špecifikujúce tieto farby. Farby môžu byť špecifikované ako RGB triplet alebo v
hexadecimálnom formáte (hexadecimálny triplet). Môžu byť tiež uvedené podľa ich
bežných anglických názvov v niektorých prípadoch. Často farebný nástroj alebo iný
grafický softvér sa používa na generovaniefarebných hodnôt. Priniektorých použitiach
(kasjádové šablóny štýlov), hexadecimálne farebné kódy začínajú znakom čísla (#). A
farba je určená podľa intenzity jej červenej, zelenej a modrej zložky, každý predstavuje
osem bitov.
Rastrové formáty obrazových súborov
JPEG / JFIF – JPEG (Joint Photographic Experts Group) je metóda kompresie; Komprimované vo
formáte JPEG obrázky sa zvyčajne ukladajú vo formáte JFIF (JPEG File Interchange
Format) formát súboru. Kompresia JPEG je (vo väčšine prípadov) stratová kompresia.
Prípona názvu súboru JPEG / JFIF je JPG alebo JPEG. Môže to takmer každý digitálny
fotoaparát ukladať obrázky vo formáte JPEG / JFIF, ktorý podporuje 8-bitové obrázky v
odtieňoch sivej a 24-bitové farebné obrázky. JPEG aplikuje stratovú kompresiu na obrázky,
ktoré môžu mať za následok výrazné zmenšenie veľkosti súboru. Množstvo kompresie
môže a veľkosť kompresie ovplyvňuje vizuálnu kvalitu súboru výsledok. Ak nie je príliš
veľká, kompresia jej to nijako výrazne neuberá kvalitu obrazu, ale súbory JPEG opakovane
trpia generačnou degradáciou upravené a uložené (JPEG tiež poskytuje bezstratové
ukladanie obrázkov, ale bezstratové verzia nie je široko podporovaná).
GIF - GIF (Graphics Interchange Format) je obmedzený na 8-bitovú paletu alebo 256 farieb. Vďaka
tomu je formát GIF vhodný na relatívne ukladanie grafiky niekoľko farieb, ako sú
jednoduché diagramy, tvary, logá a obrázky v kreslenom štýle. Formát GIF podporuje
animáciu a stále sa často používa na zabezpečenie obrázkovej animácie účinky. Používa
tiež bezstratovú kompresiu, ktorá je efektívnejšia, ak veľké oblasti majú jednu farbu a sú
neúčinné pre podrobné obrázky alebo obrázky s rozptýlenými farbami.
PNG – Formát súborov PNG (Portable Network Graphics) bol vytvorený ako bezplatný, open-
source nástupca GIF.
Formát súboru PNG podporuje 8-bitové obrázky palety (s voliteľnou priehľadnosťou pre všetky
farby palety) a 24-bit truecolor (16 miliónov farby) alebo 48-bitový truecolor s alebo bez
alfa kanála - zatiaľ čo GIF podporuje iba 256 farieb a jednu priehľadnú farbu. V porovnaní
s JPEG PNG vyniká, keď má obrázok veľké, rovnomerne sfarbené oblasti. PNG poskytuje
náhradu GIF bez patentu a môže tiež nahradiť mnoho bežných použití TIFF. Podporované
sú obrázky s indexovanou farbou, v odtieňoch šedej a truecolor, plus voliteľný alfa kanál.
PNG je navrhnutý tak, aby dobre fungoval v online prezeracích aplikáciách, ako sú webové
prehliadače takže je plne streamovateľný s možnosťou progresívneho zobrazenia. PNG je
robustný a poskytuje ako úplná kontrola integrity súborov, tak jednoduchá detekcia
spoločného prenosu chyby. PNG tiež môže na vylepšenie ukladať údaje o gama a farebnosti
prispôsobenie farieb na heterogénnych platformách. Animované formáty odvodené z PNG
sú MNG a APNG. Posledný menovaný je podporovaný od Mozilla Firefox a Opera a je
spätne kompatibilný s PNG.
53
Na rozdiel od vyššie uvedených formátov rastrových obrázkov (kde údaje popisujú charakteristiky
formátov vektorových obrázkov obsahujú geometrický popis ktoré je možné plynulo
vykresliť pri ľubovoľnej požadovanej veľkosti displeja. V určitom okamihu, všetka
vektorová grafika musí byť rastrovaná, aby sa mohla zobrazovať na digitálnych
monitoroch.
SVG (Scalable Vector Graphics) je otvorený štandard, ktorý bol vytvorený a vyvinutý konzorciom
pre sieť WWW s cieľom vyriešiť potrebu (a pokusy niekoľkých z nich) spoločnosti) pre
všestranný, skriptovateľný a univerzálny vektorový formát pre web a inak. Formát SVG
nemá svoju kompresnú schému vlastné, ale kvôli textovej povahe XML je možné grafiku
SVG komprimovať pomocou programu ako gzip. SVG je vzhľadom na svoj skriptovací
potenciál kľúčom komponent vo webových aplikáciách: interaktívne webové stránky, ktoré
vyzerajú a fungujú aplikácie.
SVG je formát vektorového obrázka založený na XML pre dvojrozmernú grafiku, ktorá má
podporu interaktivity a animácie. Obrázky SVG a ich správanie sú definované v textových
súboroch XML. To znamená, že ich možno prehľadávať, indexovať, skriptované a tiež
komprimované. Ako súbory XML je možné vytvárať obrázky SVG a upravovať pomocou
ľubovoľného textového editora, ale často je pohodlnejšie ich vytvárať pomocou kresliace
programy ako Inkscape. SVG umožňuje tri typy grafických objektov: vektorová grafika,
rastrová grafika a text. Grafické objekty vrátane PNG a rastrové obrázky JPEG možno
zoskupovať, vytvárať štýly, transformovať ich a skladať do nich predtým poskytnuté
objekty. SVG priamo nepodporuje indexy, ktoré oddeľujú poradie kreslenia z poradia
dokumentu pre prekrývajúce sa objekty, na rozdiel od niektorých ďalších vektorových
značkovacích jazykov ako VML. Text môže byť v ľubovoľnom mennom priestore XML
vhodnom pre aplikáciu, ktorá zvyšuje možnosti vyhľadávania a prístupnosť súboru SVG.
Sada funkcií obsahuje vnorené transformácie, orezania, alfa masky, efekty filtrov, objekty
šablón a rozšíriteľnosť.
AI.1.2. Webové šablóny HTML5 (štruktúra jazyka HTML, elementy a atribúty, syntax
jazyka HTML, minimálna požadovaná štruktúra, relatívne a absolútne cesty).
HTML5 bude nový štandard pre HTML. Predchádzajúca verzia HTML, HTML 4.01, vyšla v roku
1999. Web sa odvtedy veľmi zmenil. HTML5 je stále nedokončená. Hlavné prehľadávače
však mnohé podporujú nových prvkov
HTML5 a API (Application Programming Interface). HTML5 je spolupráca medzi World Wide
Web Consortium (W3C) a pracovná skupina pre webovú hypertextovú aplikačnú
technológiu (WHATWG). WHATWG pracoval s webovými formulármi a aplikáciami a
W3C pracoval s XHTML 2.0. V roku 2006 sa rozhodli spolupracovať a vytvoriť novú
verziu HTML.
Boli stanovené niektoré pravidlá pre HTML5:
•• Nové funkcie by mali byť založené na HTML, CSS, DOM a JavaScript
•• Znížte potrebu externých doplnkov (napríklad Flash)
•• Lepšie spracovanie chýb
•• Viac značiek, ktoré nahradia skriptovanie
•• HTML5 by malo byť nezávislé na zariadení
•• Proces vývoja by mal byť viditeľný pre verejnosť
Je to tiež pokus o definovanie jedného značkovacieho jazyka, ktorý je možné zapísať v syntaxi
HTML alebo XHTML. Zahŕňa podrobné modely spracovania do formátu podporovať
interoperabilnejšie implementácie; rozširuje, zdokonaľuje a racionalizuje označenie
dostupné pre dokumenty a zavádza označenie a aplikáciu programovacie rozhrania (API)
pre zložité webové aplikácie. Za to isté dôvodov je HTML5 tiež potenciálnym kandidátom
na mobilné aplikácie pre rôzne platformy. Mnoho funkcií jazyka HTML5 bolo vytvorených
54
s ohľadom na to, že sú schopné fungovať na zariadeniach s nízkou spotrebou energie, ako
sú napríklad smartfóny a tablety. HTML5 predovšetkým pridáva mnoho nových
syntaktických funkcií. Medzi ne patrí aj nový prvky <video>, <audio> a <canvas>, ako aj
integrácia škálovateľného vektora grafický obsah (SVG) (ktorý nahrádza použitie
všeobecných značiek <object>) a MathML pre matematické vzorce. Tieto funkcie sú
navrhnuté tak, aby to dokázali ľahko zahrnúť a zvládnuť multimediálny a grafický obsah
na webe bez musieť uchýliť sa k proprietárnym pluginom a API. Ostatné nové prvky, napr
ako <section>, <article>, <header> and <nav>, are designed to enrich the semantic obsah
dokumentov. Na ten istý účel boli zavedené nové atribúty, zatiaľ čo niektoré prvky a
atribúty boli odstránené. Niektoré prvky, ako <a>, <cite> a <menu> boli zmenené,
predefinované alebo štandardizované. Rozhrania API a dokumentový objektový model
(DOM) už nie sú dodatočnými myšlienkami, ale sú základnou súčasťou špecifikácie
HTML5. HTML5 tiež definuje v niektoré podrobnosti požadovaného spracovania
neplatných dokumentov, aby sa zabezpečili chyby syntaxe bude so všetkými vyhovujúcimi
prehľadávačmi a inými používateľskými agentmi zaobchádzané jednotne. Funkcie HTML5
sú:
Markup (Značka)
HTML5 predstavuje prvky a atribúty, ktoré odrážajú typické použitie v modernej podobe webové
stránky. Niektoré z nich sú sémantické náhrady bežného použitia generických block
(<div>) a vložené (<span>) prvky, napríklad <nav> (navigácia na webe blok), <footer>
(obvykle odkazujúce na spodok webovej stránky alebo na posledné riadky kódu HTML)
alebo <audio> a <video> namiesto <object>. Niektoré zastarané prvky z HTML 4.01 boli
zahodené, vrátane čisto prezentačných prvkov ako <font> a <center>, ktorých účinky sú
dlhodobé boli nahradené schopnejšími kaskádovými štýlmi. K dispozícii je tiež obnovený
dôraz na dôležitosť skriptovania DOM (napr. JavaScript) vo webovom správaní. Syntax
HTML5 už nie je založená na SGML (Standard Generalized Markup Language) napriek
podobnosti svojho označenia. Boli navrhnuté tak, aby boli spätne kompatibilné s bežnou so
staršími verziami HTML. Prichádza s novým úvodným riadkom, ktorý vyzerá ako
dokument SGML deklarácia typu, <! DOCTYPE html>, ktorá spustí vyhovujúci
štandardný režim vykresľovania. Od 5. januára 2009 obsahuje HTML5 aj webové
formuláre 2.0, a predtým samostatná špecifikácia WHATWG. Nové API
Okrem určenia značiek(markup) určuje program HTML5 skriptovacie programovanie aplikácií
rozhrania (API), ktoré možno použiť s JavaScriptom. Existujúce dokumentové rozhrania
objektových modelov (DOM) sú rozšírené a de facto sú zdokumentované ich funkcie.
Existujú aj nové rozhrania API, napríklad:
•• The canvas element pre 2D kreslenie v okamžitom režime. Viď Canvas 2D API Specification
1.0
•• Načasované prehrávanie médií
•• Offline webové aplikácie
•• Úpravy dokumentov
•• Presunutie Drag-and-drop
•• Posielanie správ medzi dokumentmi
•• Správa histórie prehľadávača
•• Registrácia typu MIME a obsluhy protokolu
•• Microdata
•• Webové úložisko, rámec úložiska párov kľúč - hodnota, ktorý poskytuje podobné správanie na
cookies, ale s väčšou úložnou kapacitou a vylepšeným API. Nie všetky vyššie uvedené
technológie sú zahrnuté v špecifikácii W3C HTML5, aj keď sú v špecifikácii WHATWG
HTML. Niektoré súvisiace technológie, ktoré nie sú súčasťou W3C HTML5 ani
WHATWG Špecifikácia HTML je nasledovná. W3C k nim zverejňuje špecifikácie
oddelene: •• Geolokácia
55
•• Web SQL Database, lokálna databáza SQL (už nie je udržiavaná)
•• Indexované databázové API, indexované hierarchické úložisko kľúč - hodnota (predtým
WebSimpleDB)
•• HTML5 File API, zvláda nahrávanie súborov a manipuláciu so súbormi
•• Adresáre a systém, API určené na uspokojenie využitia úložiska na strane klienta pre prípady,
ktoré databázy neposkytujú správne
•• File Writer, API na zápis do súborov z webových aplikácií
•• Web Audio API, vysoko kvalitné JavaScript API pre spracovanie a syntézu zvuku vo webových
aplikáciách
Samotný formát HTML5 nemôže poskytovať animáciu na webových stránkach. Sú potrebné buď
JavaScript alebo CSS3 na animáciu prvkov HTML. Je tiež možná animácia pomocou
JavaScriptu a HTML 4 a v rámci prvkov SVG prostredníctvom SMIL, aj keď podpora
prehliadača zostáva od roku 2011 nerovnomerná.
XHTML5
XHTML5 je XML serializácia HTML5. Dokumenty XML musia byť poskytované s internetovým
typom XML XML (často zamieňané s typom MIME) ako napríklad application / xhtml +
xml alebo application / xml. XHTML5 vyžaduje prísne XML, dobre formovaná syntax. Na
výber je medzi HTML5 a XHTML5 až po výber typu MIME / obsahu: určuje sa typ média
aký typ dokumentu by sa mal použiť. V XHTML5, doctype HTML5 html je voliteľný a
možno ho jednoducho vynechať. HTML, do ktorého bol napísaný vyhovujú špecifikáciám
HTML aj XHTML, a teda budú vytvoriť ten istý strom DOM, či už analyzovaný ako HTML
alebo XML, sa nazýva
„Polyglot markup“.
Error handling (Spracovanie chyby)
HTML5 je navrhnutý tak, aby staré prehliadače mohli bezpečne ignorovať nové konštrukcie
HTML5. Na rozdiel od HTML 4.01 poskytuje špecifikácia HTML5 podrobné pravidlá pre
lexing a parsing (syntaktickú analýzu) so zámerom, že pre rôzne vyhovujúce prehľadávače
spôsobí rovnaký výsledok v prípade nesprávnej syntaxe. Aj keď HTML5 definuje
konzistentné správanie pre dokumenty „tag soup“, tieto dokumenty sa nepovažujú za
vyhovujúce štandardu HTML5.
Štruktúra www a webstránky
Struktura HTML nie je zlozita. Sklada sa z niekolkych blokov, ktore si tu popiseme. Niektore
bloky su povinne, ine zasa nie, takze je na vas, ktore z nepovinnych si do stranky date.
HTML
Tento prikaz oznacuje zaciatok a koniec celej stránky. Je to najdolezitejsi blok, ktory je povinny.
Medzi zaciatok a koniec tohto prikazu piseme vsetky ostatne prikazy a text.
<HTML>
tu budu dalsie prikazy a text
..
</HTML>
HEAD
Tento prikaz definuje hlavicku stranky. Ta vacsinou obsahuje poznamku o autorovi, ktoru sem
uklada program, v akom vytvarame stranku - ak ju nerobime rucne. Dalej obsahuje TITLE,
cize nazov stranky. Blok HEAD nie je povinny, ale TITLE sa odporuca nastavit. Nasa
stranka teda bude:
56
<HTML> <HEAD>
...stranka...
</HEAD>
</HTML>
TITLE
Definuje nazov stranky, ktory sa zobrazuje v kazdom prehliadaci stranky. Mal by byt uvedeny v
kazdej stranke. Piseme ho bud hned za zaciatok stranky, alebo do hlavicky.
<HTML>
<HEAD>
<TITLE>Nazov stranky</TITLE>
...stranky...
</HEAD>
</HTML>
<HTML>
<TITLE>Nazov stranky</TITLE>
...stranky...
</HTML>
BODY
Oznacuje telo stranky. Ak budete svoju stranku editovat v textovom editore pre textovy browser,
je zbytocne sa zatazovat parametrami. Inak vam tento prikaz umozni nastavit farebne
prostredie stranky (farba pozadia, tapeta na pozadi, farba textu a liniek). Pouzitie pre
textovy browser je velmi jednoduche:
<HTML>
<TITLE>Nazov stranky</TITLE>
<BODY>
...stranok...
</BODY>
</HTML>
BGCOLOR="#farba" definuje farbu pozadia pod strankou. Dalsie informacie o zadavani farieb
najdete tu.
57
TEXT="#farba" definuje farbu textu. Dalsie informacie o zadavani farieb najdete tu.
LINK="#farba" definuje farbu liniek, cize odkazov na ine subory, stranky alebo sluzby. Dalsie
informacie o zadavani farieb najdete tu.
VLINK="#farba" definuje farbu linky, ktoru sme uz navstivili (V = visited). Dalsie informacie o
zadavani farieb najdete tu.
ALINK="#farba" definuje farbu linky pri stlaceni tlacidla na mysi (A = activated). Dalsie
informacie o zadavani farieb najdete tu.
ADDRESS
Tento nepovinny blok sa pouziva vacsinou za koncom bloku BODY na definovanie a vypisanie
adresy autora (alebo akehokolvek textu), lebo v praxi to robi len nastavenia urcitej velkosti
pisma a jeho typu.
<HTML>
<TITLE>Nazov stranky</TITLE>
<BODY>
...stranka...
</BODY>
<ADDRESS>
moja adresa alebo hocico ;-)
</ADDRESS>
</HTML>
AI.1.3. Kaskádové štýly. Základné selektory a syntax jazyka CSS. Oddelenie obsahu
a vzhľadu. Spôsoby definície vzhľadu (inline, interne, externe).
Cascading Style Sheets (CSS) je výkonný nástroj, ktorý transformuje prezentáciu dokumentu alebo
zbierky dokumentov a rozšíril sa takmer do všetkých kútov webu a do mnohých zdanlivo
iných než webových prostredí. Napríklad prehliadače založené na technológii Gecko
používajú CSS na ovplyvnenie prezentácie samotného prehliadača Chrome. Mnoho
klientov RSS vám umožňuje použiť CSS na informačné kanály a položky informačného
kanála a niektorí klienti okamžitých správ, ako napríklad Adium, používajú CSS na
formátovanie chatovacích okien. Aspekty CSS možno nájsť v syntaxi používanej rámcami
JavaScript, ako je jQuery.
CSS vám dáva väčšiu kontrolu nad dizajnom vašej stránky. CSS má veľa nastavení formátovania,
ktoré samotné HTML neposkytuje. Vďaka tomu môžete mať oveľa väčšiu kontrolu nad
vzhľadom svojej webovej stránky, ak používate CSS, ako keby ste používali obyčajný
HTML.
CSS vám umožňuje oddeliť obsah vašich stránok od pokynov na formátovanie. Dokument HTML
sa preto stane miestom, kde pracujete s obsahom, a šablóna štýlov CSS slúži ako miesto na
nastavenie vašich štýlov.
CSS vám umožňuje spravovať štýly na vašom webe na jednom centrálnom mieste. Aj keď štýly
CSS môžete definovať na jednej webovej stránke, jej skutočná sila sa prejaví, keď použijete
samostatnú šablónu štýlov CSS, ku ktorej má prístup každá stránka na vašom webe. Keď
nastavíte svoj web takto, môžete ľahko dať celému svojmu serveru konzistentný vzhľad a
dojem. Globálne zmeny môžete vykonať aj z jedného miesta.
58
CSS je budúcnosť. Styling v HTML je zastaraný a v skutočnosti je čoraz ťažšie a ťažšie ho robiť,
keď sú zastarané značky špecifické pre formátovanie. Keď sa teda naučíte CSS, investujete
do technológie, ktorá tu bude ešte roky. Nakoniec vám CSS umožní vytvoriť atraktívnejší
a dobre navrhnutý produkt pracujúci vo viacužívateľskom prostredí, v ktorom navrhujete
stránku, zatiaľ čo niekto iný programuje HTML alebo skriptovací kód. S CSS môže návrhár
primárne pracovať so samostatnou šablónou štýlov namiesto toho, aby ste sa museli brodiť
programátorom Súbory HTML.
Jedným zo spôsobov, ako môžete pridať štýl na webovú stránku, je vloženie požadovaných
výrokov do záhlavia stránky medzi značky <head> a </head>. Takže, aby zmeňte štýl
značky <h1>, môžete použiť nasledujúci kód (vysvetlíme syntax neskôr):
<štýl> h1 {farba: červená; veľkosť písma: 3em; rodina fontov: Arial; } </style>
Ak chcete upraviť štýl celého webu a nie jednej stránky, je to lepší spôsob spravovať štýly je
presunúť ich z vašich webových stránok do samostatných súborov s názvom štýly a potom
importujte tie, ktoré potrebujete.
Existuje niekoľko rôznych spôsobov, ako to možno dosiahnuť, z ktorých prvý je spôsob pomocou
smernice CSS @import, napríklad takto:
<štýl>
@import url („styles.css“); </style>
Toto vyhlásenie hovorí prehliadaču, aby načítal šablónu štýlov s názvom styles.css. Príkaz
@import je dosť flexibilný v tom, že môžete vytvárať šablóny štýlov, ktoré sami vtiahnu
ďalšie štýly atď. Len sa uistite, že tam nie sú žiadne
Značky <style> alebo </style> v ktorejkoľvek z vašich externých šablón štýlov, alebo nebudú
práca. Môžete tiež zahrnúť šablónu štýlov so značkou HTML <link>, napríklad takto: <link
rel = ‘stylesheet’ type = ‘text / css‘ href = ’styles.css’ />
Toto má úplne rovnaký efekt ako smernica @import, až na to, že <link> je značka iba HTML a
nejde o platnú smernicu o štýle, takže ju nemožno použiť z v rámci jednej šablóny štýlov
vtiahnuť do inej.
Existuje tiež možnosť pridať štýl ku každému prvku v štruktúre HTML Páči sa ti to:
<div style = ‘font-style: italic; color: blue; ‘> Ahoj tam </div> Môže nastať problém, keď
používateľ pridá rôzne štýly pre jeden prvok pomocou externej šablóny štýlov, internej
definície štýlu v hlavičke a pomocou pomocou vloženého štýlu. Riešenie je prioritné.
Priorita je nastavená nasledovne, od najnižšej po najvyššiu:
1. Externá štýlová tabuľa
2. Vnútorný štýl
3. Inline štýl
Základná štruktúra pre pridanie štýlu k ľubovoľnému prvku HTML je nastavená takto:
Selektor {property-name: property-value; }
Selektor je zvyčajne prvok HTML, ktorý chcete upraviť. Každé vyhlásenie pozostáva z vlastnosti
a hodnoty. Vlastnosť je požadovaný atribút štýlu
zmeniť. Každá vlastnosť má svoju hodnotu. Deklarácia CSS sa vždy končí bodkočiarkou, a skupiny
vyhlásení sú obklopené zloženými zátvorkami. Vytvoriť CSS čitateľnejšie, na každý riadok
môžete vložiť jednu deklaráciu, napríklad takto: p { farba: červená; zarovnanie textu: na
stred; }
Selektory môžu byť veľmi jednoduché, ale tiež vnorené alebo založené na atribútoch. V ďalšom
tabuľka [19] obsahuje rôzne vzory pre selektory.
Vlastnosti CSS ovplyvňujúce rozloženie stránky sú založené na ráme model, vnorená sada
vlastností obklopujúcich prvok. Prakticky všetky prvky mať (alebo môže mať) tieto
vlastnosti vrátane tela dokumentu, ktorého okraj môžete (napríklad) odstrániť pomocou
nasledujúceho pravidla: body {margin: 0px; }
59
Krabicový model objektu sa začína zvonka s okrajom objektu. Vo vnútri toto je ohraničenie a
potom polstrovanie medzi ohraničením a vnútorným obsahom. A konečne je tu obsah
objektu. Okraje prvku môžu byť
hromadne zmenené pomocou vlastnosti margin alebo jednotlivo s left-left, okraj hore, okraj vpravo
a okraj dole. Úroveň okraja poľa model je podobný marži, až na to, že nedochádza ku
kolapsu. Najhlbšie úrovní polí (okrem obsahu prvku) je polstrovanie, ktorý sa používa vo
vnútri akýchkoľvek okrajov a / alebo okrajov. Hlavné vlastnosti bývali upraviť polstrovanie
sú polstrovanie, polstrovanie vľavo, polstrovanie hore, polstrovanie vpravo, a polstrované
dno. Hlboko v krabici, v jeho strede, leží prvok ktoré je možné štylizovať všetkými
spôsobmi, o ktorých sa už diskutovalo v tejto kapitole, a ktoré môže (a zvyčajne bude)
obsahovať ďalšie čiastkové prvky, ktoré naopak môžu obsahovať čiastkové prvky a ďalšie,
každý s vlastným štýlom a nastavením modelu škatule.
Ďalšími dôležitými vlastnosťami modelu krabice sú šírka a výška.
Obr. 11 Krabicový model Polohovanie
CSS 2.1 definuje tri pozičné schémy:
Normálny prietok
Vkladané položky sú usporiadané rovnakým spôsobom ako jednotlivé písmená v texte druhý cez
dostupné miesto, až kým nebude viac miesta, potom začnite a nový riadok nižšie. Blokujte
položky zvisle, rovnako ako odstavce a položky v
zoznam s odrážkami. Normálny tok tiež zahrnuje relatívne umiestnenie bloku alebo vloženého
riadku položky a zabehávacie boxy. Plaváky
Plávajúci predmet je vyňatý z normálneho toku a posúva sa doľava alebo doprava pokiaľ je to
možné na dostupnom mieste. Ďalší obsah potom prúdi popri plávajúci predmet.
Absolútne umiestnenie
Absolútne umiestnená položka nemá miesto a nemá na normálny tok žiadny vplyv ďalších
položiek. Vo svojom kontajneri obsadzuje svoju pridelenú pozíciu nezávisle na ostatné
veci. [42]
Pozícia: hore, dole, vľavo a vpravo.
Existujú štyri možné hodnoty vlastnosti position. Ak je položka umiestnená v iným spôsobom ako
statickým, potom ďalšie vlastnosti hore, dole, vľavo a vpravo sa používajú na určenie
offsetov a pozícií. Statický
Predvolená hodnota umiestni položku do normálneho toku. Relatívne
Položka sa umiestni do normálneho toku a potom sa z tejto polohy posunie alebo posunie.
Následné položky toku sú usporiadané tak, akoby položka nebola presunutá. Absolútne
Určuje absolútne umiestnenie. Prvok je umiestnený vo vzťahu k jeho najbližšej nestatický predok.
Opravené
Položka je na obrazovke absolútne umiestnená v pevnej polohe, rovnako ako zvyšok dokumentu
sa posúva.
Plávajúce a čisté
Vlastnosť float môže mať jednu z troch hodnôt. Absolútne umiestnené alebo pevné položky
nemôžu plávať. Ostatné prvky bežne tečú okolo plávajúcich vecí, pokiaľ im v tom nebráni
ich jasný majetok.
vľavo
Položka pláva naľavo od riadku, v ktorom by sa objavila; ostatné veci môže tiecť okolo jeho pravej
strany. správny
Položka pláva napravo od riadku, v ktorom by sa objavila; ostatné veci môže tiecť okolo jeho ľavej
strany. jasný
Vynúti, aby sa prvok objavil pod („číry“) plávajúce prvky vľavo
(jasný: vľavo), pravý (jasný: pravý) alebo obe strany (jasný: oba).
4.1 CSS3
60
CSS3 [20] je úplne spätne kompatibilný, takže nebudete musieť meniť existujúce vzory.
Prehliadače budú vždy podporovať CSS2. CSS3 je rozdelený do „modulov“.
Stará špecifikácia bola rozdelená na menšie kúsky a taktiež sú pridané nové. Medzi najdôležitejšie
moduly CSS3 patria:
•• Selektory
•• Krabicový model
•• Pozadie a hranice
•• Textové efekty
•• 2D / 3D transformácie
•• Animácie
•• Rozloženie viacerých stĺpcov
•• Užívateľské rozhranie
Špecifikácia CSS3 je stále vo vývoji W3C. Avšak veľa z nové vlastnosti CSS3 boli
implementované do moderných prehľadávačov.
61
Z dôvodu bezpečnostných obmedzení nemusí byť povolený prístup skriptom na strane klienta k
počítaču používateľa nad rámec aplikácie webového prehliadača. Techniky ako ActiveX
na vylúčenie tohto obmedzenia je možné použiť ovládacie prvky.
Skriptovanie na strane klienta nie je vo svojej podstate nebezpečné. Používateľom sa odporúča,
aby vždy udržiavať ich webové prehliadače aktuálne, aby nedošlo k odhaleniu ich počítača
a údajov na odhalené zraniteľné miesta.
Posledná skupina webových prehľadávačov a webových stránok zvyčajne zamestnáva veľké
množstvo skriptovania na strane klienta, čo predstavuje vylepšené užívateľské rozhranie, v
ktorom používateľ namiesto toho nezažije nepriateľské „osvieženie“ webovej stránky
možno uvidí animovaný súbor GIF, ktorý naznačuje, že sa vyskytla požiadavka, a stránka
bude čoskoro aktualizovaná. Ajax (asynchrónny skript Java a XML) je dôležitý doplnok
jazyka JavaScript, ktorý umožňuje webovým vývojárom komunikovať s webovým
serverom na pozadí bez potreby úplného nová verzia stránky, ktorá sa má vyžiadať a
vykresliť. To vedie k mnohým vylepšený užívateľský zážitok vo všeobecnosti.
Bohužiaľ, dokonca aj jazyky, ktoré podporuje široká škála prehľadávačov nemusia byť
implementované úplne rovnako vo všetkých prehľadávačoch a v prevádzke systémov.
Autorom sa odporúča, aby skontrolovali správanie svojich klientov skripty na rôznych
platformách predtým, ako ich uvedú do používania. Zoznam skriptovacích jazykov na
strane klienta •• JavaScript (v zásade skriptovací jazyk na strane klienta - zvyšok sú
varianty) z toho)
•• ActionScript (používa sa na vytváranie animovaných interaktívnych webových aplikácií pre
Adobe Flash Player pomocou aplikácie Adobe Flash Pro) JavaScript (JS) je interpretovaný
počítačový programovací jazyk. Ako súčasť webové prehliadače, implementácie umožňujú
interakciu skriptov na strane klienta s používateľom, ovládať prehliadač, komunikovať
asynchrónne a meniť obsah dokumentu ktorý sa zobrazí. Stalo sa to tiež bežné v
programovaní na strane servera, vývoj hier a vytváranie desktopových aplikácií.
JavaScript je prototypový skriptovací jazyk s dynamickým písaním a má prvotriedne funkcie. Jeho
syntax bola ovplyvnená C. JavaScript kopíruje mnohé názvy a konvencie pomenovania z
jazyka Java, ale tieto dva jazyky sú inak nesúvisiace a majú veľmi odlišnú sémantiku.
Kľúčové princípy návrhu v rámci JavaScriptu je prevzatý z programovacích jazykov Self a
Scheme. to je jazyk s viacerými paradigmami, ktorý podporuje objektovo, imperatívne a
funkčné štýly programovania.
Aplikácia JavaScriptu na použitie mimo webových stránok, napríklad v PDF dokumenty,
prehliadače špecifické pre jednotlivé stránky a widgety pre pracovnú plochu. Novšie a
rýchlejšie virtuálne počítače a na nich postavené rámce JavaScriptu (najmä Node.js) tiež
zvýšili popularitu JavaScriptu pre webové aplikácie na strane servera.
JavaScript bol formalizovaný v jazykovom štandarde ECMAScript a je ním predovšetkým používa
sa ako súčasť webového prehliadača (JavaScript na strane klienta). Toto umožňuje
programatické prístup k výpočtovým objektom v hostiteľskom prostredí. Knižnice
JavaScriptu
Knižnica JavaScript je knižnica vopred napísaného JavaScriptu, ktorá umožňuje jednoduchšie
práce vývoj aplikácií založených na JavaScripte, najmä pre Ajax a ďalšie webcentrické
technológií. Zatiaľ čo JavaScript bol vyvinutý spoločnosťou Netscape (a neskôr) Mozilla)
má už dlho prítomnosť na webe pre mnoho webových stránok, získal si najmä s nástupom
éry výpočtovej techniky Web 2.0, v ktorej funguje JavaScript a čoraz viac využívajú na
vývoj používateľských rozhraní pre aplikácie, na webe aj na počítači. JavaScript bol tiež
kombinovaný s CSS do vytvárať dynamické webové stránky, ktoré sa tiež stali populárnymi
ako efektívnejšie a prístupná alternatíva k webovým stránkam založeným na formáte Flash.
S rozšírenými požiadavkami pre JavaScript je to pre programátorov ľahší prostriedok na
vývoj takýchto dynamických rozhraní bolo treba. Knižnice jazyka JavaScript, napríklad
Prototype, script.aculo.us, Ext Knižnice miniaplikácií Core, jsPHP, MooTools a jQuery a
62
JavaScript, napríklad Ext JS, Boli vyvinuté súbory DHTMLX a Dojo Toolkit, ktoré
vývojárom umožnili sústrediť sa viac pri výraznejších aplikáciách Ajaxu. To viedlo k
ďalším spoločnostiam a skupiny, napríklad Microsoft a Yahoo! vývoj vlastných
JavaScriptových kódov knižnice používateľského rozhrania, ktoré sa dostanú do
vyvinutých webových aplikácií týmito spoločnosťami. Niektoré knižnice JavaScriptu
umožňujú ľahšiu integráciu JavaScriptu s inými technológiami pre vývoj webových
aplikácií, ako sú CSS, PHP, Ruby a Java. Mnoho knižníc obsahuje kód na zisťovanie
rozdielov medzi runtime prostrediami, a odstrániť potrebu aplikácií, ktoré by umožňovali
takéto nezrovnalosti. Takmer všetky knižnice JavaScriptu sa vydávajú buď pod
copycentrom alebo copyleftom licenciu na zabezpečenie bezlicenčnej distribúcie,
používania a úprav.
AI.1.5. Synchrónny a asynchrónny prenos dát pomocou HTTP a ich výhody a nevýhody. Čo
je AJAX a aké má kľúčové prvky (xmlhttprequest object a jeho stavy).
Princíp:
Synchronný prenos dát znamená, že klient (napr. webový prehliadač) očakáva, že dostane
odpoveď od servera predtým, ako pokračuje ďalšou činnosťou.
Po odoslaní požiadavky na server klient čaká na odpoveď, ktorá môže byť zvyčajne
spracovaná okamžite alebo do zreteľného časového intervalu.
Princíp:
Asynchrónny prenos dát umožňuje klientovi odoslať požiadavku na server a pokračovať
ďalšou činnosťou bez čakania na odpoveď.
Po odoslaní požiadavky klient môže pokračovať v práci a následne spracovať odpoveď, keď
ju dostane.
63
Nevýhody asynchrónneho prenosu:
Komplexnejšia implementácia: Asynchrónne prenosy vyžadujú komplexnejšiu
implementáciu, pretože klient musí byť schopný riadiť viacero požiadaviek naraz a správne
spracovať ich odpovede.
Ťažšia logika riadenia: Riadenie asynchrónnych požiadaviek môže byť zložitejšie, pretože
klient musí správne sledovať stav každej požiadavky a zabezpečiť, aby boli odpovede
správne spracované.
Oba typy prenosu majú svoje výhody a nevýhody a ich vhodnosť závisí od konkrétnych
požiadaviek aplikácie a preferencií vývojára. Synchronný prenos je často jednoduchší na
implementáciu a použitie vo väčšine prípadov, zatiaľ čo asynchrónny prenos sa často
uprednostňuje v prípadoch, keď je potrebné dosiahnuť vyššiu výkonnosť a efektívnosť.
Ajax (skratka pre asynchrónny JavaScript a XML) je skupina vzájomne súvisiace techniky
vývoja webu používané na strane klienta na vytváranie asynchrónnych webové aplikácie.
Vďaka Ajaxu môžu webové aplikácie odosielať údaje do a načítať dáta zo servera
asynchrónne (na pozadí) bez zasahovania so zobrazením a správaním existujúcej stránky.
Dajú sa načítať údaje pomocou objektu XMLHttpRequest. Napriek uvedenému názvu
použitie XML nie je povinné (namiesto nich sa často používa JSON. Pozri AJAJ) a
požiadavky nie sú potrebné byť asynchrónny. Ajax nie je jediná technológia, ale skupina
technológií. HTML a CSS môžu byť použité v kombinácii na označenie a štýlové
informácie. DOM je prístupný s JavaScriptom na dynamické zobrazenie a umožnenie
používateľovi komunikovať s predložené informácie. JavaScript a objekt XMLHttpRequest
poskytujú a metóda asynchrónnej výmeny údajov medzi prehliadačom a serverom do
vyhnúť sa opätovnému načítaniu celej stránky.
Termín Ajax začal predstavovať širokú skupinu webových technológií, ktoré môžu sa používa na
implementáciu webovej aplikácie, ktorá komunikuje so serverom v serveri na pozadí, bez
zásahu do aktuálneho stavu stránky. V článku ktorý zaviedol výraz Ajax, vysvetlil Jesse
James Garrett nasledujúce technológie sú zapracované:
•• HTML (alebo XHTML) a CSS na prezentáciu
•• Objektový model dokumentu (DOM) na dynamické zobrazovanie a interakciu s údajmi
•• XML na výmenu údajov a XSLT na jeho manipuláciu
•• Objekt XMLHttpRequest pre asynchrónnu komunikáciu
•• JavaScript na spojenie týchto technológií
Odvtedy však došlo k mnohým vývojom v oblasti technológií použitý v aplikácii Ajax a pri
definícii pojmu Ajax.
XML sa nevyžaduje na výmenu údajov, a preto sa XSLT nevyžaduje pre server manipulácia s
údajmi. JavaScript Object Notation (JSON) sa často používa ako alternatívny formát na
výmenu údajov, aj keď iné formáty, napríklad predformátované Možno použiť aj formát
HTML alebo obyčajný text. Asynchrónne HTML a HTTP (AHAH) zahŕňajú použitie
XMLHTTPRequest na získanie (X) fragmentov HTML, ktoré sa potom vložia priamo do
webu stránke.
AI.1.6. Jazyk XML, jeho syntax, využitie. Definujte, čo je DTD, SCHEMA a XSLT. Uveďte
aspoň dva značkovacie jazyky vychádzajúce z jazyka XML.
XML – Extensible Markup Language (XML) je značkovací jazyk, ktorý definuje množinu
pravidiel pre kódovanie dokumentov vo formáte, ktorý je čitateľný pre človeka aj pre stroj.
Je definovaná v špecifikácii XML 1.0, ktorú vypracovala W3C, a niekoľkých ďalších
súvisiacich špecifikáciách, čo sú všetky otvorené otvorené štandardy. Ciele návrhu XML
kladú dôraz na jednoduchosť, všeobecnosť a použiteľnosť cez internet. Jedná sa o textový
dátový formát so silnou podporou jazykov sveta pomocou Unicode. Aj keď sa návrh XML
64
zameriava na dokumenty, často sa používa na reprezentáciu ľubovoľných dátových
štruktúr, napríklad vo webových službách. Bolo vyvinutých veľa aplikačných
programovacích rozhraní (API), ktoré majú vývojárom softvéru pomôcť pri spracovaní
údajov XML, a existuje niekoľko schémových systémov, ktoré uľahčujú definíciu jazykov
založených na XML. Od roku 2009 byly vyvinuty stovky formátov dokumentu
využívajúcich syntax XML, včetně RSS, Atom, SOAP a XHTML. Formáty založené na
XML sa stali predvolenými pre mnoho nástrojov na zvýšenie produktivity v kancelárii,
vrátane Microsoft Office (Office Open XML), OpenOffice.org a LibreOffice
(OpenDocument) a Apple iWork. XML sa tiež použil ako základný jazyk pre komunikačné
protokoly, napríklad XMPP. XML bolo navrhnuté na prenos údajov, nie na zobrazovanie
údajov. Značky XML nie sú preddefinované. Musíte si definovať svoje vlastné značky.
XML je koncipovaný tak, aby popisoval každý sám seba. Je dôležité si uvedomiť, že XML
nenahrádza HTML. Vo väčšine webových aplikácií sa na prenos údajov používa XML,
zatiaľ čo HTML na formátovanie a zobrazenie údajov. Príklad údajov XML:
<?xml version=”1.0” encoding=”ISO-8859-1”?>
<note>
<to>Someone</to>
<from>Me</from>
<heading>Example</heading>
<body>Example of XML document!</body> </note>
Pravidlá syntaxe XML sú veľmi jednoduché a logické. Pravidlá sa dajú ľahko naučiť, a ľahko
použiteľný.
•• Všetky prvky XML musia mať uzatváraciu značku
•• V značkách XML sa rozlišujú veľké a malé písmená
•• Prvky XML musia byť správne vnorené
•• Dokumenty XML musia mať koreňový prvok
•• Niektoré špeciálne znaky (<,>, &, ‘,”) musia byť nahradené entitou
•• Všetky atribúty musia byť správne citované DTD a schéma Definícia typu dokumentu (DTD) je
sada deklarácií značiek, ktoré definujú a typ dokumentu pre značkovací jazyk rodiny SGML
(SGML, XML, HTML). DTD používa stručnú formálnu syntax, ktorá presne deklaruje,
ktoré prvky a môžu sa zobraziť odkazy, kde v dokumente konkrétneho typu a čo obsah a
atribúty prvkov sú. DTD môže tiež vyhlásiť subjekty, ktoré sa môžu použiť v dokumente
inštancie.
XML používa podmnožinu SGML DTD. Od roku 2009 novšie jazyky schémy podporujúce priestor
názvov XML (napríklad W3C XML Schéma a ISO RELAX NG) do značnej miery
nahradili DTD. Mená verzia DTD sa vyvíja ako časť 9 ISO DSDL. DTD pretrvávajú v
aplikáciách, ktoré vyžadujú špeciálne publikovacie znaky, ako sú XML a Odkazy na entity
znakov HTML, ktoré boli odvodené z väčších množín definované ako súčasť štandardného
úsilia ISO SGML. DTD je spojená s dokumentom XML alebo SGML pomocou dokumentu
deklarácia typu (DOCTYPE). DOCTYPE sa objaví v syntaktickej podobe fragment
doctypedecl blízko začiatku dokumentu XML. Vyhlásenie zisťuje, že dokument je
inštanciou typu definovaného odkazom DTD. DTD vydávajú dva druhy vyhlásení:
•• voliteľná externá podmnožina
•• voliteľná interná podskupina
Vyhlásenia v internej podmnožine tvoria súčasť DOCTYPE v dokumente sám. Vyhlásenia v
externej podmnožine sa nachádzajú v samostatnom texte spis. Na externú podmnožinu je
možné odkazovať prostredníctvom verejného identifikátora a / alebo systému identifikátor.
Programy na čítanie dokumentov nemusia byť potrebné na čítanie dokumentu externá
podmnožina. Jednou z nich je schéma XML, publikovaná ako odporúčanie W3C v máji
2001 niekoľkých jazykov schémy XML. Bol to prvý samostatný jazyk schémy pre XML
na dosiahnutie stavu odporúčania W3C. Kvôli zmätku medzi schémou XML ako
65
konkrétnou špecifikáciou W3C a jej použitím pojem, ktorý všeobecne popisuje niektoré
jazyky schémy, niektoré časti komunity používateľov označoval tento jazyk ako WXS
(W3C XML Schema), inicializmus pre W3C Dokumenty schémy sú usporiadané podľa
menného priestoru: všetky pomenované komponenty schémy patrí do cieľového priestoru
mien a cieľový priestor mien je vlastnosťou dokument schémy ako celok. Dokument
schémy môže obsahovať inú schému dokumenty pre rovnaký priestor mien a môže
importovať dokumenty schémy pre a iný menný priestor.
Hlavné komponenty schémy sú:
•• Deklarácie prvkov, ktoré definujú vlastnosti prvkov. Tie obsahujú názov prvku a cieľový menný
priestor.
Dôležitou vlastnosťou je typ prvku, ktorý obmedzuje, aké atribúty a deti môže prvok obsahovať
mať. V XSD 1.1 môže byť typ prvku podmienený hodnotami jeho atribúty. Prvok môže
patriť do substitučnej skupiny; ak prvok E je v substitučnej skupine prvku H, potom všade,
kde to schéma umožňuje Ak sa objaví H, na jeho mieste sa môže zobraziť E. Prvky môžu
mať obmedzenia integrity:obmedzenia jedinečnosti určujúce, že konkrétne hodnoty musia
byť jedinečné v rámci podstromu zakoreneného v prvku a referenčné obmedzenia určenie,
že hodnoty sa musia zhodovať s identifikátorom iného prvku. Element deklarácie môžu byť
globálne alebo lokálne a umožňujú používať rovnaký názov pre nesúvisiace prvky v
rôznych častiach dokumentu inštancie.
•• Deklarácie atribútov, ktoré definujú vlastnosti atribútov. Opäť vlastnosti zahrňte názov atribútu
a cieľový menný priestor Typ atribútu obmedzuje hodnoty, ktoré môže atribút nadobúdať.
Deklarácia atribútu môže zahŕňajú aj predvolenú hodnotu alebo pevnú hodnotu (ktorá je
potom jedinou hodnotou môže trvať).
•• Jednoduché a zložité typy. Tieto sú popísané v nasledujúcej časti.
•• Definície modelovej skupiny a skupiny atribútov. V zásade ide o makrá: pomenované skupiny
prvkov a atribútov ktoré možno opakovane použiť v mnohých rôznych formách definície
typov.
•• Použitie atribútu predstavuje vzťah komplexného typu a atribútu vyhlásenie a označuje, či je
atribút povinný alebo voliteľný keď sa používa v tomto type.
•• Častica prvku podobne predstavuje vzťah komplexného typu a deklarácia prvku a označuje
minimálny a maximálny počet koľkokrát sa prvok môže objaviť v obsahu. Rovnako ako
častice prvkov,modely obsahu môžu obsahovať častice modelovej skupiny, ktoré fungujú
ako iné terminály v gramatike: definujú jednotky výberu a opakovania v rámci postupnosť
povolených prvkov. Ďalej sú povolené zástupné častice, ktoré umožňujú súbor rôznych
prvkov (možno akýkoľvek prvok, ak je v určitom mennom priestore). Medzi ďalšie
špecializovanejšie komponenty patria anotácie, tvrdenia, notácie,
XSLT (Extensible Stylesheet Language Transformations) [31] je jazyk
na transformáciu dokumentov XML do iných dokumentov XML alebo iných objektov ako je
HTML pre webové stránky, obyčajný text alebo do formátovacích objektov XSL, ktoré
potom možno previesť na PDF, PostScript a PNG.
Pôvodný dokument sa nezmení; nový dokument sa vytvorí skôr o obsahu existujúceho. Vstupnými
dokumentmi sú zvyčajne súbory XML, ale čokoľvek, z čoho môže procesor zostaviť dáta
XQuery a XPath
Možno použiť model [32], napríklad tabuľky relačnej databázy, alebo geografické informačné
systémy.
XSLT je Turingov úplný jazyk, čo znamená, že môže určiť akýkoľvek výpočet ktoré môže vykonať
počítač.
Vo svojom jadre má XSLT jednoduchý prípad použitia: vziať existujúci dokument XML a
transformovať do iného formátu. Nový formát môže byť XML, HTML alebo iba obyčajný text,
napríklad súbor s hodnotami oddelenými čiarkami (CSV). Toto je mimoriadne spoločný
scenár. Jedným z hlavných dôvodov XML je mať zariadenie na ukladanie údaje v
66
neutrálnom prezentačnom a aplikačne neutrálnom formáte, aby ich bolo možné ľahko
vykonaťznovu použité. XSLT sa používa v dvoch bežných situáciách:
•• Prevod XML do formátu špecifického pre prezentáciu, napríklad HTML.
•• Konverzia z formátu, ktorému rozumie jedna aplikácia, do štruktúry vyžaduje iný. Toto je
obzvlášť bežné pri výmene údajov medzi rôznymi organizáciami.
Odkedy bol XSLT pôvodne koncipovaný, rozrástol sa a teraz má tiež svoje schopnosti na
spracovanie súborov iných ako XML, takže si môžete vziať súbor vo formáte obyčajného
textu a transformovať ho do XML alebo iný formát. Procesor XSLT prijíma jeden alebo
viac zdrojových dokumentov XML a jeden alebo viac viac modulov šablón so štýlmi XSLT
a spracuje ich na vytvorenie výstupného dokumentu. Šablóna so štýlmi XSLT obsahuje
zbierku pravidiel šablón: pokyny a ďalšie smernice, ktoré usmerňujú procesor pri výrobe
výstupu dokument. Jazyk XSLT je deklaratívny: namiesto vypisovania imperatívnej
sekvencie znakov akcie, ktoré sa majú vykonať v stavovom prostredí, pravidlá šablón
určujú iba ako spracovať uzol zodpovedajúci konkrétnemu vzoru podobnému XPath, ak by
to procesor mal náhodou sa s jedným stretnete a obsah šablón účinne obsahuje funkčné
výrazy, ktoré priamo reprezentujú ich hodnotenú formu: výsledok strom, ktorý je základom
výstupu procesora. Procesor postupuje podľa pevne stanoveného algoritmu: za
predpokladu, že šablóna so štýlmi už bola prečítané a pripravené, procesor vytvorí zo
vstupného dokumentu XML zdrojový strom. Potom to začne spracovaním koreňového uzla
zdrojového stromu a nájdením v šablóna so štýlmi najlepšie zodpovedajúca šablóna pre
daný uzol a hodnotenie šablóny ‘ s obsahom.
Pokyny v každej šablóne všeobecne smerujú na procesor buď na vytvorenie uzlov vo strome
výsledkov, alebo na spracovanie viacerých uzlov v zdroji rovnakým spôsobom ako
koreňový uzol. Výstup je odvodený zo stromu výsledkov.
67
•Výroba-ručnávýroba-manufaktúry-zapomocinovýchzdrojovenergie(hlavne uhlie,voda). Deľba
práce a silný rozvoj industrializácie.
•Zmeny-spoločenské, kultúrne a politické
•Významné vedecké a technologické objavy(hlavne pohony) •Parný stroj je symbolom
prvejpriemyselnejrevolúcie.
Druhá priemyselná revolúcia (Priemysel 2.0) -obdobie elektrifikácie a motorizácie.
Začiatokonecelýchstorokovneskôr-vroku1870.
Charakteristika-
masovávýroba(novádeľbapráce)zapomocielektrickejenergie,jepretotoobdobiesymbolom.
•Elektrina-osvetlenie,pohonstrojov,automobilov,električiekkinematografia,
•Vynálezy(T.Edison-žiarovkavroku1879,N.Tesla,F.Křižík,A.Jedlík)
•Prvá elektrotechnická továreň(Emil Kolben)
•Automobilový priemysel začiatok–prvé továrne(linky)
Tretia priemyselná revolúcia (Priemysel 3.0) – obdobie digitalizácie, automatizácie a robotizácie
Rok1969zrodtretejpriemyselnejrevolúcieapretotoobdobiejecharakteristickýpríchodmikroprocesor
ovavyužitiapočítačo vnariadenie(DDC).
•Automatizáciavýrobnasadenieelektroniky,riadiacichsystémovainformatiky,vizualizácieaslužbyp
odporujúceautomati
záciuvýroby(chemickýpriemysel,elektrárne,automobilovýaleteckýpriemysel).
•Prvé štruktúry a algoritmy riadenia strojova procesov, začiatok digitalizácie výrob (Slovnaft,
Trinecke železiarne, ChZJD, Duslo Šaľa, Nováky, Vojany, Gabčíkovo,...a pod,(SR-
RPP16,DEC,Foxboro,...).
•Vývojnovýchprogresívnychmateriálovsvysokoupevnosťouahúževnatosťouavynikajúcimifyzikáln
ymi,mechanickými ichemickýmivlastnosťami.
•Nové výrobné postupy(aditívnetechnológie-3Dtlač, rapid prototyping, reverzné inžinierstvo) a
široká škála internetových služieb, podpora výroby, zdieľanie informácií medzi ľuďmi.
•Alternatívnezdrojeenergiedomyaautásastávajúmalýmielektrárňamivyužívajúpresvojpohonalterna
tívnychzdrojovenergie.
•Výrobu elektriny solárnych ohrevov, fotovoltaiky, oknáobsahujúc eneviditeľné kvantovej bodky
či dômyselné fotovoltické nátery s nanočasticami.
•Novésystémyzdieľanieaprenosudát,chytrételefónyadotykovézariadenia
•Štvrtá priemyselná revolúcia Industry 4.0 (Priemysel 4.0)
Spojenie a kombinácia pokročilých výrobných technológií s informačnými technológiami, dátami
a virtuálnou realitou je hnacou silou ďalšej priemyselnej revolúcie, ktorá umožňuje lídromv
oblasti výroby kombinovať informačné technológie a procesnými technológiami
prevytváranie vysokoefektívnych výrobných procesov.
Industry4.0(Priemysel4.0)štvrtápriemyselnárevolúciajepomenovanierozsiahlychzmienprudkovstu
pujúcichdosúčasnéh
opriemyslu.Nositeľomtýchtozmienjemodernáautomatizácia,digitalizáciavýrobkov,digitali
záciaaoptimalizáciavšetkýc hpodnikových procesov, vrátane služieb.
Piliere konceptu Industry 4.0, Priemysel 4.0
1. Kyber-fyzikálne systémy
2. Internet vecí (Internet of Things)
3. Internet služieb (Cloudové služby)
4. Big dáta
5. Cloud – úložiská dát
4. Digitálna ekonomika
•Schopnosť urobiť výrobok inteligentným, a taktiež rozumieť obchodným príležitostiam, ktoré
inteligentné produkty ponúkajú. •Typickým použitím IoT sú monitorovacie a meracie smart
senzory (priemysel, poľnohospodárstvo, životné prostredie, domácnosti) Náhrada doteraz
používané zariadenia a systémy na báze mobilných sietí.
68
•Snímače, stroje, výrobky a prostriedky IT sú vzájomne prepojené a budú na seba reagovať
pomocou štandardných komunikačných protokolov, aby mohli predvídať prípadné chyby
či poruchy, konfigurovať samy seba a v reálnom čase sa prispôsobovať zmeneným
podmienkam. Internet vecí –Industry 4.0: Na internet je napojené:
-každé výrobné zariadenia,-každý výrobok (i nedokončený),-každý nosič výrobku
Jedná sa o fyzickej napojenie / HW určené na priamu komunikáciu medzi fyzickými systémami.
Internet služieb -Industry 4.0 :
-každé zariadenie reprezentované SW entitou, tá si môževyvolať ľubovoľnú službu (HW
nezávislú)-prístup k ontológiám, www, k dátam v cloudoch či iných
úložiskách-môže bežať na rovnakom fyzickom procesore, ale aj na úplne inom
Cloud Computing „pojem“ pre
využívaniesoftvérualebohardvéruformouslužiebprostredníctvominternetu. V súčasnosti
jeden z najdôležitejších trendov tejto oblasti, na ktorý prechádzajú aj najväčší
poskytovatelia podnikových softvérových služieb
Smart fabrika v ére Industry 4.0 -tri kľúčové komponenty:
•prvý-vybavenie procesov snímačmi (smart) ktoré neustále automaticky zbierajú dáta zo strojov,
zariadení, výrobných pásov, skladov, materiálov a iných komponentov vo výrobe.
•druhý-komunikačná infraštruktúra, cez ktorú dokážu stroje komunikovať medzi sebou, s ľuďmi,
aj s rôznymi IT systémami.
•tretí-využívanie softvéru ktorý dokáže všetky dáta nielen zhromažďovať, ale následne ich aj
vyhodnocovať, analyzovať a vyvodzovať z nich závery. Inými slovami, SW vnáša do
zhluku dát inteligenciu a poriadok.
69
Optimálna štruktúra a optimálne parametre modelu sa hľadajú (odhadujú) podľa kritéria, ktoré
vyjadruje najlepšiu mieru zhody medi identifikovaným systémom a jeho modelom.
Štruktúra identifikovaného systému pomocou matematického modelu je realizovaná
matematickým opisom vyjadrujúcim podstatné vlastnosti identifikovaného systému.
Metódy identifikácie systému môžeme rozdeliť do dvoch základných skupín:
✓ identifikácia systému na základe znalosti fyzikálnych, chemických, ekonomických a
biologických zákonov vyjadrujúcich chovanie sa procesu. Matematický model je vyjadrený
prostredníctvom algebraických, diferenciálnych, diferenčných rovníc, prenosových funkcií
v s-z oblasti, fuzzy množinami, neurónovými sieťami, resp kombináciou uvedených opisov.
✓ identifikácia systému na základe meraní (experimentov) vstupov a výstupov a merateľných
porúch). Matematický model, ktorý takto vznikne môže byť parametrický a
neparametrický.
1. Parametrické modely reprezentujú také matematické modely, ktoré sa dajú opísať
prostredníctvom algebrických, diferenciálnych, diferenčných rovníc, prenosových funkcií
v s-z oblasti.
2. Neparametrické modely reprezentujú taký druh matematických modelov pri ktorých sa
identifikáciou neodhadujú parametre systému. Medzi takéto modely patrí napr model
reprezentovaný frekvenčnou prenosovou funkciou, prechodovou a impulznou
charakteristikou, ale aj modelmi na báze fuzzy množín, umelých neurónových sietí, resp
kombináciou metód soft computingu.
70
Predpokladáme, že máme n nameraných údajov, t.j. dvojíc: vstupná veličina, výstupná veličina.
Označme xi i-tu nameranú hodnotu vstupnej veličiny a yi i-tu nameranú hodnotu výstupnej
veličiny (zodpovedajúcu hodnote xi) .
Hľadáme teda funkčnú závislosť y = f(x) metódou najmenších štvorcov, tak, aby sme
minimalizovali súčet kvadrátov odchýlok nameraných hodnôt od “regresnej” náhrady f(x):
n 2
kritérium
E= yi − f (xi ) → min
i=1
Meran é údaje Modelované údaje – hľadaný matem.model obsahuje neznáme parametre modelu
71
reprezentovaný frekvenčnou prenosovou funkciou, prechodovou a impulznou
charakteristikou, ale aj modelmi na báze fuzzy množín, umelých neurónových sietí, resp
kombináciou metód soft computingu.
72
AI.2.5. Modelovanie a simulácia výrobných procesov a výrobných liniek . Klasifikácia
výrobných procesov podľa usporiadania výrobných prostriedkov.
b. Simulácia:
Lineárne výrobné linky: Procesy organizované do jedného lineárneho toku materiálu alebo
produktu.
Paralelné výrobné linky: Rôzne procesy prebiehajú súčasne, pričom každý má vlastný tok
materiálu alebo produktu.
Kombinované výrobné linky: Kombinácia lineárnych a paralelných procesov v rámci výrobného
prostredia.
73
Tecnomatix PLANT SIMULATION
• vyvinutý spoločnosťou Siemens PLM
• umožňuje modelovanie výrobných systémov, procesov, toku materiálu a logistických
operácií
• je ale samostatne fungujúcim celkom
• dostupný aj menším podnikom, ktorým sa neoplatí (či už finančne, alebo zložitosťou
výrobné procedúry) používať ostatný softvér z balíka Tecnomatix či Teamcenter.
• Ide o takzvaný DES Software (Discrete Event Simulation Software)
• analýza všetkých procesov prebieha v diskrétnom čase
• vytváranie rôznych scenárov a výber najlepšieho
• je orientovaný na už bežiaci výrobu a jej vyladenie, môžeme ho však rovnako tak využiť
ešte pred samotnou stavbou výrobnej haly.
Kľúčové vlastnosti:
• objektovo orientované modely s hierarchiou a odkazmi
• otvorená architektúra
• správa knižníc a objektov
• optimalizácia pomocou genetických algoritmov
• simulácia a analýza spotreby energie
• automatická analýza výsledkov simulácie
• tvorca HTML zostáv/reportov
• 2D a 3D prezentácie
• jazyk SimTalk pre tvorbu vlastných metód
Udávané hlavné prínosy (orientačne):
• až 6% úspory pre počiatočnú investíciu
• zvýšenie produktivity existujúceho systému až o 20%
• zníženie nákladov na nový systém až 20%
• optimalizácia spotreby prostriedkov a opakované použitie
• zníženie zásob až o 60%
• skrátenie doby priepustnosti až o 60%
• optimalizácia systémov pre zníženie spotreby energie
Frame window
• okno pre vkladanie objektov a vytváranie schematického modelu pre simuláciu
Modelovanie:
• Objektovo orientovaný softvérový nástroj
• Proces výroby je modelovaný za pomoci objektov
• znázorňujú celé stroje, ich časti, pracovníkov, dopravníky a ďalšie zariadenia
• obmedzený počet základných objektov
• Ak sa nedá proces popísať dostupnými objektami, musíme ho dekomponovať o
zjednodušenie na podsystémy
74
Adresovanie
• Hierarchická štruktúra umožňuje jednoduché a presné adresovanie za pomoci bodkovej
notácie
• Každý objekt špecifikujú jeho vlastnosti napr. pre robot: rýchlosť, spotreba, procesný čas,
poruchy atď.
• Vlastnosti sa nazývajú atribúty
• Každý atribút má svoj názov (attribute type) a hodnotu (attribute value)
• K atribútom pristupujeme rovnakým spôsobom ako k objektom a zahŕňame ich na konci
adresy
Triedy
• Základným prvkom objektovo orientovaných programovacích jazykov je trieda (class)
• Umožňuje definovanie a vytváranie vlastných objektov, niektoré vlastnosti a určité
správanie
• Ak chceme použiť nový objekt, bez nadväznosti na už existujúce objekty, vytvoríme pre
neho novú triedu o Nadefinujeme jeho vlastnosti a získame nový dátový typ
• využívame jednotlivé inštancie tejto našej triedy, čo sú už konkrétne objekty, ktoré majú
rovnaké základné vlastnosti (atribúty) ako trieda a niektoré špecifické vlastnosti inštancie
(napríklad meno).
Dedičnosť
• Možnosťou, ako vytvoriť novú triedu, je využitie dedičnosti
• Dedením dostaneme podtriedu (subclass) odvodenú od už existujúcej triedy
• Prevezmú sa vlastnosti ale užívateľ ich môže zmeniť bez zmeny pôvodnej
• Výhoda pri tvorbe objektov s mierne odlišnými vlastnosťami
• Netreba potom vytvárať tiredy od základu
Objekty- triedy
• Štandardnej triedy (objekty) môžeme deliť do šiestich kategórií:
• material flow objects
• resources
• information flow objects
• user interface/statistics objects
• mobile units
• general objects
• User interface/ statistics objects
• Pravdepodobnostné distribúcie
• Exit Strategy
• Modelovanie jednoduchého výrobného postupu
3. Projektový manažment
AI.3.1. Popíšte fázy projektu pre klasický prístup. Vysvetlite zdroje a závislosti úloh v
projekte, význam míľnikov v projekte.
Klasický prístup k riadeniu projektov je založený na lineárnom a sekvenčnom modeli vývoja, kde
sa projekt delí na fázy, pričom každá fáza má presne definované ciele a výstupy. Tu sú
typické fázy projektu:
Inicializácia:
V tejto fáze sa identifikujú potreby a ciele projektu. Definuje sa jeho rozsah, zdroje, časový
plán a rozpočet. Taktiež sa vytvára tímová štruktúra a určujú sa zodpovednosti jednotlivých
členov tímu.
75
Plánovanie:
V tejto fáze sa detailne plánujú všetky aktivity, ktoré je potrebné vykonať na dosiahnutie
cieľov projektu. To zahŕňa stanovenie časových a finančných odhadov, identifikáciu rizík
a ich riadenie, alokáciu zdrojov a stanovenie postupu a metodík práce.
Vykonať:
Po schválení plánu sa projekt začne realizovať. Aktivity sú vykonávané podľa stanoveného
harmonogramu a kontroluje sa dodržiavanie stanovených noriem a postupov.
Kontrola a monitorovanie:
Počas celej realizácie projektu sa pravidelne kontroluje stav a pokrok práce. Monitorujú sa
časové a finančné plány, riešia sa vzniknuté problémy a zabezpečuje sa dodržiavanie kvality
a štandardov.
Dokončenie a overenie:
V tejto fáze sa dokončujú všetky aktivity a výstupy projektu. Sú overené a overené, či spĺňajú
požiadavky a ciele definované v iniciálnej fáze projektu.
Medzník (Míľnik, Milestone) je obvykle úloha s kratšou dĺžkou trvania, slúžiace k označovaniu
významných miest v projekte, v PRINCE2 je to proces Riadenie hraníc etapy.
Pri míľniku projektu kontrolujeme plnenie jednotlivých súhrnných úloh danej etapy a kontrola
odovzdania úloh v etape (PRINCE2 jednotlivé pracovné balíky WP). Dôležité sú merateľné
ukazovatele projektu, ktoré sa v míľniku kontrolujú. Vysvetlite obrázok pre WP v etape a zelený
proces Riadenie hraníc etapy.
76
AI.3.2. Vysvetlite pojem Časová os projektu, Ganttov diagram a Baseline. Aký je rozdiel
medzi klasickým a agilným prístupom.
Časová os pomáha informovať investora (kľúčových riešiteľov projektu) o celkovom stave
projektu s
hlavnými úlohami (etapami) a medzníkmi (Riadením medzi etapami), ktoré je dobré vidieť v
časovom horizonte riešenia projektu. Význam je pri kontrole a ukončení projektu s porovnaním s
pôvodným plánom projektu a jej časovej osi.
Ganttov diagram je typ grafu, ktorý ilustruje harmonogram projektu, pomenovaný podľa H.
Gantta,
ktorý tento graf vytvoril. Ganttov diagram zobrazuje úlohy; vzťahy závislostí medzi úlohami,
priradené
zdroje a aktuálny stav plnenia projektu k pôvodnému plánu. Všetky informácie sú zobrazené v
mierke
časovej osi. Programy umožňujú meniť mierku časovej osi pre Ganttov diagram. Vysvetlite
obrázok,
kde sú etapy a medzníky (míľniky).
77
Dôležitou časťou projektu je zostavenie (plánovanie), ktoré obsahuje údaje, kedy má každá úloha
začať, ako dlhú dobu každá úloha bude trvať, vzájomné prepojenie úloh a dátum ukončenia
celého projektu. Plán projektu môže tiež obsahovať údaje o využití projektových zdrojov a ich
nákladoch (finančný plán projektu). Pre začiatok projektu nastavujeme pôvodný plán „Baseline“
začiatok realizácie projektu, vzhľadom ku ktorému sa robí porovnávanie pokroku v projekte
počas riešenia (sledovania) projektu. V metodike PRINCE2 Začiatok realizácie projektu je až po
etape Predprojektovej príprave a Inicializačnej etape.
AI.3.3. Popíšte etapy projektu z hľadiska agilného prístupu, aké role rozoznáva Scrum, načo
slúži Produktový Backlog.
Agilný prístup k riadeniu projektov sa líši od klasického prístupu tým, že zdôrazňuje iteratívny a
inkrementálny prístup k vývoju, čo umožňuje pružnosť a schopnosť prispôsobiť sa zmenám
v priebehu projektu. Tu sú typické etapy projektu z hľadiska agilného prístupu:
Iniciácia:
V tejto fáze sa identifikujú potreby a ciele projektu. Stanovuje sa vytváraním produktov,
definujú sa základné požiadavky a určuje sa spôsob, ako tieto požiadavky budú plnené.
Agilný prístup zdôrazňuje spoluprácu s klientom a zainteresovanými stranami už v tejto
rannej fáze, aby sa lepšie pochopili ich potreby a očakávania.
78
Vývoj a implementácia:
Počas každej iterácie tímy pracujú na vývoji a implementácii funkcionality, ktorá bola
identifikovaná ako najdôležitejšia pre danú fázu projektu. Tímy sa stretávajú na
pravidelných stotožneniach (napríklad denných scrumových stretnutiach), aby prezentovali
pokrok, zdieľali informácie o prekážkach a plánovali ďalšie kroky.
Overenie a hodnotenie:
Po každej iterácii sa vykonáva overenie a hodnotenie funkcionality vytvorenej tímom. To
zahŕňa testovanie, kontrolu kvality a hodnotenie dosiahnutého pokroku voči cieľom
projektu. Zákazník alebo zainteresované strany sú často zapojené do tohto procesu, aby
poskytli spätnú väzbu a overili, či je vytvorená funkcionalita uspokojivá.
Opakovanie a zdokonaľovanie:
Na základe spätnej väzby a výsledkov overenia a hodnotenia tímy opakovane iterujú cez
cyklus vývoja. Každá iterácia poskytuje príležitosť na zdokonalenie procesov, zvýšenie
efektivity a prispôsobenie sa novým požiadavkám alebo zmenám v priebehu projektu.
Agilný prístup k riadeniu projektov umožňuje flexibilný a adaptívny prístup k vývoju produktu
alebo služby, čo umožňuje rýchlejšiu reakciu na zmeny požiadaviek alebo podmienok trhu.
Taktiež podporuje silnú spoluprácu medzi členmi tímu a zákazníkom, čo vedie k lepšiemu
porozumeniu požiadaviek a lepšiemu výsledku projektu.
SCRUM rozoznáva 3 hlavné role Scrum tímu. Scrum Tím sa skladá z Produktového Vlastníka (z
angl. Product Owner), Vývojového Tímu a Scrum Mastra (z angl. Scrum Master). Scrum Tím
dodáva
Prírastky produkty v iteráciách, čím sa získava väčšia spätná väzba pri vývoji produktu.
Používatelia a akcionári sú nepovinné role, ktorí sa zúčastňujú sprostredkovane.
79
AI.3.4. Čo riešime počas Šprintu, Šprint Review a Retrospektíve Šprintu. Ako dlho obvykle
sa plánuje Šprint a prečo.
Šprint sa skladá z Plánovania Šprintu, Denného Scrumu (vývoja), Šprint Review a Retrospektíva
Šprintu. Šprint je časovo ohraničený na menej ako jeden mesiac, počas ktorého je vytvorený
použiteľný Prírastok produktu "HOTOVÝ". Počas Denného Scrumu sa robí denne kontrola úloh a
navrhuje ďalší postup. Na záver celého Šprintu, Šprint Review sumarizuje prácu Šprintu a
Retrospektíva Šprintu navrhuje zlepšenia postupu.
Šprint Review sa vyznačuje nasledovnými prvkami: Scrum Tím prediskutuje spoločne prípadne
so zainteresovanými stranami (používatelia a akcionári), aby sa prehodnotili položky
Produktového Backlogu či sú "HOTOVÉ". Vývojový Tím diskutuje o tom, aké boli problémy a
ako sa vyriešili. V závere Tím demonštruje Prírastok za účelom získania spätnej väzby. Na základe
toho sa vykonajú zmeny v Produktovom Backlogu pre ďalší Šprint.
Retrospektíva Šprintu ponúka príležitosť pre Scrum Tím, aby sa sám skontroloval a pripravil plán
zlepšení, ktoré zavedie v nasledujúcom Šprinte. Účelom Retrospektívy Šprintu je zhodnotiť dobré,
identifikovať možné zlepšenia a vytvoriť plán vylepšení spôsobu práce Scrum Tímu. Hlavnú úlohu
má Scrum Master aby bol míting vedený v pozitívnom a produktívnom duchu.
Plánovanie Šprintu odpovedá na 2 základné otázky: 1. Čo môže byť dodané v rámci Prírastku tohto
Šprintu (Cieľ). Produktový Vlastník popisuje Cieľ Šprintu a položky Produktového Backlogu,
ktorými by sa dosiahol Cieľ Šprintu. Celý Scrum Tím spolupracuje na tom, aby porozumel prácam,
ktoré bude v Šprinte vykonávať. 2. Akým postupom budú práce urobené na dodanie Prírastku.
Vývojový Tím sa sám rozhoduje, ako počas Šprintu vytvorí Prírastok produktu. Vybrané položky
Produktového Backlogu pre Šprint s plánom ich dodania sa nazýva Šprint Backlog. Popíšte
obrázok.
80
AI.3.5. Definujete ERP aplikácie. Vymenujte hlavné funkčné oblasti ERP systémov. Popíšte
architektúru ERP. Definujte CRM a SCM systémy.
81
ERP
Prevádzkové princípy ERP:
• Transakcia v jednom module môže generovať akciu v inom
module (napr. predaj tovarov alebo príjem tovaru má dopad na
finančný tok spoločnosti),
• Transakcie sú navzájom konzistentné a vzájomne kontrolované (napr. kontrola dod. listov na
základe zmeny tovarov v sklade)
• Je možné kontrolovať priebeh funkcií jednotlivých modulov a tým dohľadať dôsledky a príčiny
jednotlivých modulov
(napr. v účtovnej knihe je možné dohľadať faktúru alebo prijatú
platbu na základe faktúry)
ERP
Prevádzkové princípy ERP:
• Transakcia v jednom module môže generovať akciu v inom
module (napr. predaj tovarov alebo príjem tovaru má dopad na
finančný tok spoločnosti),
• Transakcie sú navzájom konzistentné a vzájomne
kontrolované (napr. kontrola dod. listov na základe zmeny
tovarov v sklade)
• Je možné kontrolovať priebeh funkcií jednotlivých modulov
a tým dohľadať dôsledky a príčiny jednotlivých modulov
(napr. v účtovnej knihe je možné dohľadať faktúru alebo prijatú
platbu na základe faktúry)
82
• Výroba
• Riadenie dodávateľského reťazca (Supply Chain Management
– SCM)
• Riadenie vzťahov so zákazníkmi (Customer Relationship
Management - CRM)
AI.3.6. Vymenujte hlavné funkcie CRM systémov. Uveďte formy a možnosti elektronického
podnikania a základné funkcie (e-business, e-Governance, e-Marketing, e-learning).
83
zvyšovanie spokojnosti už získaných zákazníkov => nadviazať silné
vzťahy so zákazníkmi, vybudovať lojalitu zákazníkov a v konečnom
dôsledku zvýšiť predaj a zisky.
CRM môže byť chápané 2 spôsobmi:
1. Business Intelligence – rôzne pohľady na dáta v databáze na základe
KPI
2. Compliant Management – manažment sťažností (hotline / chat)
e-Business
Za elektronické podnikanie (e-Business) môžeme chápať transakcie a operácie (nákup a predaj) produktov
a služieb (podnikateľské procesy), ktoré sa uskutočňujú elektronickou formou s využitím informačných
technológií a systémov.
„Elektronické podnikanie (e-business) predstavuje oblasť informatiky, ktorá v sebe zahrňuje súhrn a
podporu procesov a vzťahov medzi obchodnými partnermi, spolupracovníkmi a koncovými zákazníkmi,
uskutočnenými elektronickými médiami. Tieto vzťahy v sebe obsahujú elektronicky realizovanú výmenu
informácií, produktov, služieb a finančných transakcií.“
84
B2C (Business to Customer) – elektronicky realizovaný vzťah medzi firmou a koncovým spotrebiteľom
(napr. elektronické bankovníctvo, zákaznícky servis, atď.),
• B2B (Business to Business) – elektronicky realizovaný obchodný vzťahmi medzi dvoma firmami –
elektronická výmena štruktúrovaných dát (objednávky, faktúry, provízie, klienti, atď.)
• B2G (Business to Government) – elektronicky realizovaný obchodný vzťah medzi podnikateľskými
subjektami a orgánmi štátnej správy a samospráv.
B2E (Business to Employee) – elektronicky realizovaný vzťah medzi podnikateľskými subjektami a ich
zamestnancami (komunikácia – email, chat, zdieľanie dokumentov, atď.).
• B2R (Business to Reseller) – elektronicky realizovaný vzťah medzi podnikom a obchodnými
zástupcami.
• C2G (Customer to Government) – elektronický vzťah medzi koncovými používateľmi (koneční
spotrebitelia) a orgány štátnej správy (napr. platba daní, zmena v evidencií – kataster, prechodný pobyt –
e-Slovensko, atď..).
• C2C (Customer to Customer) – elektronický vzťah medzi dvoma koncovými používateľmi
a nepodnikateľskými subjektami (napr. burzy, trhy, atď.).
elektronické aukcie (e-auction, e-aukcia) – elektronický predaj a nákup pomocou aukcií. Zákazníci môžu
byť podniky aj jednotlivci (B2B, B2C, C2B, B2G, C2C),
• elektronická fakturácia (e-invoicing, e-fakturácia) – elektronická výmena faktúr medzi firmami,
• elektronické bankovníctvo (e-banking) – aplikácia na vykonávanie bankových transakcií.
85
participáciu občanov vo verejnom rozhodovacom procese. To zahŕňa online vládne portály, elektronické
formuláre, elektronické hlasovanie, elektronické identifikácie a ďalšie nástroje na zjednodušenie
interakcie s verejnou správou.
86