Vzdelávanie

Sekcia vzdelávania ponúka články o rôznych vzdelávacích programoch, vrátane Data science kurzov a kurzov ako kurz Excel, ktoré vám pomôžu získať praktické zručnosti. Objavte najlepšie spôsoby, ako sa vzdelávať online a posunúť svoje schopnosti na vyššiu úroveň.

Konštruktory v Jave
Vzdelávanie
03.04.2020
Skillmea

Konštruktory v Jave

V tomto článku sa pozrieme, čo je to konštruktor v Jave (constructor in java). Na čo sa používa? Čo je to?  Trieda slúži na opis a výrobu objektov. Skúsme teraz porozmýšľať nad reálnym objektom – napríklad auto. Ak chceme opísať auto do programu, tak na opis auta použijeme triedu.  Čo má auto? Aké vlastnosti? Má počet dverí, značku, EČV, objem kufra a ďalších xy vecí. Nie všetky budeme používať. V našom projekte si vytvoríme novú triedu:[Image] Pomenujeme ju Auto a napíšeme tam globálne premenné. public class Auto { int doorCount; String brand; String plateNumber; }Teraz si vytvoríme objekt typu Auto. Na výrobu objektov budeme používať konštruktor. Konštruktor ako názov naznačuje slúži na skonštruovanie nového objektu. Bez toho, aby si ty sám napísal nejaký konštruktor, tak máš jeden dostupný automaticky. Tento sa volá – bezparametrický konštruktor – je to akoby metóda, ktorá na vstupe nemá parametre. Preto je možné vyrobiť nový objekt pomocou new Auto(); public class Auto { int doorCount; String brand; String plateNumber; public static void main(String[] args) { Auto auto = new Auto(); } }V programe sme použili new Auto() aj keď nič takéto nemáme napísané. Čo môžeme spraviť, je napísať si takýto konštruktor sami. public class Auto { int doorCount; String brand; String plateNumber; public Auto() { } public static void main(String[] args) { Auto auto = new Auto(); } } Do vnútra tohto konštruktoru si môžeme teraz napísať ľubovoľný kód. Konštruktory sa najčastejšie využívajú popri výrobe nového objektu aj k nastaveniu dát. Napríklad, ak chcem vyrobiť auto, ktoré je značky Škoda, tak vyrobím nový – druhý konštruktor, ktorého vstupný parameter bude práve počet dverí. Volať chceme Auto auto = new Auto(“Škoda”); public Auto(String brand) { }Čo ale spravíme s touto premennou brand, ktorú máme ako parameter? Ak pouvažujeme, tak chceme nastaviť globálnu premennú brand pre tento nový objekt. Ale ako poviem, že globálna premenná brand nech sa rovná tomu, čo je v parametry metódy brand?  Spravím to pomocou kľúčového slova this. Slovo this sa odkazuje na práve tento nový objekt, ktorý konštruujeme. Teda this sa viaže na novo vyrobený objekt z triedy Auto. Po správnosti by som mal povedať, že this odkazuje na inštanciu (instance) objektu. Pomocou konštruktoru vyrobíme novú inštanciu triedy Auto. Ak vyrobím 5 objektov, tak som vyrobil 5 inštancií triedy Auto. Takže this.brand ukazuje kam? Slovo this ukazuje na danú inštanciu objektu a cez bodku pristupujem k veciam dostupným v danej inštancii auta. Čo je tam dostupné? Teraz sú dostupné globálne premenné. Tak spravím: public Auto(String brand) { this.brand = brand; }public static void main(String[] args) { Auto auto = new Auto("Škoda"); }Po zavolaní tohto konštruktoru mám v premennej auto odkaz na objekt Auto s nastevným brand na Škoda. Takto si teraz môžem vytvárať nové inštancie typu Auto. public static void main(String[] args) { Auto auto = new Auto("Škoda"); Auto auto2 = new Auto("Škoda"); } Sú tieto dve autá rovnaké? Nie, nie sú, aj keď majú taký istý brand. Prečo? Lebo ak voláme slovíčko new, tak sa vytvára vždy úplne nový objekt v pamäti. Ukážka konštruktoru, kde nastavujeme všetky globálne premenné. V IDEI stlač ALT+Insert a vyber konštruktor – následne označ všetky premenné. Tieto premenné sa inak nazývajú aj fieldy.[Image] public Auto(int doorCount, String brand, String plateNumber) { this.doorCount = doorCount; this.brand = brand; this.plateNumber = plateNumber; } public static void main(String[] args) { Auto auto = new Auto("Škoda"); Auto auto2 = new Auto("Škoda"); Auto auto3 = new Auto(4, "Opel", "CCdddDD"); }Nové objekty môžeš vytvárať kde chceš a kedy chceš. Teraz som to robil v metóde main priamo v triede Auto. To ale samozrejme väčšinou robiť nebudeš. Viac o konštruktoroch v Jave a Java programovaní sa dozvieš v našich online kurzoch Java a OOP pre začiatočníkov a Java pre pokročilých. Ak máš nejaké otázky k tomuto blogu, napíš ich do komentárov 👇
Kolekcie v Jave
Vzdelávanie
06.03.2020
Skillmea

Kolekcie v Jave

V tomto úvodnom článku do série pokročilá java sa pozrieme na zúbok kolekciám (collections in java). Kolekcie sú akoby kontajnery, ktoré v sebe držia ďalšie objekty. Inak môžeme kolekcie chápať aj ako zoznamy. Zoznam telefónnych čísel. Zoznam osôb. Zoznam áut. Zoznam súborov. Zoznam čísiel .... Pri kolekciách budeme hovoriť o Rozhraní, Implementácii a Algoritmoch.  Java collection framework – Java sama o sebe poskytuje niekoľko kolekcií. Poskytuje nám ich implementácie a aj algoritmy na vyhľadávanie, vkladanie, triedenie a podobne. Rozhrania kolekcií v tomto frameworku sú generické. Teda umožňujú do nich vkladať rôzne typy objektov. Pamätajte, že Java je striktne typový jazyk a do premennej typu String proste int nedáš, musí tam ísť iba String. Ku generikám sa ešte dostaneme v neskoršom článku. [Image] Zoznam rozhraní Java collection frameworkuCollection – top v hierarchii, používa sa na presun kolekcii, manipuláciu kde sa požaduje aby tam prišla akákoľvek kolekcia. Do Collection môžeš vložiť akýkoľvek typ kolekcie, ktorý rozširuje túto kolekciu.  Set – nemôže obsahovať duplicity  List – zoznam, môže obsahovať duplicity, poradie elementov je zachované pomocou indexov  Queue – FIFO – first in first out, čo príde prvé do tejto kolekcie tak z nej aj prvé odíde, niektoré implementácie majú výnimky  Deque – FIFO aj LIFO (last in first out) - elementy môžu byť vkladané aj vyberané z oboch koncov  Map – object ktorý mapuje objekty k ich kľúčom, nemôže obsahovať totožné kľúče  SortedSet a SortedMap – sú vlastne zoradené Map a Set Implementácie (najpoužívanejšie sú zvýraznené boldom): SetEnumSet, HashSet, LinkedHashSet, TreeSetListArrayList, LinkedList, Stack, VectorMapEnumMap, HashMap, LinkedHashMap, TreeMapSortedSet NavigableSetTreeSetSortedMap NavigableMapTreeMapQueueLinkedList, PriorityQueue  SetNeobsahuje duplicitné elementy – lepšie povedané nemôže obsahovať duplicitné elementy.  HashSet – neuchováva poradie v akom boli elementy vložené ale pracuje najrýchlejšie  LinkedHashSet – uchováva poradie elementov v akom boli vložené  TreeSet – poradie elementov je zoradené podľa ich hodnôt, je pomalší   Majme kolekciu, ktorá obsahuje elementy, ktoré sú duplicitné. Ako z nej najrýchlejšie získame kolekciu, ktorá nemá duplicity? Collection<Type> noDups = new HashSet<Type>(c);  Funguje to tak, že z kolekcie sa vytvorí Set. A Set už z definície nemôže obsahovať duplicity. Pridanie elementov do Setu: Set<String> set1 = new HashSet<>(); String s = "e"; set1.add("element1"); set1.add("element2"); set1.add("element3"); set1.add("element4"); set1.add(s);Je element v kolekcii?  System.out.println(set1.contains("e")); //true     Odstránenie elementu z kolekcie: set1.remove(s);Prechádzanie cez Set:  Iterator i = set1.iterator(); while (i.hasNext()){ System.out.println(i.next()); }for(String s : set1) { System.out.println(s); }Spýtam sa, či všetky elementy zo set1 sú aj v set2 set1.containsAll(set2)); Odstránim z set1 všetky zhodné elementy so set2 set1.removeAll(set2);Všetko zo set2 pridám do set1 set1.addAll(set2);ListUchováva poradie elementov. Elementy sú prístupné aj pomocou indexov. Je možné do už vytvoreného Listu pridať nové elementy aj na indexy ktoré sú obsadené – elementy sa posunú. Môžeme v nich vyhľadávať indexOf a lastIndexOf. Pri Listoch si musíme dávať veľký pozor na to, aby sme nezhodili program kvôli prístupu k neexistujúcim elementom – respektíve k neexistujúcim indexom v Liste. Napríklad, máš List so 4 elementami a chceš pristúpiť k 6-temu elementu.  Základné pomocné algoritmy, špecifické ku List:  • sort — zotriedi elementy v Liste  • shuffle — náhodne pomieša elementy v Liste.  • reverse — otočí poradie elementov v Liste  • rotate — otočí poradie všetkých elementov od špecifického indexu  • swap — prehodí elementy z Listu na špecifikovaných indexoch  • replaceAll — nahradí všetky výskyty špecifikovanej hodnoty za druhú špecifikovanú hodnotu  • fill — prepíše všetky elementy v Liste za špecifikovanú hodnotu  ArrayList – prispôsobuje svoju veľkosť, základné polia museli mať špecifikovanú dĺžku pri vytvorení, nemohli rásť alebo sa zmenšovať  LinkedList – iná implementácia, rozdielu sú v časových záťažiach s rôznymi operáciami nad Listami  Pridanie elementov do Listu: List<String> list = new ArrayList<>();          list.add("list1");          list.add("list2");          list.add("list3");          list.add("list4");          list.add("list5");  Výber elementu z listu na indexy 1:         list.get(1);  Je prázdny?         list.isEmpty();  Pridaj na pozíciu 2:         list.add(2,"list2b");  Odstráň element:         list.remove("list1");           list.remove(4);  Rôzne manipulácie:         Collections.sort(list);          Collections.shuffle(list);          Collections.reverse(list);          Collections.rotate(list,2);          Collections.swap(list, 0, 1);          Collections.replaceAll(list, "list4", "new list4");          Collections.fill(list,"Jaro");  MapMapa obsahuje hodnoty viazané na kľúč. Takže to máme po anglicky key – value hodnoty. Kľúče musia byť unikátne.  HashMap – nedrží si poradie, náhodné usporiadanie  LinkedHashMap – drží poradie  Vloženie do Mapy: Map<Integer,String> map = new HashMap<>();          map.put(10,"jaro");          map.put(1,"fero");          map.put(3,"duro");          map.put(4000,"karol");          map.put(4000,"peter"); // prepise predchádzajúci element  Získame a vypíšeme hodnotu elementu s kľúčom 1:         System.out.println(map.get(1));  Prechod cez elementy Mapy:         for(Map.Entry m : map.entrySet()){              System.out.printf("key %d, value %s %n",m.getKey(),m.getValue());          }          for(Integer k : map.keySet()){              map.get(k);                  }
Kotlin vs. Java - menej kódu
Vzdelávanie
06.01.2020
Skillmea

