Náš blog

Java Files, Path, čítanie zo súboru
Vzdelávanie
17.09.2020
Skillmea

Java Files, Path, čítanie zo súboru

File I/O (Featuring NIO.2)Vo verzii 7 prišiel nový balík java.nio, v ktorom je nanovo urobené to, čo bolo v java.io. Chceš vedieť, ako čítať súbory (java read file)? Tak musíš vedieť, čo je to Path a Files. Môžeš používať obidva balíky. Musíš si ale dávať pozor na to, že ak pracuješ na projekte, kde sa používa java 6 a prípadne nižšie, tak ti nepôjdu tieto nové veci. Ale uvažujme, že na takýchto starých projektoch nepracujeme a budeme si vysvetľovať veci s použitím tohto nového balíka.  Budeme si hovoriť o základných triedach Path a Files, budeme manipulovať so súbormi a priečinkami a tak podobne. Tu je zaujímavý link porovnania funkcionality spomenutých balíkov a aké chyby mala java.io: https://docs.oracle.com/javase/tutorial/essential/io/legacy.html#mapping PathJednoducho povedané je to linka na súbor alebo na priečinok v danom operačnom systéme. Súbory sú hierarchicky uložené. Vo windowse je na vrchu označenie disku napríklad C:\home\skuska. V linuxových systémoch je root začínajúci lomítkom / napríklad /home/skuska. Tu môžeme vidieť, že vo windowse a v linuxe sa používajú úplne iné oddeľovače. Na to treba pamätať. Relatívna a absolútna cestaAbsolútnu cestu môžeme chápať ako úplnú celkovú adresu alebo cestu na súbor alebo priečinok.  C:\home\skuska je absolútna cesta, ktorá vždy obsahuje root, teda v tomto prípade označenie disku C:. Ak by som ale napísal len home\skuska\text.txt – tak vidím, že sa snažím pristúpiť na súbor text.txt, ktorý je umiestnení v priečinku home a skuska. Ale kde sa nachádza priecinok home? Bez ďalších informácii to neviem a to je relatívna cesta.  Trieda PathZákladná trieda v tomto balíku – používa sa aby uchovávala informácie o názve súboru, priečinkoch ktoré sú použité na skonštruovanie cesty aby bolo možné lokalizovať dané dokumenty alebo priečinky. Path na windowse je bude odlišná od Path na unixe.  Ak hovoríme o triede Path, tak môžeme v jednoduchosti povedať, že môžeme manipulovať s cestou, ktorá vedie k priečinkom alebo súborom.  Trieda FilesTáto trieda slúži na manipuláciu s priečinkami a súbormi. Používa triedu Path.  Keď pristupujeme k súborom alebo celkovo ku zdrojom na disku – tak sú „otvorené“. Potom s nimi pracujeme a keď už s nimi nepracujeme tak musíme zavolať „uzatvorenie“ práce s týmito zdrojmi aby ich mohol používať niekto iný.  Na automatické uzatvorenie môžeme použiť try-with-resources.  Práca so súbormiMáš Path inštanciu, ktorá reprezentuje súbor alebo priečinok. Teraz ale ešte stále nevieš, či reálne tento súbor alebo priečinok existuje, či sa dá z neho čítať, či sa dá do neho zapisovať a podobne. Existuje subor alebo neexistuje, môžem k nemu pristúpiť? Path path = Paths.get("C:\\work\\tools\\Apache Software Foundation\\Tomcat6\\logs\\service-install.log");  System.out.println(Files.exists(path));  System.out.println(Files.notExists(path));  isReadable(Path)  isWritable(Path) isExecutable(Path) Sú to rovnaké súbory? isSameFile(Path, Path)  mazanie súboru Files.delete(path);  Vyhodí to výnimku prečo sa to nepodarilo ak sa to nepodarilo. Metoda deleteIfExists(Path) tiež zmaže súbor ale ak súbor neexistuje tak sa nevyhodí výnimka.     kopírovanie súboru Files.copy(source, target, REPLACE_EXISTING);Do metody sa dajú dať varargs options. StandardCopyOption a LinkOption enums sú podporované. Všimni si, že ak dáš ctrl a click na copy metodu, tak je tam CopyOption... options. Potom klikni ctrl na copy option a zistíš že je to len interface ale v popise máš napísane, že vieš použiť StandartCopyOption čo implementuje CopyOption.[Image] Tu si môžeš pozrieť implementácie CopyOption rozhrania.  Ak kopíruješ súbor na miesto kde sa takýto súbor už nachádza, tak sa súbor neprepíše ak nezadáš option REPLACE_EXISTING.  Priečinky sa dajú tiež kopírovať ale skopírujú sa prázdne  aj keď v nich bol nejaký súbor.  Čítanie sú súboru (read from file)Konečne sme prišli na kus kódu, vďaka ktorému môžeš čítať zo súboru (read from file):  Path path = Paths.get("C:\\work\\tools\\Apache Software Foundation\\Tomcat6\\logs\\service-install.log"); List<String> lines = Files.readAllLines(path);
Success story: freelance fronte-end developer Patrik
Success stories
12.08.2020
Skillmea

Success story: freelance fronte-end developer Patrik

V tomto článku ti predstavíme ďalšieho úspešného absolventa našich online kurzov. Patrik Stodola sa aktuálne venuje frontendu ako freelancer a tiež rozbieha vlastnú firmu. V rozhovore sa dozvieš, ako sa Patrik k webom dostal, aká bola jeho cesta vzdelávania a čo odporúča začiatočníkom v oblasti tvorby webov a programovania. Čítaj ďalej. Začnime tvojou aktuálnou prácou. Čo presne robíš, aká je tvoja pozícia?Momentálne pracujem ako externý front-end developer pre viaceré firmy, a takisto popri tom riešim aj svoje vlastné zákazky. Ešte ako študent som mal myšlienku vlastnej firmy, ktorá by sa zaoberala kompletnou tvorbou webstránok - digitalnydizajn.sk, môj vlastný projekt, ktorý takisto rozbieham.  Ako si sa k tejto pozícii dostal?Na strednej škole. Dodnes si pamätám, ako sme na praxi začali preberať tvorbu obyčajných, statických HTML stránok. Nevedel som ani “ň”. Vôbec som tomu nerozumel - ale to bolo TO, čo ma k tomu pritiahlo. Vždy, keď si neviem s niečim rady, robím to dovtedy, až kým sa mi to nepodarí. Prišiel som domov, otvoril youtube a začal som sa učiť pracovať s HTML a CSS podľa indických tutoriálov. To boli moje začiatky. Neskôr som objavil stránku Learn2Code - kurzy Webrebel od autora Yablko, ktoré mi neskutočne pomohli a vďaka nim som si začal privyrábať už ako študent SŠ.  Máš nejaký vzor, ktorý ťa inšpiruje? Osobu, ktorá je pre teba motivátorom?Áno, mám. Lektor Yablko, jeden z najlepších programátorov - čo sa týka vedomostí a podania myšlienky divákovi. Kde berieš inšpiráciu pre svoju prácu? Máš nejaké tipy, ktoré zaručene fungujú?Keď potrebujem načerpať inšpiráciu, otváram Instagram alebo Dribble. Pravidelne tam sledujem novinky z oblasti designu a webdesignu, moderné grafické prvky, či rôzne vychytávky, tipy a zaujímavé kombinácie.  V tejto oblasti je potrebné sledovať aktuálne trendy, inovácie. Ako si na tom ty? Stíhaš to všetko popri práci?Snažím sa vzdelávať dennodenne. Za necelý rok a pol som sa naučil pracovať s HTML, CSS, SCSS, PHP, JS, jQuery. Prednedávnom som si doma dokonca spravil vlastný webhosting, ktorý beží na NUC (miniPC), s ktorým mi tiež pomohol návod na Learn2Code. Čiže teraz miesto webhostingových služieb využívam vlastný hosting. V IT sfére je sa vždy čo učiť .. :-)  Čím všetkým si si musel prejsť, pokiaľ si sa vypracoval na túto pozíciu?Zo začiatku bolo celkom náročné, kým som sa naučil rozmýšľať ako programátor. Takisto si pamätám na moje prvé zákazky, ktoré ešte vtedy neboli tak kvalitne prepracované ako dnes. Veľa som študoval, čítal, získaval nové informácie, ale to najhlavnejšie - kódoval a programoval. Čo ťa najviac baví na tvojej práci? Máš nejaký obľúbený task, ktorý robíš najradšej?Len ten pocit že otváram kód, prípadne píšem nový mi prináša pocit šťastia. Takisto ma Veľmi baví stretávať sa s klientmi, komunikovať ohľadom práce alebo zákaziek. Práca s počítačmi bola od mala moja záľuba a odvtedy čo som sa naučil programovať sa to len stupňuje.  Dnes je obrovský dopyt po programátoroch. Čo by si poradil všetkým, ktorí nemajú žiadne skúsenosti, ale chceli by nejako začať?Najprv by som odporúčal naučiť sa pracovať s HTML a CSS, to je základ všetkých web stránok. Neskôr by som isto odporučil Bootstrap alebo Bulma, to je dnes dosť žiadané. A potom by som odporučil rozhodnúť sa, či sa zamerať na web stránky, webové aplikácie, iOS / Android aplikácie alebo rôzne systémy..  (PHP, JS, Python, Java, Swift a mnoho ďalších pre rôzne účely..) Čo je podľa teba najväčšou výhodou práce v IT odvetví?Veľká výhoda je to, že pri práci v IT odvetví môžete pracovať prakticky odkiaľkolvek. Stačí Vám notebook, internet a Vaše vedomosti.   Mal si niekedy pocit, že to nezvládneš? Bolo obdobie, kedy si chcel skončiť a robiť niečo úplne iné?Zatiaľ nie, keď cítim že je toho dosť, vypnem PC, idem sa prejsť, vyventilovať. Keď riešim nejaký programátorský problém, dosť účinná je “Duck Duck” metóda. Aké sú tvoje plány do budúcnosti?Moje plány do budúcnosti sú také, že by som chcel vo väčšom rozbehnúť projekt digitalnydizajn.sk . Popri tom sa sústredim aj na ďalšie projekty, ale toto je jeden z tých najhlavnejších. V prípade záujmu o spoluprácu ma môže hocikto kontaktovať.  Máš nejakú radu, ktorú by si chcel zdieľať so študentami, ktorí len začínajú s tvorbou web stránok a programovaním alebo so svojím vzdelávaním v IT oblasti?Odporúčam sa pravidelne vzdelávať v jazyku, v ktorom pracuješ. Isto nie je naškodu sa naučiť aj niečo pomimo, nikdy nevieš, kedy sa Ti tvoje vedomosti zídu. A hlavne sa nikým a ničím nenechať odradiť. Patrikovi ďakujeme za rozhovor a prajeme veľa úspechov v ďalšom programátorskom živote. Pokiaľ máš na Patrika alebo tento rozhovor nejaké otázky či pripomienky, neváhaj napísať do komentárov 👇👇
Vyskúšaj si Skillmea na mesiac zadarmo 😲
Novinky
04.08.2020
Skillmea