Kotlin vs. Java - menej kódu

Kotlin a Java sú kompatibilné programovacie jazyky. V tom zmysle, že ak skompilujeme Java kód, tak sa vytvorí bytecode v súbore .class. Ak skompilujem Kotlin kód, tak sa vytvorí bytecode v súbore .class. Teda, či pracuješ v Kotline alebo v Jave, tak nakoniec budeš mať kód, ktorý si bude rozumieť a ktorý dokáže bežať tam, kde dokáže bežať JVM – java virtual machine.  V tomto článku vám chcem ukázať to, prečo bol Kotlin vytvorený – aby nám čo najviac zjednodušil písanie kódu. Predstav si, že chceš napísať triedu Auto. Tá má fieldy názov a počet dverí. Tieto fieldy budú private a final – teda po prvom nastavení ich nemôžeš zmeniť. Prístup k týmto fieldom môžeš spraviť len cez public get metódu. Zároveň, vieš zostrojiť auto tak, že mu zadáš len názov. Ak bude zadaný len názov, tak počet dverí bude automaticky 4. Ak zadáš názov a počet dverí, tak sa fieldy nastavia tak, ako sme to zadali v konštruktore. Kód v JaveTakto bude vyzerať kód napísaný v Jave: public class Auto { private final String nazov; private final int pocetDveri; public Auto(String nazov) { this(nazov,4); } public Auto2(String nazov, int pocetDveri) { this.nazov = nazov; this.pocetDveri = pocetDveri; } public String getNazov() { return nazov; } public int getPocetDveri() { return pocetDveri; } }Najprv máme dva privátne final fieldy: private final String nazov; private final int pocetDveri;Potom konštruktor, ak chcem vytvoriť objekt auto len pomocou názvu: public Auto2(String nazov) { this(nazov,4); } Konštruktor, ak chcem vytvoriť auto a nastaviť názov a počet dverí: public Auto2(String nazov, int pocetDveri) { this.nazov = nazov; this.pocetDveri = pocetDveri; }A nakoniec get metódy, aby sme mali prístup k daným fieldom: public String getNazov() { return nazov; } public int getPocetDveri() { return pocetDveri; }Ako to spravím v Kotline?Potrebujem tento kód: class Auto (val nazov: String, val pocetDveri: Int = 4) { }To je všetko, tých 20 riadkov v Jave je jeden riadok kódu v Kotline. Za Auto sú zátvorky – to je primárny konštruktor, v ktorom sa nastavujú takzvané property.  Prvá property je nazov, ktorá je val – val znamená, že hodnota sa nemôže neskôr meniť. Druhá property má nastavené = 4, to znamená, že ak chcem vytvoriť auto len zadaním názvu, tak sa automaticky pocetDveri nastaví na 4. Takto vytvorím Auto zadaním oboch property a pod tým je prístup k property cez bodku: val skoda = Auto("Skoda", 5) skoda.nazov skoda.pocetDveriVytvorenie auta len s názvom: val auticko = Auto("Skoda")Záver Páči sa ti tento prístup? Chceš vedieť viac o programovacom jazyku Kotlin? Sleduj Learn2Code a verím, že nájdeš čo hľadáš. Pripravovaný kurz o Kotline zverejníme už čoskoro.
Testovanie Java aplikácií s JUnit
Vzdelávanie
28.11.2019
Skillmea

Testovanie Java aplikácií s JUnit

JUnit framework úvodPredstav si úplne jednoduchú metódu, ktorá má za úlohu spočítať dva vstupné parametre metódy. public static int sum(int number1, int number2){ return number1 + number2; }Ako by si otestoval túto metódu? Zavolal by si danú metódu, a následne by si výsledok porovnal s očakávanou hodnotou. Ak by metóda nevrátila očakávanú hodnotu, tak by si napísal hlášku, že test neprešiel, ak by vrátil očakávanú hodnotu, tak by si napísal, že test prešiel. int sumNumber = sum(1, 4); if(sumNumber!=5){ System.err.println("Test failed."); }else{ System.out.println("Test passed."); }Čo som spravil, je to, že náš kód som porovnal s jedným možným prípadom výsledku. Po anglicky sa stretneš s názvom test case. Teda som zatiaľ spravil jeden test case.  Ty by si mal overiť niekoľko test casov. Svoj kód musíš vystaviť „stresu“. Teda si napíšeš niekoľko ďalších test casov. Napríklad, ako to bude pracovať s nulou: int sumNumber = sum(1, 0); if(sumNumber!=1){ System.err.println("Test failed."); }else{ System.out.println("Test passed."); }Alebo ako to bude pracovať s negatívnym číslom: int sumNumber = sum(1, -10); if(sumNumber!=-9){ System.err.println("Test failed."); }else{ System.out.println("Test passed."); }Toto boli takzvané pozitívne testy. Test si pokladal za passed – za úspešný – vtedy ak bola splnená podmienka. Ty vieš ale napísať aj takzvané negatívne testy. Kde test prešiel ak nebude splnená podmienka. Napríklad test prejde ak sum 2 a 2 nie je 5 a podobne. int sumNumber = sum(2, 2); if(sumNumber!=5){ System.out.println("Test passed."); }else{ System.err.println("Test failed."); }Náš kód sme vystavili rôznym test casom. Ak testy prejdú, tak metóda je ošetrená určite viac – je viac spoľahlivá ako keby sme nenapísali, žiaden test case.  Čo sme spravili? Pripravili sme si testy. Poskytli sme vstupné parametre testom – rôzne čísla na spočítanie. Spustili sme testy a poskytli sme aj očakávané výsledky. Následne sme vypísali hlášky, či testy prešli alebo nie.  Ak by sme mali ďalšie metódy, ktoré by sme museli otestovať, tak by sme napísali ďalšie testy. Spravili by sme vlastne tie isté kroky ako pri testovaní prvej metódy.  Čo majú prvé testy odlišné od druhých testov? Voláme iné metódy, máme iné parametre testov a máme iné požadované výsledky.  Čo majú prvé testy spoločné s druhými testami? Testy sme spustili – na spustení testov nie je nič odlišné. Verifikovali sme výsledky – verifikovanie prebehlo aj v prvom aj v druhom prípade a následne sa v oboch prípadoch napísali hlášky na konzolu.  JUnit framework nám uľahčí spôsob, akým budeme spúšťať testy a aj spôsob akým sa používateľovi oznámia výsledky testov. Spustenie, verifikovanie a vypísanie hlášok bude riadiť JUnit framework. My povieme JUnitu – tu máš môj test kód a ty ho teraz spusti a postaraj sa o to. JUnitu povieme, tento výsledok očakávam, tieto údaje vkladám – prever to. JUnit to preverí a nám oznámi v peknej čitateľnej forme, či testy prešli a ak neprešli, tak nám povie presne, ktoré testy neprešli.[Image] JUnit bol mnoho rokov vo verzii 4. Verzia 5 nie je priamo kompatibilná s verziou 4, ale tvorcovia JUnit 5 pripravili api, cez ktorú vieme komunikovať aj so starými testami – tá sa volá Vintage. Ďalej nové api sa volá Jupiter. Tieto api potom spoliehajú na core frameworku – teda zdroj – kód, ktorý sa stará o všetko ostatné. Spúšťanie testov a podobne. Plus máš možnosť napísať si svoje vlastné api, ktoré potom bude tiež využívať core frameworku.  Ak budeš používať Jupiter plus core, tak si do projektu musíš stiahnuť tieto závislosti. My budeme používať maven pre tieto účely.  Vývojové prostredia ako IntelliJ IDEA alebo Eclipse majú zabudovanú integráciu s JUnit 5 frameworkom a tak môžeme testy spúšťať pomocou týchto vývojových prostredí. Ak ťa táto téma zaujíma viac, sleduj online kurz JUnit a TDD pre programátorov.
Môžeme sa dnes na hodine hrať? Od zákerného slniečka k programu Scratch
Vzdelávanie
27.02.2019
Skillmea

Môžeme sa dnes na hodine hrať? Od zákerného slniečka k programu Scratch

„Môžeme sa dnes na hodine hrať?“ To je otázka, s ktorou sa stretávam na hodinách počas krúžkov programovania.  Keď som začínal s učením, veľmi ma trápilo, aký postoj zaujať k žiakom. Predstavoval som si rôzne katastrofické scenáre, keď žiaci začnú robiť nezbedu od odvrávania až po demolovanie učebne.  Ako napomenúť deti?  Ako spacifikovať nezbedníkov?  Ako ich donútiť spolupracovať?  Ako sa odprezentovať, aby som nebol za hlupáka?  Ako im správne vysvetliť látku?  A to najdôležitejšie: Ako sa postaviť pred dav ľudí, ktorý vám v lepšom prípade venuje pozornosť, a byť schopný zo seba vysúkať zmysluplnú vetu? Začínal som so zákerným slniečkomNejaké skúsenosti som mal s doučovaním spolužiakov na vysokej škole. Pamätám si, ako sme trávili sobotné večery na Skype, kde sme sa snažili donútiť to zákerné slniečko, aby po spustení malo tvar ako na zadanom obrázku.  Neskôr som pomáhal spolužiakom pochopiť, čo sa deje s ich domácou úlohou.  Nakoniec som do nich tĺkol schopnosti ako si rozobrať zadanie, naplánovať postup, aby samostatne naprogramovali skúškový program.  Nedá mi nespomenúť, ako sa mi na strednej škole rozbil počítač a ja som maturitné otázky programoval s ceruzkou na papieri.  Čo ale stálo za tým, že som zvládol nakresliť slniečko a potom pripravoval spolužiakov na skúšku? Bol to ten skvelý pocit, že som v podstate z ničoho vytvoril funkčný program, hrateľnú hru, svet s vlastnými postavami. [Image] Trénujeme hlavu – každý po svojomPri programovaní si trénujeme to, čo máme v hlave. Musíme myslieť aj na to, že nie každý sa s tým ľahko popasuje. Už som počul aj sťažnosti od detí, aký je to útok na mozog. Deti radi trávia čas pri počítači. Nie každý sa však chce učiť zložité algoritmy. Je potrebné ich naučiť, že počítač nie je len na hranie. Je to aj nástroj, ktorý im umožňuje prejaviť sa. (To by sa ale mohli naučiť aj niektorí rodičia 😊.) Vedú k tomu viaceré cesty. Keď som prvýkrát otvoril prostredie Scratch, bol som nadšený. Prostredie mi ponúka všetko, čo potrebujem na vytvorenie vlastného sveta.  Tu máš, pohraj sa s tým, experimentuj, uvidíme, čo z toho vznikne.  Nepotrebuješ vedieť zložité informácie, čo sa za tým skrýva alebo prečo to tak funguje.  Prostredie ti napovie, toto s týmto sa dá spojiť, a vznikne tamto...  Scratch umožní používateľovi vytvoriť veľmi rýchlo jednoduchú hru. Postačí mi zopár klikov a už mi postavička pojedá jabĺčka a pripočítava skóre. Potom to už ide samé.[Image] Počítačové hry nie sú zloŽiaci sa tešia na hry, ktoré vytvoríme. A potom začínajú prichádzať otázky: „Kedy si naprogramujeme hru ako GTA V?“ Na to však musím odpovedať, že hru, ktorú vytváralo tisíc ľudí niekoľko rokov, si za jedno popoludnie v Scratchi nenaprogramujeme.  Keď si prejdeme základy, púšťame sa do skutočného programovania hier. Často sa pýtam detí na ich vlastné nápady, ktoré potom spolu realizujeme. Snažím sa tak v deťoch podporiť kreativitu. Chcem, aby rozmýšľali nad vlastnými schopnosťami a možnosťami prostredia Scratch.  Niekto môže namietať, že počítačové hry sú zlo, ktoré kazí dnešnú mládež. Ja však hovorím, že existujú hry, ktoré vedia deťom veľa priniesť: modelovanie v Minecrafte, manažment a plánovanie v Total War, simulácia života v Simse, budovanie svetov v Age of Empires.[Image] Autorom blogu je Ľuboš Jaroš Ľubošove vzdelávacie podklady ku Scratchu nájdete tu. Mgr. Ľuboš JAROŠ je absolvent magisterského stupňa štúdia učiteľstva matematiky a informatiky na FMFI UK (2015). Od začiatku vysokoškolského štúdia sa venoval didaktike programovania, či už v školských prácach alebo pri vedení krúžkov programovania pre žiakov 1. a 2. stupňa, v čom úspešne pokračuje doteraz. Vytvoril kompletné vzdelávacie podklady a videotutoriály pre programy Scratch Junior a Scratch Starter. Je autorom knihy Scratch Starter - Programovanie pre deti (2017). 3 roky na vyžiadanie vedie hodiny didaktiky pre učiteľov informatiky. Jeho obľúbeným pracovným nástrojom je programovacie prostredie pre deti s názvom Scratch.
5 spôsobov ako rozvíjať svoje dieťa a nezakazovať mu počítač
Vzdelávanie
18.02.2019
Skillmea

5 spôsobov ako rozvíjať svoje dieťa a nezakazovať mu počítač

Často dnes vidíme tristný obraz detí, ako v tmavom kútiku v žiari displeja svojho mobilu, tabletu alebo počítača presedia celé hodiny a bavia sa na príbehoch svojich reálnych či virtuálnych kamarátov vo fiktívnych svetoch. Až sa zdá, že počítačové hry a multimédiá sú pre deti príťažlivejšie než čokoľvek iné. Prečo sa to deje? Podľa vedeckých výskumov sme to my sami, kto vedome či nevedome už v útlom veku, učíme deti spracovávať informácie odlišným spôsobom ako celé generácie pred nami. Silné podnety a rýchle tempo vnemov z elektronických médií povzbudzujú v mozgu vylučovanie hormónu odmeny dopamínu, a tým ovplyvňujú jeho kognitívne funkcie. Človek má sklony tieto zážitky opakovať, vyhľadávať nové a silnejšie podnety, čím sa roztáča "dopamínová špirála". V súčasnosti sa s týmto problémom borí množstvo rodičov a vychovávateľov. Ak chceme, aby naše deti urobili aj niečo vo svoj prospech a svoju budúcnosť, potrebujeme tieto silné podnety najprv "prebiť", a tak si získať ich pozornosť. Potom by sme však mali postupne zjemňovať ,,nátlak” a cibriť výdrž a vnímavosť.  Ponúkam vám niekoľko inšpirácií, ktoré majú potenciál deti zaujať a zabaviť – bez toho aby prehlbovali svoju závislosť na médiách. Naopak, získajú radosť, zvýšia kontakt s rovesníkmi, vycibria si vnímavosť aj pohybové zručnosti. Efektívne tiež znížia závislosť na lacných náhradách zo sveta zábavného priemyslu. [Image] 1. Dajte krídla kreativiteDnes je trendom konzumácia obsahu. Podobne ako pri jedení aj tu to môžeme uchopiť z opačnej strany a "uvariť si" niečo vlastné. Vďaka všadeprítomným technológiám máme veľa možností.  Nakrútiť mobilom vlastný krátky hraný, animovaný, prírodopisný film či televíznu reportáž? Na spracovanie materiálu a tvorbu hudby môžeme využiť voľne dostupné aplikácie v online obchodoch. Podobne vieme vyrobiť hudbu (napr. Chrome Music Lab) a ako bonus aj plagát na premiéru (Office), prípadne aj s vlastnoručne kreslenou grafikou (napr. Photopea). Môžeme tiež natočiť aj veselé video (s pokazenými zábermi) o tom, ako to celé vznikalo. A máme ideálny príspevok do rodinnej videotéky! 2. StavebniceStavebnice sú ideálny prostriedok na konštruktívnu hru a experimenty. Sú navrhnuté tak, že rešpektujú intelektuálne a fyzické schopnosti detí v jednotlivých vekových kategóriách. Napríklad elektronická stavebnica Boffin, v ktorej si aj menšie deti bez potreby mobilu či počítača bezpečne postavia zábavné elektrické obvody.  Veľmi vhodné sú stavebnice Lego Technic s názornými ozubenými prevodmi a ďalšími súčiastkami, ktoré demonštrujú mechanické princípy.  Ak sa vám zdajú tieto stavebnice pridrahé, skúste niektorú z online Lego požičovní, ktoré sa začínajú vynárať aj u nás. Vrcholom tejto skupiny je robotická stavebnica Mindstorms, ktorá okrem lego dielikov obsahuje aj senzory a riadiacu jednotku. S použitím vhodného kurzu vovedie vás i vaše deti do sveta robotiky. [Image] 3. Výzva: Naučte ich programovaťVyššia úroveň používania digitálnych technológií je naučiť sa ich ovládnuť ich cez programovanie. Nie je až také náročné začať, ak viete, za ktorý koniec to chytiť. Deti na kurzoch a v letných denných táboroch, ktoré organizujeme v Learn2Code, nás presviedčajú o tom, že keď sú správne motivované a pod dohľadom skúseného inštruktora, základy programovania zvládne každé z nich. Mnoho vecí sa však dnešní tínedžeri učia z video návodov. A nie je to náhoda. Video návod môže do veľkej miery osobný sprievod inštruktora nahradiť. Prvé experimenty môžu začať v Scratchi, pokračovať vlastnými mobilnými appkami v AppInventore alebo grafickými skicami v javascriptovom prostredí P5.js. 4. Meranie síl s rovesníkmiAj na Slovensku existuje množstvo súťaží pre deti, v ktorých si môžu merať sily s rovesníkmi. Výnimka nie je ani informatika. Ak vášho potomka zaujímajú hry a programovanie, môže vyskúšať súťaž v tvorbe hier Galaxiáda. Jej druhý ročník práve prebieha. 5. Doprajte pohyb celému teluKaždé dieťa, či už programátorské alebo nie, uvíta chvíľu veselého pohybu! Neveríte? V sprievode zábavnej počítačovej hry Stepmania prekoná(te) detskú lenivosť. Princíp hry spočíva v tom, že dotykom nôh po podložke za sprievodu populárnej hudby "zostreľujete" rýchle ubiehajúce šípky. Stepmania je k dispozícií zadarmo. Jediné, čo k nej potrebujeme, sú ovládače Dance Pad, ktoré sa však dajú v domácich či zahraničných internetových obchodoch kúpiť už od 10 eur za kus. Hra obsahuje niekoľko herných režimov, dá sa hrať samostatne, ale zábavnejšia je vo dvojici (potrebujete dve podložky), či dokonca na turnaji. (Na ten si účastníci nosia svoje vlastné podložky.) Vďaka týmto aktivitám vy a vaše deti zažijete radosť a pocit zmysluplného využitia času a moderných technológií v prospech spolupatričnosti a vnímavosti. Zároveň povzbudíte ich zdravú sebadôveru a získavanie takých zručností, ktoré určite využijú v budúcnosti. Autorom článku je Marián Staňo Marián je absolvent učiteľstva matematiky a informatiky na FMFI UK (2001). Od začiatku štúdia sa venoval experimentálnemu vyučovaniu informatiky na ZŠ a neskôr v škole pre deti so všeobecným intelektovým nadaním (ZŠ Košická Bratislava, Škola pre mimoriadne nadané deti a gymnázium v Bratislave, Inštruktor Letného denného tábora FMFI UK). Má dvadsaťročnú prax vo vzdelávaní detí ako lektor a autor vzdelávacích materiálov. Má rovnako skúsenosť ako facilitátor arteterapeutických skupín dospelých a hľadá prieniky medzi animovanou tvorbou a technológiami.
Java najnovšie verzie – Java 9 moduly (1. časť)
Vzdelávanie
09.12.2018
Skillmea