Vyskúšaj si Skillmea na mesiac zadarmo 😲

Pripravili sme si pre teba parádnu akciu - vyskúšaj si naše online kurzy na 30 dní zadarmo. Žiadne triky, skryté podmienky. Jednoducho sa prihlásiš do predplatného na mesiac a môžeš študovať to, na čo máš chuť. Postup aktivácie kurzov na 30 dní zadarmoJe potrebné ísť na stránku https://skillmea.sk/akcia a potom kliknúť na OBJEDNAŤ.[Akcia od Learn2Code]Pokiaľ nie si u nás zaregistrovaný, vytvoríš si registráciu so svojím emailom. Pokiaľ už zaregistrovaný si, jednoducho sa prihlásiš do svojho účtu. Následne sa dostaneš na objednávkový formulár a musíš zaškrtnúť políčko 'Mám zľavový kupón'. A do tohto políčka vložíš kód  “yablko  [V políčku zľavový kód zadaj: yablko]” Voilà, už len klikneš Vstúpiť do kurzu a predplatné máš aktivované. Potom si už len vyberieš kurzy, ktoré chceš študovať. Napríklad pôjdeš na stránku https://skillmea.sk/kurzy/online-kurz-javascript-es6 a klikneš Zapísať kurz. Platnosť tvojho predplatného sa zobrazuje v tvojom profile, môžeš si to pekne skontrolovať. Kód je platný len do 31.8.2020. Čo všetko na teba čakáAbsolvuj toľko kurzov, koľko len chceš! Či už sa zameriavaš na grafiku, weby, video či marketing, vybrať si môžeš z viac ako 140 online kurzov zahŕňajúcich stovky hodín videa. Tvorba stránok, programovanie, Excel, ale ani fotografovanie či strih videa ti už nebudú robiť najmenší problém 💪 Poď na to a aktivuj si svoje predplatné na mesiac ešte dnes, kód je platný do 31.8.2020 👇
Matematické operácie v Exceli
Vzdelávanie
28.07.2020
Skillmea

Matematické operácie v Exceli

Funkcie a vzorce sú možno najvyužívanejšou časťou Excelu a v tomto blogovom príspevku sa pozrieme na najdôležitejšie matematické operácie. Pomocou matematických operácií vieme vypočítať napríklad priemer, maximálne či minimálne hodnoty, súčty. Funkcia SUM (Súčet)Je to pravdepodobne najpoužívanejšia matematická funkcia, ktorá jednoducho spočíta hodnoty vo vybraných bunkách, viď obrázok nižšie. Funkciu SUM môžeme použiť aj na spočítanie normálnych čísiel, napr.  =SUM(9;2;8)funkcia nám dá výsledok 19.[Image] Funkcia SUMIF (Súčet na základe podmienky)Zaujímavou súčtovou matematickou funkciou je SUMIF, ktorá spočíta hodnoty s nejakou podmienkou. Napríklad z tabuľky nižšie chceme spočítať "Cenu po zlave" spolu za všetky objednávky z mesta Martin. V argumentoch funkcie SUMIF nás samotný Excel navádza na to, čo máme zadať. Boldom sú zvýraznené argumenty Kritériá a Rozsah, ktoré spolu súvisia. Kritériom je to, čo je našou podmienkou - teda konkrétne Martin. Rozsah sú tie bunky, v ktorých viete nájsť svoje kritériá. Čiže označíme stĺpec Mesto. Rozsah súhrnu je to, čo chcem spočítať - označíme teda stĺpec 'Cena po zlave'. Klikneme OK a dostaneme výsledný súčet. [Image] Funkcia ROUND (Zaokrúhľovanie)Funkcia Round zaokrúhľuje matematicky.  Argumentami funkcie je číslo, ktoré chceme zaokrúhliť a druhý argument je na koľko desatinných miest chceme dané číslo zaokrúhliť.[Image] Funkcia SUBTOTAL (Súčtový riadok)Táto funkcia sa využíva pri tvorbe súčtových riadkov v tabuľkách. Jedná sa o praktickú funkciu, ktorá dokáže nahradiť niekoľko ďalších funkcií, napr. SUM, COUNT, MIN, MAX a pod. Jej veľkou výhodou je, že pokiaľ použijete napr. filter, umožní ti rozhodnúť sa, čo so skrytými riadkami. Pozrime si obrázky nižšie, v prvom nemáme použité žiadne filtrovanie a výsledky funkcií SUM aj SUBTOTAL sú zhodné. Keď sa však pozrieme na obrázok číslo dva, v ktorom sú už použité filtrovania, výsledky funkcií SUM a SUBTOTAL sú rozdielne a správny výsledok nám dáva práve funkcia SUBTOTAL. Je to práve kvôli tomu, že spočítava len viditeľné hodnoty v bunkách, nie hodnoty v bunkách, ktoré sú skryté.[Image][Image] Funkciu subotal si vyvoláme ako každú inú funkciu a jej argumenty sú nasledovné:  • Číslo funkcie: pokiaľ nepoznáte presné číslo funkcie, je vhodné si otvoriť pomocníka a vyhľadať si tú správnu funkciu. V našom prípade je to číslo funckie 109, pretože ide o funkciu SUM a ignorujeme skryté hodnoty. • Odk1: rozsah, s ktorým má naša funkcia pracovať, čiže označíme všetký bunky, ktoré má funkcia spočítať alebo urobiť inú matematickú operáciu. Čísla funkcií pre funkciu SUBTOTAL: Číslo funkcie (zahŕňa skryté hodnoty)Číslo funkcie (ignoruje skryté hodnoty)Funkcia1101AVERAGE 2102COUNT3103COUNTA4104MAX5105MIN6106PRODUCT7107STDEV8108STDEVP9109SUM10110VAR11111VARP  Average (Priemer)Matematická funkcia Average (Priemer) vypočíta priemernú hodnotu z rozsahu buniek. Vyvoláme si funkciu a do syntaxe označíme všetky hodnoty, z ktorých chceme vypočítať priemer. [Image] Aj túto funckiu môžeme modifikovať pomocou IF a teda použiť funckiu s podmienkou AVERAGEIF. OdmocninaV Exceli viete veľmi rýchlo a jednoducho odmocňovať. Existuje na to matematická funkcia SQRT, ktorá má len jeden argument a teda číslo, z ktorého chceme druhú odmocninu vypočítať. Funkciu SQRT je možné použiť len pre druhú odmocninu. Ak chcete vypočítať inú, je potrebné použiť matematický vzorec Y(1/x) prípadne funkciu POWER(). Pokiaľ sa chceš zdokonaliť v Exceli, pozrite si niektorý z našich Excel online kurzov pre začiatočníkov alebo pokročilých. Ak sa chceš naučiť používať Excel ešte efektívnejšie, prečítaj si aj náš článok o klávesových skratkách v Exceli. V ďalšom blogovom príspevku sa pozrieme na ďalie zaujímavosti z Excelu, zameriame sa na vyhľadávacie funkcie VLOOKUP a HLOOKUP.
Čo je nové v Bootstrap 5
Novinky
02.07.2020
Lubo Herkoo

Čo je nové v Bootstrap 5