Java najnovšie verzie – Java 9 moduly (1. časť)

Od verzie 9 bude java vychádzať v pravidelných intervaloch. Každých 6 mesiacov nová java. Takže môžeme očakávať nové funkcionality častejšie, ale v menších dávkach. Najpoužívanejšia Java v súčasnosti je java 8 – vyšla v roku 2014. Java 9 prvýkrát vyšla v septembri 2017, neskôr boli opravené kritické chyby a dalo by sa povedať, že taká lepšia verzia vyšla v januári 2018. Java 10 vyšla v marci 2018, Java 11 v septembri 2018. Takže rýchly posun vo verziách, ale nie drastický posun vo funkcionalite.  Čo je lepšie? Naraz a veľa alebo menej a postupne? Záleží od toho, čo robíš. Ak používaš veľa frameworkov a knižníc tretích strán, tvoja práca po zvýšení javy môže byť ovplyvnená.  Prvým míľnikom je java 11, ktorá je označená ako LTS, teda long term support. Táto verzia javy bude dlhodobo opravovaná a bude o ňu postarané na najbližšie roky. Čo to znamená? Že je pravdepodobnejšie, že firmy poskočia z javy 8 skôr na javu 11, lebo budú mať istotu, že táto java bude v budúcnosti opravovaná – ak by sa našla nejaká kritická chyba.  V tomto článku sa zameriame hlavne na výpis zmien, čo je nové. Nebudeme sa zaoberať jednotlivými zmenami podrobne. To si necháme do budúcna.  InštaláciaNajprv si musíš stiahnuť a nainštalovať najnovšiu javu jdk. V čase písania článku je to Java 11. Nastav si premennú prostredia JAVA_HOME na novú javu – na root, nie na bin priečinok. Potom do PATH premennej nastav cestu práve na bin priečinok novo nainštalovanej javy.  Spusti príkazový riadok a zadaj príkaz: java – version  Ak sa ti objavila verzia, všetko je v poriadku. [Image] Ak je nejaká chyba, alebo ukazuje staršiu verziu, tak sa uisti, že v PATH je cesta bin novej javy nastavený na začiatku. Je možné, že v PATH máš nastavené aj C:\ProgramData\Oracle\Java\javapath. Ak áno, tak to musí byť až za cestou na najnovšiu javu.  ModulyV jave 9 je najskloňovanejšia zmena projekt Jigsaw – ale stačí, ak si zapamätáme, že ide o modularitu – rozdelenie veľkého monolitu – teda celá aplikácia v jednom balíčku na menšie celky – moduly. Moduly potom povedia, čo zverejňujú do sveta a čo požadujú pre svoju správnu funkcionalitu.  Každý modul obsahuje module-info.java súbor a aspoň jeden balík. Modul-info.java v sebe obsahuje popis závislostí, ktoré modul potrebuje. Každý modul je nezávislý v ponímaní, že ak obsahuje obrázky, alebo konfiguračné súbory, tak modul si ich manažuje sám. Všetko, čo je v module je privátne pre modul, ak nepovieme inak.  Existujú 4 typy modulov. System moduly – Java SE a JDK moduly – ak si všimneš, tak v nainštalovanom jdk pre novšiu javu chýba priečinok jre. Teraz tam je jmods. Tu máme umiestnené všetky už default poskytované moduly. [Image] Aplikačné moduly sú moduly, ktoré chceme vytvárať, keď sa rozhodneme, že chceme používať moduly.  Automatické moduly sa vytvoria, keď pridávame JAR súbory na path modulu. Názov modulu sa preberie z názvu jar súboru. Tieto automatické moduly majú plný prístup na čítanie do všetkých ostatných modulov načítaných na path.  Nepomenovaný modul = ak sa na path – nie na module path – načítajú nejaké triedy alebo jar súbory, tak tieto triedy a jar súbory sú automaticky pridané do tohto nepomenovaného modulu. Slúži na spätnú kompatibilitu s predchádzajúcim starším javovským kódom.  DistribúciaModul má byť zbalený ako jar súbor – jeden jar súbor má obsahovať max jeden modul. Keď robíme build projektu, musíme si dať pozor, aby sme zabalili každý modul v našom projekte ako samostatný jar.  Základné modulyVraveli sme si, že jdk má novú štruktúru, ktorá má v sebe jmodules. Tu sú základné moduly. Tieto moduly si vieme vypísať pomocou príkazového riadku ak zadáme príkaz <b>java --list-modules</b>. [Image] Každý modul, ktorý vytvoríme, bude používať implicitne java.base modul. Použitie iných modulov bude dostupné po konfigurácii.  Vytvorenie moduluModul v podstate vznikne, ak zadefinujeme v roote zdrojového kódu modulu súbor module-info.java.  Týmto momentom sa pracuje so zdrojovým kódom ako s modulom. Moduly sa navzájom nevidia – nemajú prístup jeden do druhého a do tretieho a tak ďalej. Podľa toho koľko modulov používame.  Ak chceš používať niečo z vonku, alebo chceš, aby vnútro tvojho modulu, alebo čas vnútra tvojho modulu bolo viditeľné, musíš to zadefinovať.  Majme projekt, do ktorého si zadefinujeme nový modul. V module máme src priečinok, do ktorého budeme dávať všetok zdrojový kód. Vo vnútri si zadefinujeme balíček sk.jaro.demo a v ňom ešte external a internal. Vytvoríme si jednoduché triedy, ktoré len niečo vypíšu na konzolu. [Image] package sk.jaro.demo.external; public class HelloMainModuleExternal { public void doAction() { System.out.println ("Hello main module HelloMainModuleExternal"); } }package sk.jaro.demo.internal; public class HelloMainModuleInternal { public void doAction() { System.out.println("Hello main module HelloMainModuleInternal"); } }Tieto triedy sú odlišné len v názve a výpise na konzolu. Internal si neskôr nastavíme, aby bola viditeľná len v module main. External si neskôr nastavíme, aby bola viditeľná aj mimo modulu main. V src tohto modulu si vytvor súbor module-info.java. Vnútro súboru má syntax, kde je najprv kľúčové slovo modul, potom názov modulu – vieš používať aj bodky a potom sú kučeravé zátvorky: modul nazovmodulu{ }. Chceme, aby balíček external bol dostupný aj pre iné moduly – musíme nastaviť aby sa exportoval. module main { exports sk.jaro.demo.external; }Teraz si vytvoríme nový modul v tom istom projekte s názvom utils. Vo vnútri budeme mať jednu triedu, v ktorej sa budeme snažiť použiť HelloMainModuleExternal triedu z modulu main. [Image] Module-info.java musí teraz obsahovať, že v tomto module vyžadujeme modul main – pretože používame funkcionalitu z tohto modulu.  module utils { requires main; }Teraz môžeme použiť triedy, ktoré boli exportnuté z main modulu:  package sk.jaro.demo; import sk.jaro.demo.external.HelloMainModuleExternal; public class UseSomethingFromMainModule { public static void main(String[] args) { HelloMainModuleExternal helloMainModuleExternal = new HelloMainModuleExternal(); helloMainModuleExternal.doAction(); } }ZáverNa záver by si sa mohol teraz s tým kúsok pohrať. Skús použiť triedu, ktorá nie je exportnutá z modulu main.  O moduloch by sa dalo písať a hovoriť viac, ale dúfam, že si porozumel princípu modularizácie. Mne v priebehu študovania tejto témy vybehlo pár otázok, na ktoré som si ešte neodpovedal. Napríklad: Maven s java modularizáciou? Frameworky a modularizácia?  Ak sa ti článok páčil, tak napíš niečo do komentárov, poteší ma to.  Zaujímaš sa o Javu? Skús jeden z kurzov na túto tému na https://skillmea.sk.  Ak sa chceš o mne dozvedieť viacej sleduj môj web www.jaroslavbeno.sk.  Jaro Zdrojové kódy na stiahnutie.
Využi toto leto: Online kurzy, za ktoré neplatíš!
Vzdelávanie
12.08.2017
Martina Baumann

Využi toto leto: Online kurzy, za ktoré neplatíš!

Ešte stále nám zostáva pár týždňov prázdnin. Čo tak využiť horúce letné dni a okrem zábavy a dovoleniek sa čosi naučiť? Nemusíš nikam chodiť, učiť sa môžeš - kedy chceš a kde chceš - v pohodlí domova alebo niekde vonku na lehátku s prístupom na internet. Kurzy nám neustále pribúdajú, to vieme všetci. Len nedávno sme si však povedali, že poďme urobiť kurzy pre všetkých zadarmo - teda aj pre teba, tvojho kamoša, suseda, otca, mamu, sesternicu. V čom je pridaná hodnota týchto kurzov? V tom, že sú dostupné zdarma, a tak môžeš ušetrené euráče minúť niekde inde. Napríklad na nejaké fajnové drinky. Letná akcia so Zlavadna.skSamozrejme, platené kurzy nám v ponuke naďalej zostávajú. Ale aj tie máš teraz šancu vyskúšať v špeciálnej letnej akcii. Ako je to možné? Nie, nevyhrali sme jackpot (teda aspoň zatiaľ nie), len sme urobili ďalší zaujímavý deal pre teba. O čom to teda hovorím? Neobmedzený prístup ku všetkým online kurzom na Learn2Code počas troch mesiacov. Čítaš dobre, naozaj to nie sú halucinácie z tepla, ale rozhodli sme sa urobiť opäť nejakú tú tučnú akciu pre teba a tvojich kamošov. Do akcie sa zapoj TU. Java pre začiatočníkovTento online kurz je už podľa názvu vhodný pre začiatočníkov tak, aby sa naučili jednoducho programovať v najrozšírenejšom a najpoužívanejšom programovacom jazyku Java. Tento kurz vysvetľuje históriu, základné pojmy, nastavenie prostredia až po rôzne výnimky a samotné programovanie. Visual Design: Dizajn vlastného tričkaV tomto kurze sa naučíte, ako si vytvoriť vlastný motív na tričko. Okrem celkového vytvorenia dizajnu sa dozviete, aké farby a nástroje si treba pri vytváraní zvoliť, taktiež sa naučíte niečo o jednotlivých nástrojoch, farebných režimoch, o formátoch ako sú JPG, TIFF a PNG. Kurz je opäť vhodný pre začiatočníkov. Základy online stratégieOnline kurz prevedie študenta základmi online marketingovej stratégie, pričom získa všeobecný prehľad a dobrý základ pre ďalšie vzdelávanie v oblasti online marketingu. Napríklad aj to, ako sa zákazníci správajú a rozhodujú pri nákupe, ako funguje nákupný model See-Think-Do-Care, podľa ktorého si môže študent navrhnúť a vytvoriť vlastnú komunikačnú stratégiu. Základy online marketinguOkrem základných pojmov z online marketingu sa študenti zoznámia s content marketingom a ako ho robiť, základy performance marketingu, social media marketingu a marketingu vo vyhľadávačoch. Lektori online kurzu tu tiež vysvetľujú, čo je to landing page a prečo je vôbec dôležitá. Kde treba hľadať tieto kurzy?Netreba nejako zvlášť hľadať, uľahčím ti to. Pohodlne sa usaď, zapni si ventilátor a klikaj SEM (nájdeš tu prehľad všetkých kurzov, ktoré sú zdarma. Stačí si len vybrať). Páči sa ti naša ponuka kurzov? Ak áno, zdieľaj toto posolstvo aj medzi ostatných kamošov. 
Front-End development technológie
Vzdelávanie
30.07.2017
Lubo Herkoo

Front-End development technológie