Od polovice júna máme prístup k prvej alpha verzii Bootstrap 5. Okrem novej verzie loga v sexi zátvorkách {B} sa dočkáme aj obrovského množstva vylepšení na všetkých frontoch. Už samotná dokumentácia je ukážkou vylepšeného vzhľadu a funkcionalít. Ak sa nevieš dočkať a chceš nový Bootstrap vyskúšať ASAP, začni tu. Je to stále Alpha verzia, neodporúčam ju preto nasadiť do žiadneho projektu. Kým dostaneme prvú betaverziu, môže prejsť zmenami, ktoré Ti vyrobia viac práce ako pomoci. Toto je "zostrih" najvýraznejších zmien, ktoré sme popísali presne pre Teba. Na mieru. [Image] JavaScriptUž žiadna podpora pre jQuery, aj keď..Pre niektorých killer feature, pre iných nič podstatné. Nový Bootstrap 5 nebude už obsahovať jQuery ako jednu zo svojich závislostí (aj napriek tomu, že jQuery "asi" stále žije a v apríli tohto roka sme dostali novú verziu jQuery - 3.5). Vieme to už dávno, už sme sa na to len tešili. Ešte nemáme oficiálne konečné čísla, ale očakávame, že Bootstrap vďaka tejto zásadnej zmene stratí tak na kilobajtoch, ako aj milisekundách. Ak si rozumieme 😉 Ak však stále jQuery vo svojom projekte potrebuješ, Bootstrap o tom bude vedieť a všetky komponenty pridá k modulom jQuery. V zásade to znamená, že stále bude možné inicializovať napríklad Tooltip komponent takýmto (starým) spôsobom (v prípade, že Bootstrap detekuje prítomnosť jQuery): $('[data-toggle="tooltip"]').tooltip(); Button pluginZmenami prejde aj state-management tlačidiel. Tie využívame napríklad aj ako indikátory ZAP/VYP pri rôznych funkcionalitách našich aplikácií. V starších verziách Bootstrap stav tlačidla riešil JavaScript. Bootstrap 5 sa snaží state-management riešiť v čo najvyššej miere dostupnými funkcionalitami a elementami HTML a CSS. Výsledkom tak je manažovanie stavu tlačidla pomocou checkbox a radio elementov. Naše ZAP/VYP tlačidlá tak budú o niečo spoľahlivejšie medzi rôznymi platformami. CSSCSS premennéS koncom podpory pre Internet Explorer prichádzajú aj nové možnosti. Jednou z nich sú aj CSS premenné. Tie sme uzreli už v predchádzajúcej verzii (root variables), avšak nie v takom rozsahu ako vo verzii 5 - kde sa css premenné dostali už aj do jednotlivých komponentov. Napríklad do tabuliek: .table { --bs-table-bg: #{$table-bg}; --bs-table-accent-bg: transparent; --bs-table-striped-color: #{$table-striped-color}; --bs-table-striped-bg: #{$table-striped-bg}; --bs-table-active-color: #{$table-active-color}; --bs-table-active-bg: #{$table-active-bg}; --bs-table-hover-color: #{$table-hover-color}; --bs-table-hover-bg: #{$table-hover-bg}; // Styles here... } Výhodou CSS premenných je ich používanie bez nutnosti skompilovania SASS kódu do CSS. Takto bude možné hodnoty niektorých premenných meniť v priamo Inspectore prehliadača, čo urýchli prácu napríklad pri prototypovaní. V Bootstrap 5 stále ostane možnosť definície premenných v SASS (_variables.scss) súboroch, tak, ako sme to robili doteraz. Osobne by som neočakával kompletný prechod zo SASS premenných do CSS premenných. SASS má stále svoju nenahraditeľnú úlohu pri vytváraní premenných pomocou mapovania, preto očakávam, že budeme mať k dispozícii kombináciu SASS premenných s CSS premennými aj v budúcnosti. Vylepšený gridZískame nový grid-tier pre obrazovky so šírkou väčšou ako 1400px - .col-xxl-. Rovnako medzery medzi jednotlivými stĺpcami gridu budú po novom "ohybnejšie". Získame novú css utilitu g pre naše .row. S gutter hodnotami takto bude možné pracovať podobne ako s margin a padding hodnotami, na čo sme si už zvykli: .g-2 .gx-2 .gy-2 .g-lg-2 .g-0 FormuláreOd verzie 4 sme mohli vo svojich aplikáciách používať checkbox, radio a file elementy dvoma spôsobmi: 1. Buď sme použili pôvodný, systémový vzhľad (poskytnutý browserom), 2. alebo sme použili nový vzhľad (custom-checkbox, custom-radio). Verzia 5 bude obsahovať už len nový vzhľad týchto elementov. Formuláre tak budú vypadať rovnako v každom prehliadači a operačnom systéme a prispôsobenie vzhľadu týchto komponentov bude rovnako jednoduchšie. Rovnako bude odstránený aj potrebný .form-group wrapper. Nové formuláre už budú obsahovať len jednotlivé form elementy, bez tohoto DIV elementu. Hurá! Menej kódu! 🙂 <form> <div class="mb-3"> <label for="exampleInputPassword1" class="form-label">Password</label> <input type="password" class="form-control" id="exampleInputPassword1"> </div> ... </form> Wrapper bude potrebný len pre custom elementy (.form-select, .form-check, .form-file) a tiež .form-group. Utilities APIUtility sú veľmi užitočné CSS triedy, ktorými zvyčajne meníme parametre rámovaní, farieb, spôsobov zobrazenia, tieňovania a rôznych veľkostí (width, height, padding, margin, ...). V praxi sa občas stáva, že sa nevmestíme do preddefinovaných utilít, ktoré sú súčasťou Bootstrap-u. Preto sme niekedy vytvárali vlastné triedy. Napríklad ak nastavujeme šírku nejakého elementu, máme k dispozícii takéto css triedy: .w-25 /* 25% */ .w-50 /* 50% */ .w-75 /* 75% */ .w-100 /* 100% */ .w-auto /* auto */ Ak sme potrebovali 33% width, 90% width, alebo iné hodnoty, vytvorili sme vlastné CSS triedy, urobili override na $sizes mapu v nejakom vlastnom súbore, alebo sme nebodaj editovali priamo $sizes mapu v súbore premenných _variables.scss. Vo verzii Bootstrap 5 máme k dispozícii čistejší a užitočnejší SASS nástroj, ako modifikovať existujúce, alebo pridať nové utility do nášho projektu, témy, alebo pluginu pre Bootstrap - utilities API: $utilities: map-merge( ( "width": ( property: width, class: w, values: ( 33: 33%, 90: 90% ) ), "input-padding": ( property: padding, class: ip, values: ( 0: 0, 1: .3rem, 2: .5rem, 3: .7rem, 4: .9rem, 5: 1rem, ) ) ), $utilities); Výsledkom takéhoto kódu budú nové css triedy utilít: .w-33 /* nastaví width na 33% */ .w-99 /* nastaví width na 90% */ .ip-1 /* nastaví padding na .3rem */ .ip-2 /* nastaví padding na .5rem */ .ip-3 /* nastaví padding na .7rem */ .ip-4 /* nastaví padding na .9rem */ .ip-5 /* nastaví padding na 1rem */ Ostatné vylepšeniaIkonyS alpha verziou Bootstrap 5 prichádza aj piata alpha verzia Bootstrap Icons. Je to sada viac ako 1000 ikon, ktoré sú nadizajnované tak, aby parádne ladili s Bootstrapom. Nifty funkcionalita je tiež SVG sprite, ktorá nám umožňuje vytvoriť vlastnú mapu SVG ikon a efektne ju používať v projekte bez toho, aby sme kód špinili samotným SVG zdrojovým kódom. <svg class="bi" width="32" height="32" fill="currentColor"> <use xlink:href="bootstrap-icons.svg#heart-fill"/> </svg> Osobne som veľkým fanúšikom Fontawesome ikon, ktoré obsahujú okrem enormne väčšieho množstva ikon a ich variantov aj veľmi užitočné spôsoby integrácie do projektov. Fontawesome nie sú však dostupné zdarma, preto možno v ďalšom projekte aj my v learn2code zvážime integráciu s Bootstrap ikonami. DokumentáciaUž na prvý pohľad je vidieť, že dokumentácia prešla zmenami. Tie však nie sú len vizuálne, ale vylepšený je aj samotný obsah. Orientácia medzi sekciami je vďaka novému postrannému menu rýchlejšia. Jednotlivé sekcie obsahujú aj akési "overview", ktoré postupne pribúdajú do každej hlavnej sekcie dokumentácie. Aj tieto zmeny urýchľujú navigáciu v dokumentácii a hľadanie želanej informácie je takto rýchlejšie. FarbyPribudli tiež nové farebné odtiene a vylepšený bude aj ich kontrastný pomer. ZáverTento text nie je a ani nechcel byť kompletným diffom verzie 4 s novou verziou 5. Omnoho viac noviniek nájdeš v stále rastúcej dokumentácii k Bootstrap 5. Ak som na niečo dôležité zabudol, pokojne sa ozvi v komentári.
Už 4 000 detí sa zúčastnilo webinárov STEM Kindloteka
Vzdelávanie
30.06.2020
Skillmea

Už 4 000 detí sa zúčastnilo webinárov STEM Kindloteka

Spoločnosť Amazon začala ponúkať v spolupráci so združením Learn2Code v apríli, počas pandémie a povinnej karantény, bezplatné online webináre STEM Kindloteka pre deti. Táto iniciatíva prebiehala súčasne v Česku i na Slovensku. Amazon chcel touto iniciatívou pomôcť deťom, ich rodičom a učiteľom v náročnom období, počas ktorého boli školy zatvorené. Od konca apríla až do konca júna združenie Learn2Code s podporou spoločnosti Amazon pripravilo 39 bezplatných webinárov, ktorých sa v obidvoch krajinách zúčastnilo 4 000 detí v priamom prenose. Dodatočne mali webináre na kanáli YouTube takmer 6 500 videní. Odozva od rodičov i detí bola veľmi pozitívna. „Syn je nadšený, Scratch-u sa venuje každý deň a vaše webináre sú super. Nestíha ich síce pozerať naživo ale na druhý deň ich pozerá na youtube a veľmi ho to baví!“ Hovorí pani Lenka, mama 9 ročného účastníka. Vyjadrenie syna bolo veľmi stručné ale výstižné: "Je to zábava a chcem sa prihlásiť aj na ďalší kurz." Webináre prebiehali dvakrát týždenne až do konca júna. Počas webinárov sa deti učili programovať v programovacom jazyku Scratch aj veľké hry ako napr. Flappy Bird, Pacman, Super Mario a ďalšie. Deti sa na nich učili všetko od začiatku až po zložitejšie príkazy. Po každom webinári dostali účastníci jeho videozáznam, zdrojové kódy, obrázky aj riešenia. Naše webináre sledovali aj učitelia, pre ktorých sa stali pomôckou. „Ja som bola veľmi spokojná s webinármi, veľa som sa naučila a účasťou na nich som získala nové zručnosti a cenné metodické materiály,“ hodnotí webináre Mária Vitikáčová, učiteľka zo ZŠ Bukovecká v Košiciach. „Super je archív a videonahrávky, ku ktorým sa môžeme kedykoľvek vrátiť,“ dodáva.      Účastníci mali možnosť pripojiť sa cez nástroj Zoom, v prípade, že sa chceli aktívne zapájať, alebo cez YouTube, ak chceli webinár len online sledovať. Všetky webináre si môžu aj naďalej pozrieť na YouTube kanáli Learn2Code. „Spolu bolo zrealizovaných takmer 40 webinárov, ktoré si deti hneď obľúbili. Aktívne sa do našich online stretnutí zapájali. Kládli veľa zvedavých otázok,“ povedal Marián Kristeľ marketing & operations z Learn2Code. „Každej lekcie sa zúčastnilo priemerne vyše 100 detí.” Spolupráca medzi Learn2Code a spoločnosťou Amazon zahŕňala tiež poskytnutie všetkých online kurzov pre deti od Learn2Code od polovice apríla do konca júna bezplatne. Aj táto aktivita zaznamenala veľký úspech. Na tieto kurzy sa od spustenia spolupráce prihlásilo viac ako 2000 používateľov.  Keďže spolupráca medzi Learn2Code a Amazonom zaznamenala úspech, pripravili spoločne aj ďalší formát, tentokrát pre rodičov a učiteľov. V špeciálnom videu s Luciou Šickovou, spoluzakladateľkou svetovo úspešnej slovenskej firmy Pixel Federation, ktorá tvorí počítačové hry vysvetlili, aký význam môže mať programovanie vo výchove a rozvoji detí. Lucia Šicková je zároveň mamou troch malých detí. Zaoberali sa teda aj témami, akú školu a prečo navštevujú jej deti, či a koľko sa s deťmi učí a ako sa to zmenilo počas domácej karantény, či overené tipy, čo vo výchove funguje. „Keďže koronakríza odhalila rôzne nečakané otázky ohľadne vzdelávania a výchovy detí, rozhodli sme sa podporiť aj takýto formát pre rodičov a učiteľov. Veríme, že to bude pre rodičov užitočné,“ povedala Miroslava Jozová, PR manažérka Amazon pre ČR a Slovensko.
Študijný plán pre budúceho Java programátora
Vzdelávanie
19.06.2020
Skillmea

Študijný plán pre budúceho Java programátora

Rozhodol si sa, že sa staneš Java programátorom. Dobrá voľba. V nasledujúcich riadkoch si prečítaj, kde začať, čo budeš potrebovať a ako dosiahnuť svoju vysnívanú métu. V tomto článku sa nebudeme venovať definícii programovania ani tomu, ktorý programovací jazyk si zvoliť. Budeme predpokladať, že si sa z istých dôvodov rozhodol práve pre Javu. Tými dôvodmi môže byť napríklad: • popularita Javy v programátorskom svete • dopyt po Java programátoroch na trhu práce • chceš naprogramovať Javovskú webovú alebo desktopovú aplikáciu • počul si, že Java je vhodná pre začiatočníkov v programovaní Popularita jazyka JavaPodľa indexu PYPL je Java druhým najpopulárnejším jazykom na svete. Rebríček PYPL je zostavovaný podľa toho, ako často sú tutoriály daného programovacieho jazyka vyhľadávané na Googli. Aj podľa iného indexu, TIOBE je Java druhá v rebríčku popularity, takže vybral si si správne.[Popularita jazyka Java podľa PYPL] Dopyt po Java programátorochDopyt po Java programátoroch zistíš z pracovných portálov, napr. na Profesia.sk, robime.it alebo ďalších. V čase písania tohto článku bolo na Profesii viac ako 120 ponúk pri zadaní pozície "Java programátor" (z celkových 480 programátorských pozícií). Keď si teda vyberáš programovací jazyk, je dôležité, aby aj firmy v ňom robili svoje projekty, aby si mal z dlhodobého hľadiska dostatok príležitostí. Java túto podmienku bez problémov spĺňa. V tomto rozhovore sa dočítaš, ako vyzerá práca Java developera v praxi. Čo chceš programovať?V Jave sa dajú programovať desktopové aj serverové aplikácie, vytvárať dynamické webové stránky, dá sa používať na prístup k dátam, umožňuje realizovať zložité distribuované výpočty a veľa ďalšieho. Javu využiješ aj pri programovaní Android aplikácií, takže jej využitie je takmer neobmedzené. Je Java vhodná pre začiatočníkov?Java je tu s nami už pekne dlho, takže existuje veľa zdrojov na štúdium, či už vo forme online kurzov, kníh alebo iných možností. Java programátorov je takisto dostatok, takže pravdepodobne nebudeš mať problém zohnať niekoho na mentoring, ak sa rozhodneš ísť touto cestou. Java odvodzuje svoju syntax z jazyka C a mnoho ďalších jazykov takisto odvodzuje svoju syntax z jazyka C. Takže keď sa naučíš Javu, ovládnuť jazyky ako C#, C++ alebo JavaScript bude jednoduchšie. Java je objektovo orientovaný jazyk, tieto základné koncepty teda vieš preniesť aj do iných jazykov. V Jave existuje kopec rôznych knižníc - grafika, sockety, a mnoho ďalšieho.  Naučiť sa Javu je relatívne jednoduché, vieš ju využívať vo svete desktopových alebo webových Java aplikácií, ale aj vo svete mobilných Android aplikácií. Javovský kód raz skompiluješ a beží všade (vďaka JVM!).  Java má aj svoje nevýhody, ako napr. to, že píšeš veľmi veľa kódu. Príklad, keď chceš niečo vypísať, v Jave to zapíšeš:  System.out.println(“Hello”); V Pythone by stačilo napísať len print(“Hello”). PeniazeKoľko zarábajú Java programátori? Podľa portálu platy.sk je to v rozmedzí 1350 až 2765 Eur. Záleží od tvojich znalostí, rokov praxe, projektov za sebou, regiónu a ďalších premenných.  Študijný plán Java programátora Základy programovania v JaveNajskôr sa nauč úplné základy jazyka Java. Potrebuješ vedieť, čo je to trieda, čo je to metóda, čo je premenná, ako sa píšu príkazy, čo je terminál, výpis, podmienka, cyklus, ako pracuje Java s pamäťou a iné základné znalosti. S týmito základmi vieš písať jednoduché príkazy a trénovať. Odporúčame ti vyskúšať náš online kurz Java pre začiatočníkov, ktorý máš k dispozícii zdarma. Java pre pokročilýchPo zvládnutí základov pristúpiš k pokročilým častiam jazyka ako sú výnimky, OOP (objektovo orientované programovanie), práca s Java triedami, rozhrania, rekurzia, funkcionálne programovanie pomocou Lambda výrazov, stream API, anotácie, reflexia, kolekcie, generické programovanie a podobne. Je toho dosť, pre úspešné zvládnutie zákutí Javy si namixuj tento koktail našich kurzov: 1. Java a OOP pre začiatočníkov 2. Java pre pokročilých SQLVeľké množstvo aplikácií pracuje sa databázami. Aby si aj ty v aplikáciách vedel správne používať databázu, musíš sa naučiť základy jazyka SQL. Pomocou SQL príkazov vieme z databázy čítať dáta, zapisovať dáta, meniť dáta, alebo ich mazať. Keď budeš študovať ako pracovať v aplikáciách s databázami, stretneš sa s pojmom CRUD. To nie je nič iné ako create, read, update a delete. Teda základné operácie. Yablko spravil online kurz na SQL databázy MySQL a SQLite, sú v ňom vysvetlované aj základy samotného SQL-ka, tak si to naštuduj. GitPri práci na projektoch musíš mať prehľad o zmenách v tvojom alebo kolegovom kóde. V priebehu času budeš mať určite množstvo verzií svojho programu. Ako programátor budeš pracovať v tíme. Každý bude pracovať na svojej časti programu a potom si tieto svoje verzie zlúčite dokopy. Nielen na tieto úlohy budeš používať Git. Git je najrozšírenejší verzionovací nástroj a určite stojí za to naučiť sa ho používať. Každý programátor musí vedieť pracovať s Gitom, nauč sa to aj ty pomocou tohto online kurzu. Java junior programátorNa záver tvojho vzdelávania v Jave nesmieš vynechať témy ako Maven, Servlety a ORM - JPA (Hibernate). Keď sa ti do hlavy dostanú aj tieto pojmy, je z teba junior programátor. Online kurz pre ašpirujúcich Java junior programátorov nájdeš tu. Bonus: Spring framework + Spring BootAby sa ti zo všetkým pracovalo jednoduchšie a chceš preskočiť pár krokov v príprave aplikácie, chceš mať po ruke množstvo pomocných technológií, tak určite siahneš po Spring frameworku. Spring je najpoužívanejší javovský vývojársky framework súčasnosti. Ak si otvoríš pracovné ponuky zamerané na Javu, tak tam takmer určite nájdeš požiadavku, aby si ovládal Spring. Spring uľahčuje enterprise java vývoj, čo ho robí prvou voľbou pri projektoch ľubovoľnej veľkosti. Vývoj Springu začal, keď bolo veľmi komplikované začať vyvíjať enterprise aplikácie v enterprise edícii javy. Tvorcovia Springu toto využili a vytvorili nástroj, ktorý je vysoko používaný a uľahčuje množstvo vecí. ZáverTento článok mal za cieľ predstaviť ti programovací jazyk Java a ukázať, čo všetko potrebuješ ako budúci Java programátor vedieť. Okrem Javy je to SQL, Git a ideálne aj Spring framework. Stať sa Java programátorom sa ti môže javiť ako nedosiahnuteľná méta, opak je ale pravdou. Java je od začiatku navrhovaná tak, aby tvoja krivka učenia bola pokiaľ možno čo najstrmšia.
Eratostenovo sito
Vzdelávanie
30.05.2020
Skillmea

Eratostenovo sito

V predchádzajúcom blogu sme sa zaoberali prvočíslami. Ukázali sme si ukážku programu, ktorý rozoznal, či zadané číslo je prvočíslom alebo nie. Dnes by som vám chcel na konkrétnom príklade ukázať, ako rieši podtitulok tohto blogu a teda, zistiť prvočísla na definovanom intervale prirodzených čísel, pričom hornú hranicu intervalu bude zadávať používateľ. Spodnou hranicou intervalu bude 0, ktorá samozrejme nie je prvočíslom a to z toho dôvodu, že prvočíslo je deliteľné číslom 1 a samým sebou. Z toho vyplýva, že 0, aj keď je deliteľná číslom 1, nie je deliteľná 0, pretože výraz 0/0 nie je definovaný. Hoci by si niekto myslel, že výsledok by mohol byť rovný číslu 1, nie je tomu tak. Nula proste nemôže deliť žiadny výraz. Poďme teraz trochu ďalej. Už v minulom blogu som vyvodil záver, že ani 1 nie je prvočíslo a to preto, že je deliteľné 1 a sebou samým, čo je opäť číslo 1. A 1 a 1, nie sú dva rôzne faktory. Podmienka, ktorá vylučuje, že 0 a 1 nie sú prvočísla, je samozrejme v mojom programe ošetrená. Čo ale ostatné čísla, ktoré sa nachádzajú na intervale, ktorého hornú hranicu zadal používateľ.  Na túto otázku nám dá priamo odpoveď jednoduchý algoritmus, ktorý nesie názov Eratostenove sito. Eratostenes z Kyrény bol okrem iného gréckym matematikom, ktorý pôsobil v dávnej Alexandrii približne 280 r. pred Kristom. Okrem toho, že vypočítal obvod zeme, definoval aj algoritmus, ktorý som pre vás implementoval vo vyššom programovacom jazyku C++. Predtým, ako si detailne rozoberieme program napísaný v jazyku C++, si algoritmus ukážeme na nasledovných prirodzených číslach: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19. Máme teda postupnosť, ktorá je na začiatku definovaná číslom 0 vrátane a na konci číslom 20, ktoré sa nachádza už mimo intervalu postupnosti. A to je práve tá horná hranica, ktorá bola vyššie spomenutá. Umiestnime túto postupnosť do jednoriadkovej tabuľky, ktorá v mojom programe bude reprezentovaná vektorom celých čísel (vektor typu int). Ako poznámku chcem dodať, že budeme teda používať triedu knižnice STL, ktorou je vektor. Vektor je entita, z ktorou sa lepšie manipuluje ako s poľom. Práve preto je tento článok určený tým čitateľom, ktorým je aspoň trochu známa problematika vektorov. Tým, ktorí nie sú oboznámení s problematikou vektorov, odporúčam najskôr preštudovať typ size_t, triedu vector a členskú metódu triedy vector push_back(). Potom sa s elánom môžu títo čitatelia pustiť do tohto blogu. Ale naspäť k nášmu definovanému problému. Majme teda spomínanú postupnosť:[Image] V tejto tabuľke vyznačme modrou farbou skutočnosť, že 0 a 1 nie sú prvočísla:[Image] K indexom, na ktorých sa nachádzajú čísla 0 a 1 sa už teda nebudeme vracať. Poďme sa pozrieť na číslo 2. O tomto čísle vieme, že je najmenšie prvočíslo na tomto intervale, čo je prvotnou podmienkou k tomu, aby sme vyriešili podtitulok tohto blogu. Ostatné prvky (čísla) postupnosti budeme testovať Eratostenovym sitom – to znamená, že budeme teraz odstraňovať násobky čísla 2. Keďže číslo 3 nie je násobkom čísla 2, prejde Eratostenovym sitom. Zaznačme teda do tabuľky násobky čísla 2 červenou farbou.[Image] Vidíme, že v jednom kroku odstránil algoritmus (Eratostenovo sito) čísla 4, 6, 8, 10, 12, 14, 16 a 18. Zároveň sa už nebudeme žiadnym spôsobom vracať k indexu čísla 2. S predchádzajúcej tabuľky je taktiež očividné, že číslo 3 je prvočíslom. Poďme teraz odstrániť z tabuľky jeho násobky a zaznačme túto skutočnosť zelenou farbou.[Image] V ďalšom kroku nám algoritmus odstránil číslo 6, 9, 12, 15, 18, ktoré prvočíslami nie sú. Áno, zelenou farbou sme označili aj niektoré čísla, ktoré boli v predchádzajúcom kroku odstránené násobkom čísla 2. To však nemení nič na skutočnosti, že tento krok nám odstránil z postupnosti ďalšie čísla, ktorými sú čísla: 9 a 15. Po vykonaní spomínaného kroku vidíme, že číslo 5 ostalo vyznačené žltou farbou. Číslo 5 je teda prvočíslo, pretože prešlo Eratostenovym sitom. Keď by sme v nasledujúcom kroku odstránili násobky čísla 5. zistíme, že už boli čísla 10 a 15 odstránené násobkom iného čísla. Kedy sa teda algoritmus skončí ? Bude to vtedy, pokým sa skutočne nedostaneme k číslu 19. Číslo 19 už nemá za úlohu odstraňovať žiadny násobok, pretože sa za nim v našej tabuľke nič nenachádza. Dosiahnutie jeho indexu určitou interačnou premennou je podmienkou na skončenie algoritmu, hoci sa už v stave prvočísel alebo odstránených čísel nič nemení. Vyberme teraz všetky čísla označené žltou farbou z našej tabuľky:[Image] Ostanú nám čísla, ktoré sú zaiste prvočíslami. A tak sme sa dostali k výsledku nášho algoritmu, ktorými sú čísla 2, 3, 5, 7, 11, 13, 17 a 19. Pre kontrolu si môžete porovnať tieto čísla s prvočíslami uvedenými v iných zdrojoch, ale určite dostanete ten istý výsledok. Poďme teraz do detailu rozobrať nasledujúci zdrojový kód napísaný v jazyku C++, ktorý je implementáciou verbálneho vysvetlenia algoritmu uvedeného vyššie. Jazyk C++ nám ponúka ďalšie možnosti, ako zefektívniť výpočet. Sú to napr. skoky v programe, ktoré môžeme vykonať pomocou kľúčových slov break a continue. Ale k tomu neskôr. Poďme pekne poporiadku od prvého riadku. Na riadku 1 máme direktívou preprocesora pridaný hlavičkový súbor iostream.h. To znamená, že na tento riadok sa vloží obsah súboru iostream.h. Podobne máme na riadku 2 a 3 vložené tou istou direktívou hlavičkové súbory vector.h a string.h. Na riadku 4 je deklarované, že budeme v celom zdrojovom kóde, ktorý tvorí jeden súbor používať menný priestor std a teda ho nemusíme explicitne vo funkcii main volať, keď budeme z neho potrebovať nejakú triedu alebo objekt. Príkladom môžu byť objekt cin alebo cout. Na riadku 6 definujeme funkciu main a následne na riadku 7 začína jej telo. Na riadku 8 deklarujeme premennú integrálneho typu a to konkrétne char s identifikátorom premennej c_end. Táto premenná reprezentuje jeden znak, ktorý rozhodne o tom, či sa vonkajšia slučka po vykonaní vlastného algoritmu Eratostenovho sita ukončí alebo nie. Práve preto je na riadku 89 vyzvaný používateľ, aby stlačil kláves a alebo n. Ak potlačí n, program pokračuje ďalším cyklom while slučky. Ak potlačí iný kláves program sa skončí. Na riadku 9 je definovaná nová inštancia triedy string s identifikátorom sz, ktorá je inicializovaná na prázdnu hodnotu. Za touto inicializáciou je na riadku 10 uvedená deklarácia premennej iSZ na typ int bez ďalšej inicializácie. Na riadku 11 deklarujeme premennú typu bool, ktorá bude v programe uchovávať informáciu, či používateľ na výzvu programu odpovedal zadaním validnej hodnoty (teda hodnoty integer), ktorá sa bude uchovávať v premennej iSZ. Ak používateľ zadá platnú vstupnú informáciu z okna konzolovej aplikácie, premenná is_size_t sa nastaví na true, v opačnom prípade (ak teda používateľ nezadá platnú hodnotu z rozsahu integer) premenná is_size_t sa nastaví na hodnotu false. Premenná is_size_t je na riadku prvotne inicializovaná na hodnotu false. To reprezentuje stav, že premenná iSZ nebola ešte inicializovaná a to je v skutočnosti pravda. Na riadku 13 je uvedené kľúčové slovo do. To znamená, že sa začína telo slučky do while, v ktorej je ako podmienka uvedená komparácia obsahu premennej c_end so znakom n (viď. riadok 95). Keď program prejde ďalej, dostane sa na riadok 14, ktoré otvára telo spomínanej slučky do while, za ktorou na riadku 15 začína slučka while, čo znamená slučka s podmienkou na začiatku každého cyklu. Práve tu sa program pýta (porovnáva), či je v premennej uložená hodnota false. Ak áno, program pokračuje kladnou vetvou a vyzve na riadku 17, aby používateľ zadal hornú hranicu Eratostenovho sita. Táto hodnota sa nebude brať do úvahy pri testovaní čísla na prvočíslo. Na riadku 18 sa vstup zadaný používateľom načíta do premennej (objektu) sz, ktorá je novou inštanciou triedy string. Načítanie prebehne pomocou metódy getline(), ktorá má dva parametre a to objekt cin a objekt sz. Na riadku 20 nasleduje blog kódu try a catch, ktoré slúžia na rozpoznanie validity hodnoty zadanej používateľom do objektu sz. Vo vetve try sa program pokúša konvertovať hodnotu v objekte sz na hodnotu celého čísla, ktoré reprezentuje dĺžku intervalu, na ktorom hľadáme Eratostenovym sitom všetky prvočísla. Na túto konverziu sa použije funkcia stoi, čo v skratke znamená string to integer (v slovenskom jazyku string na integer). Po konverzii sa na riadku 24 ešte testuje, či používateľ nezadal na vstupe číslo 0. Ak áno program nastaví premennú is_size_t na hodnotu false a skočí pomocou príkazu continue na opätovné vyhodnotene podmienky ďalšieho cyklu slučky while. Keďže v premennej is_size_t je opäť false program pokračuje v slučke while, kedy na riadku 17 je používateľ znova vyzvaný na zadanie hornej hranice intervalu Eratostenovho sita. Takto môže byť program zacyklený dovtedy, pokým používateľ nezadá platnú hodnotu na vstupe konzolovej aplikácie.  Poďme sa pozrieť teraz na to, keď používateľ nezadá hodnotu z rozsahu integrálneho typu (napr. neplatnú hodnotu “hsfu“). Už asi tušíte, že sa nejedná o hodnotu integrálneho typu, ale o nezmyselné znaky, ktoré síce môže používateľ zadať, pretože tieto hodnoty je možné priradiť typu string, ale konverzia tejto hodnoty na hodnotu typu integer sa nepodarí. Práve preto je v našom programe umiestnený na riadku 34 blok catch, ktorí túto výnimku zachytí. A čo sa vlastne stane ďalej ? No to isté, čo v prípade zadania 0, to znamená, že sa nastaví hodnota false do premennej is_size_t a program skočí pomocou príkazu continue na začiatok slučky while, kde sa opätovne v podmienke vyhodnotí, či má pokračovať výzvou používateľa na zadanie validnej hodnoty hornej hranice Eratostenovho sita, a keďže je negácia hodnoty v premennej is_size_t true, program aj tak urobí. A takto bude program dookola vyzývať používateľa na zadanie platnej hodnoty. V prípade, že používateľ zadá platnú hodnotu, program skočí do vetvy try, kde potom skočí do zápornej vetvy príkazu if (klauzula else na riadku 29), kde sa už hodnota is_size_t nastaví na true. Tým pádom program v tomto cykle vyskočí so slučky while, pretože už nespĺňa podmienku na ďalšie vykonanie cyklu. Keď používateľ zadal platnú hornú hranicu Eratostenovho sita, môže sa táto informácia použiť na alokáciu vektora o dĺžky iSZ (alokácia vektora s identifikátorom vNumberVektor), čo je implementované na riadku 41. Na riadku 42 je alokovaný vektor o dĺžke 0 (vektor s identifikátorom vPrimeVektor). Do tohto vektora budeme ukladať prvočísla, ktoré prejdú Eratostenovym sitom. Dĺžku 0 má vektor preto, že je možné do neho pridávať prvočíslo po prvočísle, až keď časť algoritmu učiní rozhodnutie, či číslo, ktoré sa vyberá z vektora vNumberVektor je prvočíslom alebo nie. Na riadku 44 začína for slučka, ktorá je vo svojich jednotlivých cykloch riadená iteračnou premennou i, ktorá sa v každom cykle inkrementuje, až pokým nedosiahne hodnotu iSZ. Táto for slučka vo svojom tele napĺňa vektor vNumberVektor číslami od 0 po 19 (pretože horná hranica, ktorú sme vymedzili v ukážke je 20). Vlastný algoritmus Eratostenovho sita začína na riadku 49, kde je iteračná premenná na začiatku cyklu inicializovaná na hodnotu 2. Prečo je tomu tak ? Pretože na prvých dvoch indexoch vektora (index 0 a 1) sú uložené čísla 0 a 1 a tie nepatria do množiny prvočísel. Toto je základná idioma, ktorú je potrebné si uvedomiť. Keby sme totiž delili nulou, program by vyhlásil chybu. Keby sme delili jednotkou, nedostali by sme nič iné ako pôvodné číslo. Práve preto sa testujú iba čísla od hodnoty 3. Prečo od 3, keď iterujeme od 2 ? Jedná sa o prvotnú podmienku, ktorú som spomínal. Ak teda číslo na indexe 2 sa bude rovnať 2, pridáme toto číslo do vektora vPrimeVektor, pretože o ňom vieme, že je najmenšie prvočíslo. Ostatné čísla už budeme testovať, to znamená, že ak bude index väčší alebo rovný 3, program testuje konkrétne číslo tak, že delí toto číslo číslami uloženými vo vektore vPrimeVektor (čo sú prvočísla) so zvyškom. To znamená, že berie do úvahy zvyšok po delení čísla prvočíslom. Ak je tento zvyšok po delení rôzny od nuly, našli sme ďalšie prvočíslo a to uložíme za vnútorným cyklom riadeným iteračnou premennou j (k tomu nám poslúži premenná typu bool, do ktorej pri nájdení prvočísla uložíme hodnotu true, ktorá indikuje tento stav), do vektora vPrimeVektor, ktorý reprezentuje hľadané prvočísla. Uložíme ho na posledný index pomocou metódy push_back, čo nám zároveň zaručuje usporiadanie hľadaných prvočísel od najmenšieho po najväčšie. Ak by bol zvyšok po delení rovný nule, testované číslo nie je prvočíslom a to znamená, že nastavíme premennú flag na false, skočíme pomocou kľúčového slova break na koniec for slučky (iteračná premenná j). Do vektora vPrimeVektor sa v tomto prípade nič neuloží, pretože v premennej flag je uložené hodnota false. vonkajšia slučka for sa ukončí, keď sú otestované všetky čísla uložené vo vektore vNumberVektor. Posledným testovaným číslom je teda číslo 19.  Po otestovaní všetkých čísel nasleduje zápis prvočísel do okna konzolovej aplikácie (viď. riadok 78 až 83), na čo využijeme objekt cout a slučku for. K zápisu samozrejme patrí aj prechod kurzora na nový riadok na riadku 85.  Potom sa do okna konzolovej aplikácie zapíše výzva, ktorou sa program používateľa pýta, či chce program ukončiť alebo nie. Ak používateľ stlačí kláves n, program pokračuje a používateľ je vyzvaný na opätovné zadanie hornej hranice Eratostenovho sita s tým, že do premennej is_size_t sa opäť uloží hodnota false. Ak by používateľ potlačil inú klávesu (čo znamená ukončenie programu), program skočí za vonkajšiu slučku while na riadok 97, funkcia main vráti operačnému systému 0 a celý program sa končí. Pripomínam, že na riadku 98 je pravá programová zátvorka, ktorá uzatvára telo funkcie main. Výpis programu main.cpp 1: #include <iostream> 2: #include <vector> 3: #include <string> 4: using namespace std; 5: 6: int main() 7: { 8: char c_end; 9: string sz = ""; 10: int iSZ; 11: bool is_size_t = false; 12: 13: do 14: { 15: while (!is_size_t) 16: { 17: cout << "Nacitaj hornu hranicu Eratostenovho sita: "; 18: getline(cin, sz); 19: 20: try 21: { 22: iSZ = stoi(sz); 23: 24: if (iSZ == 0) 25: { 26: is_size_t = false; 27: continue; 28: } 29: else 30: { 31: is_size_t = true; 32: } 33: } 34: catch (const std::exception&) 35: { 36: is_size_t = false; 37: continue; 38: } 39: } 40: 41: vector<int> vNumberVector(iSZ); 42: vector<int> vPrimeVector(0); 43: 44: for (int i = 0; i < (int)vNumberVector.size(); i++) 45: { 46: vNumberVector.at(i) = i; 47: } 48: 49: for (int i = 2; i < (int)vNumberVector.size(); i++) 50: { 51: if (i == 2) 52: { 53: vPrimeVector.push_back(vNumberVector.at(i)); 54: } 55: else 56: { 57: bool flag = false; 58: for (int j = 0; j < (int)vPrimeVector.size(); j++) 59: { 60: if (vNumberVector.at(i) % vPrimeVector.at(j) != 0) 61: { 62: flag = true; 63: } 64: else 65: { 66: flag = false; 67: break; 68: } 69: } 70: 71: if (flag) 72: { 73: vPrimeVector.push_back(vNumberVector.at(i)); 74: } 75: } 76: } 77: 78: cout << "Vypis prvocisel:" << endl; 79: cout << "----------------" << endl; 80: for (int i = 0; i < (int)vPrimeVector.size(); i++) 81: { 82: cout << vPrimeVector.at(i) << " "; 83: } 84: 85: cout << endl; 86: 87: cout << "Chces skoncit [a/n]: "; 88: 89: cin >> c_end; 90: cout << endl << endl; 91: 92: cin.ignore(); 93: is_size_t = false; 94: 95: } while (c_end == 'n'); 96: 97: return 0; 98: }Okno konzolovej aplikácie pri hornej hranici Eratostenovho sita 20[Image] Na obrázku možno vidieť, že výsledné prvočísla sa stotožňujú s prvočíslami, ktoré sme vypočítali analytickým spôsobom (viď. posledná tabuľka v texte). Dúfam, že vás príklad a program s Eratostenovym sitom zaujal, stačí už len, aby ste si to implementovali na svojom počítači. Tento blog napísaI lektor C++ kurzov Marek ŠURKA. Ak máš nejaké otázky, napíš ich do komentárov.
Rozhovor s Adrejom - lektorom kurzu SketchUp
Rozhovory
18.05.2020
Skillmea

Rozhovor s Adrejom - lektorom kurzu SketchUp

Andrej Bryndza je macher na 3D a modelovanie. Robí s CAD softvérmi a 3D modelovaním všemožného druhu. Už na strednej škole ho fascinovali počítače a to nielen na hranie hier. Chodil na stavebnú priemyslovku a tak mal k výkresom a technike veľmi blízko. Keď sa k nemu dostala prvá verzia AutoCADu, odvtedy sa nezastavil. Prečítaj si rozhovor s Andrejom ⤵ Na začiatok najskôr začnime tvojou prácou. Čo presne robíš?  Keďže sa to nedá pomenovať jedným slovom, vediem ti radšej konkrétny príklad. Ľahšie si to predstavíš. Ak chceš napríklad rekonštruovať dom* (*nahraď čímkoľvek napríklad altánok, predajňa, bar, kancelária,...), a nevieš si predstaviť, ako by to mohlo následne vyzerať, tak ja ti viem pomôcť. Všetko zakreslím, spracujem projekt, 3D model a vizualizáciu, takže uvidíš všetky plánované zmeny ešte pred tým, ako by si vôbec začal niečo búrať. Čo je nesporná výhoda, pretože zmeny návrhu sa vždy robia ľahšie v predstihu na počítači, ako keď už máš rozbombarovaný dom a uprostred zistíš, že to nie je úplne tak, ako si chcel. Takýmto spôsobom ti ušetrím čas, nervy a peniaze.  Ale ak to povieme viac všeobecne, tak spracovávam projekty, výkresovú dokumentáciu, tvorím 3D modely a zabávam sa so všetkým, čo má niečo spoločné s CAD, 3D a grafikou.  Na akých projektoch si pracoval? Aké sú tvoje pracovné aktivity?  Mám skúsenosti s prácou na projektoch všetkých veľkostí. Od modelovania malého nábytku, cez altánky, rodinné domy, reštaurácie, administratívne budovy až po veľké technologické celky a budovy v priemysle.  Drvivú väčšinu môjho pracovného času však trávim nad kreslením výkresov prevažne stavebného a architektonického zamerania. Väčšina z toho sa spracuje aj ako 3D model a následne aj vizualizácia. Moje služby využívajú najrôznejšie firmy, architekti, dizajnéri, ale aj v podstate hocikto, kto chce niečo spracovať, nakresliť alebo vymodelovať na počítači.  Keď zrovna nekreslím, tak sa venujem výuke AutoCADu, SketchUPu a konzultáciám zameraným na problematiku CAD a kreslenia. [Image] Ako si sa dostal k 3D modelovaniu?To je aj ťažko povedať. Zrejme neexistuje konkrétmy moment, že kedy. Mňa to vžy neskutočne fascinovalo. Niekde už na strednej škole som zistil, že počítače sa dajú využiť aj inak ako len na hry. Chodil som na stavebnú priemyslovku takže k výkresom a technike mám veľmi blízko. Vtedy sme kreslili všetko ručne. Ku mne sa však dostala stará verzia AutoCADu a vtedy sa to nejak začalo. Začali prvé pokusy. Ako samouk som skúšal, čo AutoCAD dokáže. Keďže internet som nemal, bol to systém pokus/omyl, veľa pokusov a omylov. Začal som robiť školské projekty, prvé 3D modely a už sa to nedalo zastaviť. Vtedy ma to tak chytilo, že síce som nevedel čo a už vôbec nie ako to spravím, ale vedel som, že toto je presne to čím sa chcem raz živiť. A tak to nejak aj vyšlo 😊    Prečo si sa rozhodol spolupracovať s Learn2Code?Learn2Code mi dáva príležitosť odprezentovať to, čo viem. Dáva mi možnosť ukázať, že nie je také zložité kresliť a modelovať v 3D ako sa možno na prvý pohľad zdá a že sa to dokáže naučiť každý, kto má záujem. Na druhej strane mi táto spolupráca dala veľa aj z opačnej strany. Napriek tomu, že sa venujem kurzom a vzdelávaniu už dlšiu dobu, musel som sa naučiť mnoho vecí aj ja sám. A stále sa ich učiť musím pretože prezentoať niečo formou videa na naživo sú dve diametrálne rozdielne veci. Možnosť spolupráce s Learn2Code neľutujem a išiel by som do toho znovu.  Čo všetko sa človek naučí v tvojich online kurzoch SketchUp a AutoCAD?Tieto dva kurzy sú síce oddelené a na prvý pohľad sa môže zdať, že namajú nič spoločného, opak je však pravdou. V AutoCADe sa človek naučí kresliť presne a pripraviť si výkresy na stavbu, výrobu alebo ako podklad pre iné programy. Ide o celosvetovo najrozšírenejší program na kreslenie výkresov a považuje sa za akýsi štandard, základ, ktorý by mal ovládať každý kto má záujem v budúcnosti projektovať a kresliť. Bez ohľadu na to v akej oblasti. Po zvládnutí pochopenia princípov a ovládania dokonca nie je problém prejsť ani na iný podobne zameraný program keďže všetky vychádzajú a porovnávajú sa priamo s AutoCADom. AutoCAD má množstvo variánt a rôznych nadstavieb v závislosti od špecializácie a ide skutočne o silný nástroj na 2D a 3D projektovanie.  SketchUP je na druhej strane omnoho jednoduchší a nemá ani zdaľeka také široké možnosti práce ako AutoCAD. Ide však o veľmi dobrý a skutočne vydarený program na modelovanie a tvorbu v 3D. Je široko využívaný naprieč rôznymi oblasťami a po kombinácii s ďalším softvérém ako napríklad V-Ray alebo Lumion, dokážete produkovať veľmi pekné vizualizácie.  Takže ak to povieme v jednej vete, tak človek sa naučí nakresliť výkresy napríklad domu v AutoCADe, preniesť ich do SketchUPu a tam z nich spracovať pekný 3D model a následne aj vizualizáciu. Okrem toho získa základ pre prácu v iných programoch.   [Image] Je v tejto oblasti potrebné sledovať aktuálne trendy a inovácie? Ako si na tom ty? Tak asi ako vo všetkom, aj tu sa neustále niečo mení, vylepšuje, stále sú novinky a je dobré ak sa v tom človek trochu orientuje. Ja sa v oblasti kreslenia a modelovania pohybujem už trochu dlhšie a vidím obrovský pokrok tak v softvéri ako aj v postupoch projektovania a modelovania. Určite treba sledovať trendy a neustále skúšať nové veci, nebáť sa mnoho krát aj improvizovať. Keďže ja sa o túto problematiku zaujímam a baví ma, tak to ani neberiem ako prácu alebo ako povinnosť. Rád sledujem trendy, skúšam nové postupy, nechám sa inšpirovať a samozrejme aj ja sa musím stále učiť, aby som držal krok.     Čo ťa najviac baví na tvojej práci? Určite sa nedá hovoriť o stereotypnej práci. Najviac ma baví práve tá rôznorodosť. Baví ma komunikácia s klientom, hoci, čo si budeme hovoriť nie je to vždy ľahké 😊. Do každého projektu sa snažím dať čo najviac tak, aby zanechala dobrý dojem a aby sa ku mne klienti vrátili, prípadne aby ma odporučili aj ďalej.  Aké máš plány do budúcnosti?Plánujem pokračovať v tom čo robím a čo najlepšie ako len viem 😊. Niekedy je ťažké naplánovať si veci dopredu  a často treba improvizovať, nie je to jednoduché, ale stojí to za to, takže ja sa budem snažiť posúvať vpred.  Krátky odkaz všetkým čitateľom na záver 😊Zamerajte sa na veci, ktoré vás bavia. Nájdite si niečo, v čom ste lepší ako ostatní a rozvíjajte to. Každý má niečo. A skúšajte, neustále hľadajte nové možnosti. Určite sa vyskytú problémy, ale bez nich by to bolo veľmi ľahké, takže hlavne netreba prestávať. Ak vás zaujíma 3D a kreslenie, zožeňte si všetky dostupné programy, internet je plný návodov a ľudí ochotných pomôcť. Jeden program nestačí, dokonca ani dva, ani tri. Netreba vedieť všetko ako profík, dosť pomôžu aj základy. Treba vedieť čo najviac a následne to budete vedieť všetko kombinovať A prekvapivo zistíte, že tie programy majú veľa spoločného. A mnohokrát sú to šialené kombinácie a vymýšlanie. Takže tomu dosť pomôže keď vás to bude aj baviť. Takže aký je odkaz? Ak niečo chceš, tak sa do toho pusti. A neprestávaj sa učiť 😊 Andrejovi ďakujeme za rozhovor a pokiaľ ta niečo zaujíma, opýtaj sa otázky v komentároch. 👇👇
Ako sa tvorí JavaScript
Vzdelávanie
02.05.2020
Lubo Herkoo

Ako sa tvorí JavaScript

Tento rok nám frajeri z TC-39 (ak nevieš čo TC-39 je, čítaj ďalej) naservírujú novú verziu ECMAScript špecifikácie - novinky, ktoré môžeme ako vývojári používať pri programovaní v JavaScript-e. BigInt, optional chaining, Promise.allSettled, String.matchAll, globalThis a iné. O tom, aké problémy riešia tieto nové funkcionality si povieme v ďalšom blogu. Tento text je venovaný špecifikácii ECMAScript a okrem iného sa dočítaš: • prečo potrebujeme špecifikáciu na to, ako implementovať JavaScript Engine v prehliadači • prečo sa špecifikácia nevolá JavaScript, ale ECMAScript a čo je to vlastne tá ECMA • ako dlho trvá, kým sa nápad novej funkcionality jazyka JavaScript stane jeho súčasťou ECMAScript?V roku 1995 vyhrával oscary Tom Hanks s filmom Forest Gump, v rádiách fičal Gansta's Paradise od Coolia a web BBC vyzeral takto:[Image] 80% používateľov internetu surfovalo v prehliadači Netscape Navigator a Microsoft ešte len končil vývoj Internet Explorer-a. Ak ho vôbec niekedy dokončili. Nie všetci boli spokojní s tým, ako web vtedy fungoval: statický obsah, zdieľanie dokumentov a žiadny pohyb. Softvérový inžinier z Netscape - Mark Andreessen - chcel vytvoriť jazyk, ktorý by s ľahkosťou používali nielen vývojári, ale aj dizajnéri a do webov priniesli štipku interaktivity. Buttony a tak. Brendan Eich (meno si treba zapamätať - je to frajer) je človek, ktorý tento programovací jazyk začal tvoriť. Prvým pokusom bola implementácia jazyka SCHEME do prehliadača Netscape. Mimochodom - javisti v SUN Microsystems premýšľali nad spôsobom, ako spúšťať Java kód v prehliadači, čím tiež priniesli interaktivitu do webových stránok. Táto implementácia však nebola jednoduchá na používanie, a preto ostala voľbou korporátnych mastičov. Mocha (takto sa volala prvá verzia dnešného JavaScriptu) bola vytvorená ako alternatíva pre dizajnérov a vývojárov. Mocha » LiveScript » JavaScript vs JScriptVytvorenie prvej verzie Mocha trvalo len 10 dní. Neskôr bol tento jazyk premenovaný na LiveScript a potom na finálny JavaScript. Fun fact: slovo "Java" sa tam nedostalo náhodou - bol to však len marketingový spôsob, ako sa zviesť na popularite jazyka Java. Internet Explorer chcel tiež držať krok s dobou, a preto začali aj v MS pracovať na implementácii čohosi, čo bolo veľmi podobné JavaScriptu. Finálny jazyk sa volal JScript. Implementácia však bola natoľko odlišná od JavaScript-u, že tieto implementácie neboli navzájom kompatibilné! Výsledkom bola skutočnosť, že nebolo možné vytvoriť jeden web, ktorý by fungoval v oboch prehliadačoch. Tak vznikli vtedy slávne nálepky do footerov: "Best viewed in Internet Explorer" a "Best viewed in Netscape Navigator".[Image] Tvoriť weby v tej dobe nebola žiadna sranda, vývojári volali po štandarde, ktorý zjednotí implementácie JavaScriptu a JScriptu. Preto bol vytvorený štandard ECMAScript, ktorý zastrešila organizácia ECMA International. Tá fungovala už dávno predtým a jej úlohou bolo práve vytvárať štandardy pre informačné a komunikačné systémy. Od novembra 1996 existuje teda štandard ECMAScript, ktorý popisuje, ako má byť implementovaný JavaScript Engine. Fun fact: štandard nemôže niesť ikonický názov JavaScript, pretože na toto slovo až do dnešného dňa vlastní copyright firma Oracle. ECMA-262 a TC-39 - whaaat?ECMA International zastrešuje veľa štandardov, ten, ktorý sa týka implementácii JavaScriptu dostal číslo 262. ECMA-262 je teda názov štandardu, ktorý opisuje implementáciu JavaScriptu. Nie je to žiadne príjemné čítanie, aha. Komisia (rozumej: živé bytosti, ľudia), ktorá rozhoduje o tom, aké nové funkcie bude nová verzia JavaScriptu obsahovať, dostala zase názov TC-39. Členom tejto komisie nie je hocikto. Sú to frajeri - vybraní ľudia, ktorí zastupujú veľké firmy pôsobiace na online trhu (Facebook, PayPal, Google, Amazon, Mozilla...)[Image] Nová funkcionalita v JS - schvaľovací procesČlenovia TC-39 organizujú meetingy (väčšinou online) každé dva mesiace. Cieľom týchto meetingov je dopodrobna rozkecať a zanalyzovať, ktoré funkcie bude obsahovať nová verzia ECMAScript, alebo aké opravy budú v tejto verzii vykonané. Zaujímavé je, že táto komisia funguje na princípe zhody - takmer všetci členovia komisie musia súhlasiť s návrhom, aby sa ním čo i len začali zaoberať. Celkom zaujímavé je napríklad sledovať, ako sa dostala do JavaScript-u podpora pre BigInt - brutálne veľké čísla. Lebo v JavaScripte sme doteraz mohli používať len strašne veľké čísla. Stage 0Každý návrh začína na takzvanej nultej úrovni - Stage 0. Niektorý z členov TC-39 vytvorí dokument, ktorý popisuje danú funkcionalitu a aký problém rieši. Na meetingu členov TC-39 tento problém prednesie a členovia rozhodli, že napr. BigInt je super vec a posunuli ho do ďalšieho Stage-u. Stage 1Stage 1 je parádny úspech a zároveň to znamená, že niekedy v budúcnosti bude pravdepodobne daná funkcionalita súčasťou JavaScriptu. Všetkým (alebo takmer všetkým) členom TC-39 sa tento nápad páči a súhlasia s ním. Môže to však trvať roky. BigInt funkcionalita musí byť ešte podrobnejšie popísaná, musí obsahovať príklady, ako sa bude používať a analýzu, či to neprinesie aj nejaké problémy. Stage 2Takzvaný Draft. V tejto fáze je viac menej isté, že funkcionalita bude súčasťou JavaScript-u a preto musí byť ešte podrobnejšie popísaná. Toto je tiež stage, kedy sa premýšľa nad vhodnou syntaxou a rôznymi detailami používania novej funkcionality. V prípade BigInt funkcionality napr. členovia rozhodli, že bude vhodné, ak BigInt číslo bude obsahovať na konci znak n - aby prehliadač (engine) vedel, že pracuje s brutálne veľkým číslom, a nie len strašne veľkým číslom. const bigIntCislo = 12345n; const obycajneCislo = 12345; Stage 3Funkcionalita je takmer hotová a potrebuje feedback od vývojárov a vonkajšieho sveta. Všetci testujú BigInt vo svojich programoch. Tvorcovia internetových prehliadačov sa predbiehajú, kto z nich bude podporovať BigInt ako prvý - pretože implementovať BigInt už má zmysel. Stage 4Všetko je otestované a BigInt je súčasťou špecifikácie ECMAScript. Hotovo. ZáverCelý proces napr. v prípade BigInt trval 2 roky. Viem si predstaviť, že schvaľovanie niektorých ešte komplexnejších funkcionalít môže trvať ešte dlhšie. Frajerom z TC-39 ale môžeme ďakovať za to, že do JavaScriptu sa dostávajú naozaj len veci, ktoré dávajú zmysel.
Amazon a Skillmea prinášajú bezplatné webináre a online kurzy pre deti
Vzdelávanie
21.04.2020
Skillmea

Amazon a Skillmea prinášajú bezplatné webináre a online kurzy pre deti

Kým sú školy zatvorené, prežívajú neľahký čas rodičia, učitelia i deti. Ale vďaka jednoduchým nástrojom sa domáce vzdelávanie môže stať zaujímavým a kreatívnym zážitkom. Túto myšlienku si osvojili aj v spoločnosti Amazon a rozhodli sa ponúkať bezplatné online webináre pre deti. Amazon nadviazal partnerstvo so združením Learn2Code, ktoré pre širokú verejnosť poskytuje kurzy tvorby webstránok, programovania webových a mobilných aplikácií a ďalšie témy. Ich cieľom je sprístupniť mladej generácii digitálne vzdelávanie, učia ich rozumieť marketingu, pracovať s grafikou a videom. V rámci partnerstva spoločnosť Amazon zastrešuje sériu webinárov Code Jungle Slovensko pod taktovkou skúsených odborníkov z praxe z Learn2Code. Všetky webináre, ktoré sa budú konať 2-krát do týždňa, vždy v pondelok a štvrtok budú pre všetkých účastníkov vďaka spolupráci s Amazonom úplne zadarmo až do konca júna 2020. Webináre sú určené pre deti približne od 10 rokov. Počas webinárov sa zoznámia s programovaním v jazyku Scratch a vytvoria si niekoľko atraktívnych hier. Prvý sa bude konať vo štvrtok 23. 4. 2020, od 15:00. Každý z webinárov bude trvať 75 minút a dajú sa absolvovať aj jednotlivo. Záznam všetkých webinárov bude dostupný na Learn2Code YouTube kanáli. „Prostredníctvom týchto bezplatných online webinárov, chceme osloviť deti, ktoré zostávajú doma, a podeliť sa s nimi o vedomosti a zručnosti budúcnosti kreatívnym a pútavým spôsobom,“ povedala Blanka Fijołek, CEE PR & komunitná manažérka spoločnosti Amazon. Druhou časťou tejto spolupráce je poskytnutie všetkých online kurzov pre deti od Learn2Code účastníkom od teraz až do konca júna 2020 bezplatne. Ide o 15 online kurzov, ktoré pozostávajú z 30 vyučovacích hodín a účastníci dostávajú aj domáce úlohy na precvičenie preberanej látky. Kurzy slúžia aj ako podklad pre učiteľov informatiky. „Sme veľmi radi, že vďaka spolupráci s Amazonom môžeme poskytnúť všetky prebiehajúce online kurzy pre deti až do konca júna zadarmo“, povedal Marián Kristeľ marketing & operations z Learn2Code a dodal: „žijeme v mimoriadnej situácii a takto chceme pomôcť rodičom a tiež naučiť zábavným spôsobom deti niečo nové a užitočné“.  Kompletný zoznam kurzov a prihlasovanie nájdete tu. O webinároch Code Jungle Slovensko:Webináre budú prebiehať 2x týždenne online, cez nástroj na webináre ZOOM. Zamerané sú na programovanie hier v prostredí Scratch. Rozsah vyučovacej jednotky je 60 minút plus 15 minút priestor vyhradený na otázky. Počas webinárov sa budú programovať veľké hry ako napr. Flappy Bird, Pacman, Super Mario a ďalšie. Vek účastníkov sa odporúča minimálne 10 rokov. Potrebný je vlastný laptop alebo počítač. Do konca júna 2020 zorganizujeme takmer 20 webinárov. Jednotlivé webináre budú zverejnené na YouTube a budú dostupné pre všetkých zdarma. Kompletný zoznam webinárov a všetky informácie nájdete tu. Ako sa môžete zúčastniť webinárov?UPDATE: Webináre Code Jungle boli ukončené. 
Úvod do Data Science a Machine Learning
Vzdelávanie
18.04.2020
Miroslav Beka

Úvod do Data Science a Machine Learning

Na začiatku, keď človek vstupuje do Data Science je veľmi dôležité pochopiť, čo sa skrýva za rôznymi označeniami. Ľudia si vedia niektoré pojmy mýliť a preto by som v tomto článku rád veľmi zrýchlene prešiel cez niektoré základné súčasti. Data Science je procesZa týmto výrazom sa skrýva celá postupnosť úloh, ktoré musí datascience inžinier vykonať. Prvá fáza je silne prepojená s biznisom. Používajú sa tu preto rôzne biznis výrazy (Business Intelligence). Ako efektívne vieme využiť softvér na dosiahnutie cieľov firmy? Pracovať pre firmu ako data scientist si vyžaduje pochopenie potrieb biznisu. V tejto fáze je tiež veľmi dôležité odkomunikovať, aké sú možnosti Data Science a čo je možné reálne dosiahnuť a čo nie. Veľa manažérov totiž nerozumie technickej stránke veci a ty ako datascience inžinier si tam na to, aby si im to vysvetlil ľudskou rečou. Druhá fáza je príprava dát. Nejaké dáta môže mať firma už nazbierané, iné treba kúpiť alebo nájsť nový spôsob ako zozbierať to, čo potrebuješ. Takže tu sa budeš hrabať v databázach, vyťahovať rôzne dáta, spájať všetko dokopy do nejakého zmyslupného celku. Taktiež musíš vedieť vizualizovať tieto dáta, aby si videl, čo máš na ruke. Treba si overiť, že dáta majú tú kvalitu, akú očakávaš. Často sa totiž stáva, že dáta sú chybné, nekvalitné, v iných jednotkách a podobne. Na to si musíš dávať veľký pozor. V tretej fáze začneme pracovať na modeli. To, čo sme zistili v predchádzajúcich krokoch, musíme "preložiť" do reči machine learning. Aký model použiť (vzhľadom na to, aké máš dáta), aké informácie sa z modelu vieme dozvedieť a ako to súvisí s biznisom. Štvrtá fáza by nám mala vypľuť hotový model pripravený na používanie. Tu všetky tie naše úvahy a predpoklady musíme pretaviť do kódu a natrénovať model na dátach. Znie to jednotucho, ale nie je to úplne easy. Hlavne to záleží od toho, aké kvalitné dáta máš k dispozícii.  Piata fáza sa opäť dotýka silne biznisu. V prvom rade musíme vedieť zhodnotiť, či model skutočne rieši náš problém, ktorý sme chceli vyriešiť a či je v tom dobrý. Tu zvykneme vytiahnuť ďalšie dáta, ktoré model ešte nevidel (testovacie dáta) a otestovať úspešnosť modelu. Výstupom by mala byť krásna prezentácia so všakovakými grafmi a vysvetlivkami, aby to tí "z hora" pochopili a dali ti palec hore.  Machine LearningMachine Learning je súčasťou Data Science a venuje sa algoritmom, programovaniu a trénovaniu modelu. Tento výraz si ľudia zamieňajú s umelou inteligenciou. Aby sme v tom mali jasno, umelá inteligencia využíva techniky machine learning, aby napodobnila ľudskú inteligenciu vo všeobecnosti. Umelá inteligencia sa zaoberá aj tým, ako ľudia interagujú s inteligentným agentom a aby sa ľudia cítili pohodlne, keď interagujú so strojom. Čiže je tam toho zahrnutého oveľa viacej (napr. aj psychológia). Machine Learning je tu a teraz a dennodenne sa používa. Sú to pokročilé algoritmy a techniky, ktoré spracujú nejaké dáta a vypľujú výsledok. Sú úzko špecializované na jednu a jedinú úlohu. ML techník a algoritmov je mnoho a každý rieši určitý malinký podiel tej umelej inteligencie. SlovníkToto odvetvie sa len tak hemží rôznymi výrazmi. Tieto stránky obsahujú základné výrazy, na ktoré určite narazíš a je dobré vedieť, čo znamenaju: • https://towardsdatascience.com/the-new-data-scientist-glossary-4a2c14bf550 • http://www.datascienceglossary.org/ • https://developers.google.com/machine-learning/glossary/ DatasetyExistuje viacero stránok, ktoré ponúkajú svoje dáta verejne a zadarmo. Inak väčšinou treba za dáta tvrdo platiť a kopec firiem si na zhromažďovaní dát vytvorili biznis. Googlenie určite pomôže nájsť mnohé stránky, ktoré ponúkajú svoje dáta. Tu je zoznam niekoľkých populárnych stránok: • https://www.kaggle.com/datasets • https://data.world/ • https://archive.ics.uci.edu/ml/index.php • http://academictorrents.com/ • https://www.reddit.com/r/datasets/ • https://datasetsearch.research.google.com/ Ak chceš vedieť viac o Data Science a Machine Learningu, prihlás sa do môjho online kurzu Python Data Science. Ak máš pripomienky alebo otázky k článku, smelo sa pýtaj v komentároch.