Porovnaniu svetov Front-End a Back-End vývoja sme sa venovali pred pár mesiacmi. Dnes sa budeme hrabať v nástrojoch Front-End programátorov - čo všetko musíš zmáknuť, ak sa ním chceš stať (okrem našich kurzov). V tomto texte nebudeme polemizovať, či je lepší React, Angular alebo Vue.js. Či treba používať SASS alebo LESS, alebo.. ..či je lepší Mac, alebo PC. Prečítaš si o najpoužívanejších front-end technológiách, skúsime Ťa nasmerovať ako s front-endom začať a tiež (ak to myslíš naozaj vážne) ako sa ďalej rozvíjať, aby ti nič z Front-Endu neušlo. Pome! Predný koniec webu - technológie Stačí otvoriť niektorú webovú (alebo dnes už aj desktopovú, ajPadovú, ajFonovú, aj androidovú) appku a pozeráme sa na prácu Front-End vývojárov. To oni nakódili tie buttony a textové polia, s citom premysleli efektné animácie, menu a rozhýbali statický dizajn svojho kamaráta - grafika. V našom webovom svete pracujú Front-End vývojári primárne s HTML, CSS a JavaScript-om. Pre tieto technológie však existuje milión nástrojov a frameworkov, ktoré nám prácu uľahčujú, sme vďaka nim produktívnejší a dokážeme ľahšie tvoriť zložitejšie aplikácie. K takýmto - pokročilejším - nástrojom sa však dostaneš neskôr. Začať s React-om alebo AngularJS ako svojou prvou skúsenosťou s front-endom by bol asi masochizmus. Level 1: Kde začať? Niektorí z nás statické HTML stránky s využitím CSS štýlov zvládli už na strednej (alebo aj základnej) škole. Neskutočná nuda a ani sme netušili, že to môže byť pre nás neskôr užitočné. Niečo podobné, ako keď vás rodičia nútia chodiť do hudobnej školy a vedomosti zúžitkujete až o 10 rokov neskôr, keď s kamošmi vymyslíte kapelu. [Image] Všetky weby, webové aplikácie však využívajú HTML a CSS naplno a preto je potrebné ich zvládnuť úplne na začiatku – spoznať svoje možnosti. Aby sme si mohli povedať, že sme zvládli základy HTML, CSS a JavaScript-u mali by sme poznať funkcie elementov a atribútov z prvého grafu. Tiež by sme mali bez problémov vedieť používať základné CSS pravidlá a jednotky. No a mali by sme vedieť, na čo slúži jQuery a ako nám môže pomôcť. Všetky informácie a oveľa viac nájdeš v Yablkovom kurze: Webrebel 1: HTML, CSS & Javascript. Level 2: Ako pokračovať? Určite postupom času prejdeš z jednoduchých webstránok na zložitejšie weby. Tvoj CSS súbor bude mať 1000 riadkov a každá ďalšia zmena Ti zaberie 3 minúty strachu, 1 minútu roboty a 25 minút testovania a fixovania, ak sa niečo pokazilo. Je čas na lepšiu organizáciu svojich CSS štýlov. [Image] CSS Použi SASS - parádny preprocessor CSS štýlov, ktorý Ti umožní organizovať štýly prehľadne do priečinkov/súborov. Tiež môžeš zadefinovať premenné, ktoré obsahujú definície farieb, ktoré často používaš, alebo okraje - aby vyzerali všade rovnako. Ak ich potrebuješ zmeniť na viacerých miestach, prepíšeš hodnotu jednej premennej a máš to vyriešené. SASS vie pracovať aj s jednoduchými funkciami. Často používanými sú napr. lighten() a darken(), ktoré dokážu danú farbu zosvetliť alebo stmaviť. SASS má tých funkcií a možností samozrejme ďaleko viac. Ďalšími alternatívami k SASS môže byť LESS, Stylus, PostCSS a ďalšie. My v Learn2Code sme si obľúbili SASS. Responzívny dizajn Responzívny dizajn rieši problém so zobrazovaním Tvojho webu na rôznych zariadeniach. Pre front-end programátora je neodmysliteľnou súčasťou jeho skills. Mobilných zariadení je viac ako obyvateľov na svete - musíme optimalizovať aj pre malé obrazovky. Samotné HTML a CSS3 má v sebe nástroje, ktoré nám pri takejto optimalizácii môžu pomôcť. Napríklad veľmi dôležitý HTML meta tag je viewport, ktorý prispôsobí veľkosť písma pre malé obrazovky tak, aby nebolo príliž malé: <meta name="viewport" content="width=device-width, initial-scale=1.0"> Pomocou CSS tiež dokážeme ošetriť responzivitu tak, že na šírku elementov budeme používať percentuálne hodnoty a pravidlo box-sizing: border-box;. Takto môžeme zadefinovať vlastný grid, kde tieto pravidlá použijeme. CSS3 nám veľmi pomáha pri responzívnom dizajne s @media query. Pomocou @media dokážeme oddeliť CSS, ktoré bude platiť napríklad pri rozlíšeniach menších ako 1000px od pravidiel, ktoré budú platiť pre rozlíšenia vyššie ako 1000px. Výborná vec. Responzívnemu dizajnu venoval Yablko tiež kopec videí v kurze Webrebel 1. Front-end Framework Šikovníkov z Twitteru napadlo, že by bolo fajn mať po ruke sadu komponentov, ktoré veľmi často používajú vo svojich projektoch. Takýmito komponentami sú napríklad tlačidlá, rôzne typy menu, textové polia s validáciami alebo rôzne nadpisy. Dôležitá bola tiež responzivita. Aby nemuseli začínať vždy od nuly, vytvorili Bootstrap - framework, ktorý si okamžite získal vývojárov po celom svete. Bootstrap je obrovský urýchľovač času a čas sú predsa peniaze. Ak si Bootstrap obľúbiš a spoznáš ho poriadne, začneš experimentovať s upravovaním jeho vzhľadu a pridávaním nových funkcií napríklad cez JavaScript. Na internete nájdeš kopec pluginov, ktoré rozširujú jeho možnosti. Alternatívami k Bootstrapu môžu byť: Foundation, Materialize CSS, Semantic UI a rôzne iné. Level 3: JavaScript Dostávame sa do posledného levelu front-end programátora, tak vysúkajme rukávy a poďme na to :) JavaScript je jedným z najpopulárnejších jazykov. [Image] Príchodom Single Page Applications (SPA) sa jeho popularita zmnohonásobila. SPA rapidne zlepšili rýchlosť webových aplikácií. Podstatou SPA je, že celá stránka sa načíta len raz - na začiatku. Každá ďalšia zmena sa deje na pozadí a zmení sa len časť stránky s novým obsahom. Najlepšími príkladmi single-page aplikácií sú Facebook, YouTube, Twitter a mnohé iné populárne weby. Ani si nevieme predstaviť to množstvo JavaScript-u, ktoré tieto aplikácie obsahujú, pretože podstatná časť celej aplikácie je naprogramovaná práve v JavaScript-e. Veľa .js súborov na jednom webe môže spôsobovať nemalé problémy. Najmä, ak sú jednotlivé súbory na sebe závislé. Veľmi jednoduchý príklad: ak napíšeme vlastný JS plugin na zobrazenie foto galérie, ktorý je závislý na jQuery. Keď prehliadač stiahne a spustí náš plugin, už musí mať k dispozícii knižnicu jQuery. Je úlohou front-end programátora, aby takéto problémy vyriešil. JavaScript našťastie obsahuje obrovské množstvo nástrojov, ktoré nám pomáhajú riešiť podobné problémy. Tu sú niektoré situácie a ich riešenia: • Správa závislostí – ak je knižnica závislá na ďalších knižniciach, pomôžu nám npm alebo yarn • Automatizácia činností – veľkou pomocou je napríklad automatický refresh prehliadača pri každej zmene kódu. Takéto a podobné tasky môžeme riešiť cez gulp, grunt alebo npm • Správa modulov - nainštalované závislosti je potrebné poskytnúť prehliadaču vo forme výsledného .js súboru. Tu nám môžu pomôcť webpack, rollup, RequireJS, browserify • Automatizované testovanie - aby sme pri každej zmene nemuseli celú aplikáciu testovať ručne, pomôžu nám jest, mocha alebo jasmine • Syntax - aby sme neprodukovali JS špagety kód, vznikajú nové štandardy, ktoré sprehľadňujú syntax JavaScriptu - ES5, ES6 alebo ES7. Babel pomôže prehliadaču túto novú syntax pochopiť. JavaScript frameworky a knižnice Podobne ako nám Bootstrap pomohol s responzivitou a niektorými často používanými komponentami, existujú aj JavaScript frameworky, ktoré dopĺňajú svet front-end programátora a celý vývoj komplikovanej SPA urýchľujú. Opísať každý framework nie je úlohou tohoto článku, ak však niektorý z nich preferuješ, napíš nám do komentárov ktorý a prečo. Tu sú najpoužívanejšie: • React - Facebook vytvoril React ako riešenie pre svoje komplikované používateľske prostredie. Hlavnou ideou je vytvorenie komponentov, ktoré sa dajú použiť na viacerých miestach v aplikácii. Ak užívateľ vykoná nejakú akciu a zmení sa obsah stránky - prehliadač prekreslí len konkrétny komponent. • Vue.JS - Alternatívnou knižnicou k Reactu je Vue.js, ktorá sa teší čoraz väčšej popularite. Výhodou je prehľadnejší a ľahší syntax, kde sa nemieša HTML kód s JavaScriptom - čo niektorým vývojárom nevyhovovalo • AngularJS - Vytvorený firmou Google je na rozdiel od React a VueJS plnohodnotným frameworkom - obsahuje aj nástroje na komunikáciu s databázou. Ďalšie alternatívy k najpoužívanejším frameworkom/knižniciam: EmberJS, Preact, Inferno a mnohé iné. Level 4: Áno, existuje aj level 4. Sú to prídavné vedomosti naskillovaného front-end programátora. Napríklad bezpečnosť - prevencia pred CSRF, XSS, DNS pinning alebo clickjacking útokmi. Tiež poznanie psychológie používateľa je obrovskou výhodou - priorizovať použiteľnosť a prístupnosť aplikácie pred odvážnym dizajnom. Marketing, SEO, ... a mohli by sme ísť ďalej. Dôležité je nikdy sa neprestať vzdelávať, získať čo najväčší rozhľad v technológiách a v neposlednom rade nepodľahnúť popularite niektorého z nástrojov, ale zvoliť nástroj tak, aby splnil svoj účel.
Frontend vs Backend: v čom je rozdiel?
Vzdelávanie
28.05.2017
Lubo Herkoo

Frontend vs Backend: v čom je rozdiel?

Vo februári 1997 bolo na sieti Internet prístupných milión webov. To bolo pred dvadsiatimi rokmi (tiež som si práve uvedomil aký som starý). Dnes by sme ich rátali v stovkách miliónov. Od tej doby prešiel vývoj webov neskutočnými zmenami. Z jednoduchých prezenčných stránok nakreslených v skicári a oživených HTML, CSS a JavaScript kódom sa stali zložité CMS, LMS, CRM a WTF systémy postavené na niektorých z desiatok back-end technológií. Dáta môžeme ukladať do SQL alebo NoSQL databázy a súbory už nenahrávame jednoducho na server cez FTP, ale používame zložité build systémy, ktoré náš kód najprv otestujú a až potom posunú do produkcie. Aplikácie otvárame na tabletoch, smartfónoch, laptopoch, chladničkách, … – preto je dobré ak majú responzívny dizajn. Aby tej terminológie nebolo málo. Jednému programátorovi to množstvo technológií, s ktorými sa denne stretáva, začína prerastať cez hlavu. Preto sa web vývojári začínajú špecializovať. Dve najvýraznejšie skupiny sú front-end a back-end vývojári. Ďalší by boli full-stack vývojári, DevOps.. Tento text ti pomôže pochopiť, čo je úlohou front-end a back-end vývojára a s akými technológiami najčastejšie tieto dve skupiny vývojárov pracujú. PolopatistickyAk chce programátor postaviť dom, najprv zavolá back-end tím: murára a tesára. Back-end murár mu vybetónuje základy, postaví steny, vymuruje otvory na dvere a okná. Neskôr mu pomôže back-end tesár. Ten postaví strechu. V takomto dome by sa však bývalo ťažko - preto príde front-end tím: maliar a bytový dizajnér. Front-end tím zútulní tehlové steny a zariadi dom – aby všetko vyzeralo parádne, spolu ladilo a hlavne plnilo svoj účel. Ak to premeníme na web-development svet, tak back-end je základom pre našu aplikáciu. Je to skrytá časť aplikácie (používateľ ju nevidí), ktorá úzko spolupracuje so serverom, databázou. Úlohou back-end programátora je tvoriť kód, ktorý je efektívny, zbytočne nezaťažuje server, databázu - napr. aby používateľ nečakal príliš dlho na potrebné dáta. Už dve sekundy sú nekonečno. Front-end je zase tá časť aplikácie, ktorú vidí a pracuje s ňou používateľ. Často je označovaná pojmom User Interface (UI). Úlohou front-end programátora je, aby sa aplikácia zobrazovala každému používateľovi správne a aby mu čo najviac uľahčila prácu s aplikáciou. Front-end programátor vie z tvojho jednoduchého kliku na tlačidlo vyrobiť parádnu animáciu, ktorá ti napr. odkryje ďalšie možnosti práce s aplikáciou. Jazyky, nástrojeVývojári pracujú s mnnožstvom technológií, ktoré sa niekedy menia od projektu k projektu. Diagramy zobrazujú len najpoužívanejšie technológie. Dôležité je rozumieť, že nie všetky technológie z diagramu musí vývojár ovládať - je však dobré o väčšine z nich aspoň niečo vedieť - pri veľkých projektoch môže mať niektorá technológia výhody, iná nevýhody. To je ale na dlhú debatu a mal by to riešiť vývojársky tím interne, najlepšie face-to-face. V žiadnom prípade neodporúčam pýtať sa na sociálnych sieťach, či je lepší React, alebo Vue JS. Nikam to nevedie :)  [Image] Backend technológie [Image] Frontend technológie Samostatnú kapitolu by mohli tvoriť webové frameworky ako Ruby on Rails, Laravel alebo ExpressJS. Tie nám uľahčujú postaviť celú aplikáciu - front-end aj back-end časť. Technológie v Learn2CodeKaždá webová aplikácia má iné nároky a výber technológií často súvisí aj so skúsenosťami a preferenciami tímu riadeného skúseným CTO. Takýto koktejl technológií sme namiešali v Learn2Code pre naše projekty: Front-EndPracujeme s frameworkom Ruby on Rails. S front-end časťou aplikácie nám v Rails pomáha SASS preprocesor, vďaka ktorému máme CSS štýly organizované v komponentoch a veľmi jednoducho sa v nich orientuje. Základ nášho layoutu tvorí framework Bootstrap, ktorého vzhľad je upravený pomocou CSS štýlov - opäť s využitím SASS. Na niektoré časti aplikácie https://skillmea.sk sme nasadili React - prezeranie videí, fórum. V starších projektoch stále využívame jQuery. Uvažovali sme nad experimentovaním s Vue.js, nakoniec túto technológiu neimplementujeme. Yablko však bude robiť online kurz na Vue.js :) React a všetky jeho závislosti spravuje NPM - Node Package Manager a WebPack, ktorý nakoniec vypľuje jeden veľký bundle.js súbor. Back-EndKeďže používame Rails, back-end je písaný v skriptovacom jazyku Ruby. Na testovanie používame RSpec. Používame relačnú databázu PostgreSQL, kde máme uložené všetky dáta. DevOpsAplikácie nám bežia na serveroch Heroku. Obrázky skladujeme na Amazon S3. Video obsah je uložený na serveroch Vimeo, s ktorými komunikuje React prostredníctvom REST API. Kód všetkých projektov skladujeme v privátnych repozitároch na GitHub. Na nekvalitný kód nás neustále upozorňuje RuboCop a JSHint. Nasadenie nových funkcií do hlavnej aplikácie je riadené s pomocou Continuous Integration - CodeShip.com. Niektoré z technológií, ktoré používame možno poznáš. Niektoré z nich ťa dokonca vieme naučiť aj u nás v Learn2Code, stačí pozrieť zoznam kurzov. V ďalších blogoch sa pozrieme na front-end aj back-end detailnejšie. Ak máš nejaké otázky, postrehy alebo si niečomu nerozumel, napíš komentár.
Programovanie bez Ing. - aj bez diplomu z informatiky
Vzdelávanie
21.03.2017
Lubo Herkoo

Programovanie bez Ing. - aj bez diplomu z informatiky

Nemáš diplom z informatiky a chceš byť programátor(ka)? Žiadny problém! Počas môjho interview na pozíciu programátora v Learn2Code nikoho nezaujímalo, čo/kde som študoval. Dôležité boli skúsenosti, portfólio a (snáď) rozumné odpovede na otázky.[Na programovanie nepotrebuješ titul] Kniha o JavaScripte, ktorú som nikdy neprečítalProgramovať webové aplikácie som sa naučil sám. Staval som na základoch zo strednej školy, kde som zistil, že web dokáže “postaviť” aj obyčajný smrteľník. Vtedy sme na hodinách informatiky programovali Pascal, neskôr vo vyššom ročníku aj VisualBasic, alebo C++. Tieto jazyky ma však veľmi nezaujali. Neriešili žiadny zásadný problém v mojom živote, preto nám v task-bare vždy svietil CounterStrike 1.6, alebo Divoké kmene - browserová online hra. V maturitnom ročníku nás však na predmete multimédiá naučili tvoriť jednoduché weby s využitím jazyka HTML a pravidiel CSS. HTML & CSS sú super v tom, že akonáhle zmeníte svoj kód, stačí refresh prehliadača a zmeny vidíte okamžite.  Žiadna kompilácia kódu, žiadne využívanie komplikovaných knižníc na zobrazovanie grafiky. Jednoduchý systém: pravidlo - výsledok. Web tiež stačilo nahrať cez FTP na niektorý z voľne dostupných free hostingových serverov a videl to celý svet. Síce vám to oblepili reklamou od vrchu až dole, ale kamošom som poslal len link a voila... Fotky z dozvukov si mohol pozrieť každý, kto mal internet. Počas predĺžených prázdnin pred štúdiom na vysokej škole som budoval svoju home-page. Chcel som tam veľmi mať moderné vysúvacie menu. Zistil som, že také menu bez JavaScriptu nedám. Kúpil som si teda svoju prvú “programátorskú” knihu: JavaScript - programujeme internetové aplikace. V českom jazyku. Nikdy som sa nedostal za 1. kapitolu: Začíname - stiahol som hotový .js súbor s menu, ktoré vyzeralo tak, ako som chcel. Vôbec som netušil, ako to celé funguje, ale hľadal som. Vtedy ma Google poslal na neskutočný zdroj informácií, web, ktorý som ako jediný prečítal celý: jakpsatweb.cz. Boom!  Guestbook.PHPKeďže web bez knihy návštev nebol webom, skúmal som možnosti. Potreboval som nejaké PHP a to zase potrebovalo nejaké MySQL a nejako to bolo spolu prepojené. Pochopiť princíp PHP a databáz mi pomohol český tutoriál, ktorý som už dnes žiaľ nenašiel. Podarilo sa mi dať dokopy súbor s asi 500 riadkami PHP spaghetti kódu a guestbook.php bol na svete.  Výber vysokej školy nemal nič spoločné s kariérou programátora. Študoval som učiteľstvo anglického jazyka a informatiky na Katolíckej univerzite v Ružomberku. Štúdium učiteľskej informatiky sa veľmi nelíši od stredoškolskej informatiky na technickej škole, takže som sa cez prednášky vrátil k Divokým kmeňom. Moja spolužiačka vtedy hľadala niekoho, kto pomôže jej kamarátovi propagovať webom neziskovú organizáciu, ktorá pomáha africkým deťom. Za peniaze. Keďže som zvládol guestbook.php, zvládnem aj toto. Neveril som vlastným očiam, keď som pri písaní tohoto textu našiel svoju prvú zákazku v živote: LiveAid CZ. Pamätám si, že môj honorár bol 400,- SK. WordPressKeďže som stále snoril okolo PHP, narazil som aj na redakčný systém Wordpress. Ten mi pomohol pracovať efektívnejšie a zvládnuť zákazky rýchlejšie. Pri práci s Wordpress som zvládol aj objektové programovanie v PHP - pomohla mi k tomu výborná kniha od O’reilly: Programming PHP, je to však skôr príručka ako nejaký tutoriál.  Ruby on RailsPočas celej tej doby som bol v kontakte so svojím kamarátom, spolužiakom zo strednej školy. Stále sme debatovali o Apple, IT, programovaní. Jemu PHP nikdy nesedelo. Bol vždy trendy a tiež stále niečo programoval - nevedel som však v akom jazyku. Keďže sme obaja študovali na VŠ (on na FEI STUBA) a bolo pre nás ako študentov pomerne jednoduché dostať sa do USA, využili sme to. Po niekoľkých týždňoch práce sme objednali svoje prvé MacBook Pro. Podstatné na tom celom je to, že on za tie tri mesiace v USA po večeroch naprogramoval vlastnú verziu browserovej hry Babylon (žiaľ, nikdy ju nepublikoval online). Občas spomenul nejaké railsy, ale nikdy som tomu nevenoval pozornosť. Až sme začali kecať a ja som postupne vymenil PHP za Ruby on Rails.  To, že sme investovali do laptopov si všimol aj majiteľ hotela, v ktorom sme pracovali. Dali sme reč, zistili sme, že mu vieme pomôcť s webom pre jeho hotely a odvtedy sme mali teplé miesto v kancelárii, kde sme vytvorili http://angelinnhotels.com/. Webdizajn nič moc, ale nemuseli sme čistiť klimatizácie a izby po Američanoch s nevychovanými deťmi.  VIVANTPo návrate z USA sme s Jozefom komunikovali intenzívnejšie. Vytvorili sme firmu a dostali sme sa k profi zákazke od Ministerstva školstva. Vyhrali sme súťaž na vytvorenie systému na správu neziskových organizácií v rámci SR. Rozdelili sme úlohy a pustili sa do toho. Bolo to vzrušujúce obdobie. Kupovali sme svoj vlastný server, ktorý sme umiestnili do serverovne v Bratislave. S pomocou Jozefovho brata - linuxového guru - sme ho nakonfigurovali. Na vývoj aplikácie sme samozrejme použili Ruby on Rails a databázu PostgreSQL. Bol to prvý seriózny projekt, ktorý však mal aj svoje zazmluvnené termíny. Projekt VIVANT, ako sme ho nazvali, sme dotiahli do úspešného konca. Používa sa dodnes (http://adam.iuventa.sk).  Reštart - online kurzyPočas práce na VIVANT som dokončil vysokú školu a začal pracovať ako učiteľ na ZŠ. Neviem či to bolo správne rozhodnutie, alebo nie. Povedal som si, že programovať budem môcť aj popri práci učiteľa. Kým som učil na polovičný úväzok, tak to aj bolo možné. Neskôr som však zistil, že prácu učiteľa na plný úväzok len ťažko dokážem spojiť s ďalšou mentálne náročnou prácou po večeroch. Učiteľovanie ma však natoľko vzalo, že som postupne prestal programovať takmer úplne. Sledoval som trendy, zaujímal sa o dianie, ale nepracoval som na žiadnom projekte.  Prestávka trvala takmer 6 rokov. Predstava seba - učiteľa na dôchodku - ma neskôr natoľko vystrašila, že som sa rozhodol odísť zo školstva a skúsiť reštart svojho programátorského remesla. Problém bol v tom, že som zameškal dve verzie Ruby On Rails, vo svete PHP pribudol nový dôležitý framework Laravel a zistil som, že svet JavaScriptu je totálne niekde inde ako pred piatimi rokmi - React, Angular, EmberJS, NodeJS... Nič z toho som neovládal. Aj pozostatky know-how spred piatich rokov už boli neaktuálne. Moje vedomosti potrebovali refresh. Zvolil som cestu online kurzov. Vďaka dobrej angličtine som siahol na kurzy Udemy. Neskôr som objavil aj iné portály - Codeschool, Pluralsight, Egghead, Codecademy. Z každého portálu som absolvoval aspoň jeden kurz. Naučil som sa čo je nové v Ruby a Ruby on Rails, ako viem testovať svoje webové aplikácie. Zlepšil som sa v Git. Pochopil som ako funguje JavaScript. Naučil som sa základy EmberJS, React a NodeJS. Zlepšil som svoje vedomosti v oblasti databáz, naučil som sa pracovať aj s NoSQL databázami. Nemusel som nikam chodiť. Všetko som zvládol v pohodlí domova, vlastným tempom. Job v Learn2CodeKeď sa mi ako-tak vrátilo sebavedomie a zrealizoval som zopár malých projektov, na Facebook-u zazdieľal niekto pozíciu Ruby on Rails programátora v Learn2Code. Zlátal som svoj životopis, dostavil sa na interview do veľkého mesta. Rada (CEO) som upozornil na svoju stroskotanú učiteľskú kariéru a porozprával som o svojich projektoch. Rozhodli sa to so mnou skúsiť. Ja neľutujem, Rada sa ale musíte opýtať vy :) Do it! Naučiť sa programovať weby nie je také náročné, ako by sa na prvý pohľad mohlo zdať. Absolvovať online kurzy bolo príjemné a vo väčšine prípadov aj zábavné, niekedy to však bola aj poriadna otrava - treba ale vydržať. Ľudia, ktorí kurzy vyrábajú tam nikdy nedajú vatu, aby natiahli čas. Teraz mám možnosť nahliadnuť aj do Yablkových kurzov a konštatujem, že môj guestbook.php by nemal podobu 500 riadkového spaghetti kódu, keby som mohol môj český tutoriál vymeniť za jeho Webrebel.
Pomôžte nám tým, že darujete 2% z daní
Vzdelávanie
14.02.2017
Martina Baumann

Pomôžte nám tým, že darujete 2% z daní

Blíži sa podávanie daňového priznania, a preto by sme sa vám radi pripomenuli. Aj tento rok majú zamestnanci, fyzické a právnické osoby možnosť pomôcť nášmu občianskemu združeniu. Darovaním 2% z vašich daní nám pomôžete k tomu, aby sme ďalej mohli poskytovať a šíriť vzdelávanie digitálnych zručností. Občianske združenie Learn2Code funguje od decembra 2012 a naším hlavným cieľom je priniesť kvalitné vzdelávanie v oblasti najmodernejších technológií deťom, študentom, absolventom, uchádzačom o prácu, mladým ľuďom a zároveň každému, kto by sa chcel naučiť ovládať IT jazyk. Aký bol rok 2016?V rámci roku 2016 sme s našim tímom priniesli niekoľko zaujímavých online a prezenčných kurzov, nechýbali ani rôzne akcie a novinky. Spomeňme aspoň zopár z nich. Vytvorili sme niekoľko bezplatných workshopov pre učiteľov, kde sa naučili všetko to, čo potrebujú vedieť pre samostatné vedenie programátorských krúžkov na svojej škole, taktiež získali kompletné materiály a metodické postupy. [Image] Nezabúdame ani na najmenších a aj tento rok sme organizovali programátorské tábory Summer Code Camp, kde sa deti naučili vytvoriť si svoju vlastnú hru. Ako je už pravidlom, tak aj tento posledný rok sme mysleli na ženy, keď sa viac ako 40 žien učilo programovať na Rails Girls v Bratislave. Prišli skúsení mentori nielen zo Slovenska, ale zavítali aj hostia z Prahy a Viedne. Organizátori workshopu mysleli na všetko, dievčatá rozdelili do skupín podľa doterajších skúsenosti s programovaním. [Image] Rails Girls Bratislava 2016  V októbri sme v rámci EU Code Week zorganizovali kurzy na popularizáciu programovania na základných školách, okrem Bratislavy sme zavítali aj do Žiliny, Banskej Bystrice a Košíc.[Image] V roku 2016 sme takisto učili našu najstaršiu generáciu základy práce s počítačom, ako si vyhľadávať na internete a o počítačovej bezpečnosti. Viac o tomto projekte Vnúčik nájdete na webovej stránke. [Image] Čo sme pre vás pripravili v roku 2017V tomto roku pokračujeme opäť s detskými kurzami, v ktorý sa deti vo veku od 8 rokov učia základy programovania v jazyku Scratch, MIT App Inventor alebo dokonca v dospeláckom jazyku JavaScript. Ďalej pokračujeme v príprave rôznych podujatí,, samozrejme nebude chýbať obľúbené podujatie pre ženy Rails Girls alebo súťaž pre programátorov - frontendistov Code in the Dark. Zamerali sme sa opäť viac na učiteľov. Ako? Aj v tomto roku ponúkame vzdelávanie učiteľov cez worskhopy, ktoré sú úplne zadarmo. Na úvod februára 2017 sme pripravili školenie pre učiteľov informatiky, v rámci ktorého predstavujeme interaktívnu vzdelávaciu hru pre deti. Pomocou nej sa deti naučia programovať hravou formou. A to je tiež veľká novinka, ktorú by sme chceli čo najviac rozšíriť na základné školy. Interaktívna vzdelávacia hra GalaxyCodr je zadarmo a deti vo veku od 7 rokov sa pomocou nej učia základy programovania hravou formou.[Image] Tiež sme mysleli na samotné školy a počas roka pripravujeme množstvo vzdelávacích materiálov, ktoré budeme distribuovať na všetky základné a stredné školy na Slovensku úplne zdarma. Ako darovať 2%?Identifikačné údaje o občianskom združení, ktoré je potrebné uviesť v daňovom priznaní alebo ich oznámiť vášmu zamestnávateľovi: Názov: Learn2Code Forma: občianske združenie Sídlo: Vajnorská 100/A, 83104 Bratislava IČO: 42346703 DIČ: 2023850763 Ak ste zamestnanec a nepodávate daňové priznanie: Do 15.2.2017 požiadajte svojho zamestnávateľa o vykonanie ročného zúčtovania zaplatených preddavkov na daň. Požiadajte ho o vystavenie Potvrdenie o zaplatení dane. Ak ste v roku 2016 odpracovali dobrovoľnícky minimálne 40 hodín a získate o tom Potvrdenie od organizácie/organizácií, pre ktoré ste v roku 2016 dobrovoľnícky pracovali, vypočítajte si 3% zo zaplatenej dane. Vyplňte VYHLÁSENIE o poukázaní 2% a obe tlačivá spolu s Potvrdením doručte do 30.4.2017 na daňový úrad podľa vášho bydliska (ak poukazujete 3% z dane, povinnou prílohou je aj Potvrdenie o odpracovaní minimálne 40 hodín dobrovoľníckej činnosti). Ak ste fyzická osoba, ktorá si daňové priznanie podáva sama (SZČO): Ak ste v roku 2016 neboli dobrovoľníkom, alebo dobrovoľnícky odpracovali menej ako 40 hodín, vypočítajte si 2% zo zaplatenej dane (suma musí byť minimálne 3 €). Ak ste v roku 2016 odpracovali dobrovoľnícky minimálne 40 hodín a získate o tom Dobrovoľníctvo-Vysielajúca organizácia 2016 alebo Dobrovoľníctvo-Príjemca 2016, vypočítajte si 3% zo zaplatenej dane. V daňovom priznaní pre fyzické osoby sú kolónky na poukázanie 2(3)% dane v prospech Learn2Code o.z. Riadne vyplnené daňové priznanie doručte do 31.3.2017 na daňový úrad podľa Vášho bydliska a v tomto termíne aj zaplaťte daň z príjmov. Ak ste právnická osoba: Ak do 31.3.2017 darujete na verejnoprospešné účely sumu vo výške aspoň 0,5% svojej dane, môžete poukázať 1,5% dane z príjmu. Ak do dátumu podania daňového priznania nedarujete na verejnoprospešné účely sumu vo výške aspoň 0,5% svojej dane, môžete poukázať iba 1% dane z príjmu. Riadne vyplnené daňové priznanie doručte v lehote, ktorú máte na podanie daňového priznania, na daňový úrad podľa Vášho sídla a v tomto termíne aj zaplaťte daň z príjmov. V prípade akýchkoľvek otázok nám napíšte email alebo zavolajte 0948 828 228. Ďakujeme za podporu našich vzdelávacích aktivít.