Náš blog

Ako zistiť, či je číslo zadané zo vstupu prvočíslom?
Tipy a triky
16.10.2019
Skillmea

Ako zistiť, či je číslo zadané zo vstupu prvočíslom?

V 15. kapitole online kurzu vyššieho programovacieho jazyka C++ úrovne Elementary II nájdete medzi zadaniami praktických príkladov na domáce precvičenie aj úlohu, v ktorej máte nájsť najväčší spoločný deliteľ dvoch čísel a taktiež úlohu, v ktorej máte nájsť najmenší spoločný násobok dvoch čísel alebo ich najväčší spoločný deliteľ. Ak siahnete do osnov matematiky druhého stupňa základnej školy niekde do 6. alebo 7. ročníka, zistíte, že kľúčom k vyriešeniu týchto dvoch úloh je rozklad obidvoch čísel na súčin prvočísel. Úlohy patria z hľadiska logiky a analytického myslenia medzi začiatočnícke. Napriek tomu viem, že sú náročnejšie. Práve preto som sa rozhodol napísať tento blog.  V tomto blogu nechcem riešiť túto úlohu za vás, ale aspoň by som vám rád podal návod, ako zistiť, či je načítané číslo zo vstupu prvočíslom. Táto úloha je jedna z čiastkových úloh, ktoré je potrebné riešiť pri dvoch spomenutých príkladoch, ktorých riešenie ste dostali za úlohu nájsť.  Tí, ktorí zabudli, čo je prvočíslo, ozrejmím aj tento pojem. Prvočíslo je celé kladné číslo, ktoré je deliteľné len jednotkou a svojou vlastnou hodnotou. Budeme sa teda pohybovať iba v množine kladných celých čísel. Príkladom prvočísla môže byť napr. číslo 5, pretože je deliteľné len číslom 1 a 5. ďalšími príkladmi sú 2, 3, 7, 11, 13, 17 atď. Samotné číslo 1 sa za prvočíslo nepovažuje. Povedzme, že máme číslo 60, jeho rozklad na súčin prvočísel je 2 x 2 x 3 x 5. Už z rozkladu je zrejmé, že ho môžeme vynásobiť číslom 1, nič by to totiž nezmenilo na výsledku, stále by ste dostali číslo 60. Vidíte, a práve preto sa matematici dohodli, že 1 prvočíslom nebude, nemá totiž už žiadny vplyv v súčine prvočísel, ktorého výsledkom je nejaké číslo. Takže bez zbytočných ďalších prázdnych fráz prejdem rovno k veci. Nasleduje teda zdrojový kód v jazyku C++, ktorý rieši titulok tohto blogu: 01: #include <iostream> 02: using namespace std; 03: 04: int main() 05: { 06: int iNumb; 07: 08: cout << "Zadaj lubovolne cele kladne cislo: "; 09: cin >> iNumb; 10: cout << endl; 11: 12: bool flag = true; 13: 14: if (iNumb == 1) 15: { 16: flag = false; 17: } 18: else 19: { 20: for (int i = 2; i <= iNumb / 2; i++) 21: { 22: if (iNumb % i == 0) 23: { 24: flag = false; 25: break; 26: } 27: } 28: } 29: 30: if (flag) 31: { 32: cout << "Cislo " << iNumb << " je prvocislo !" << endl; 33: } 34: else 35: { 36: cout << "Cislo " << iNumb << " nie je prvocislo !" << endl; 37: } 38: 39: cout << endl; 40: 41: cin.get(); 42: cin.get(); 43: 44: return 0; 45: } Na riadku 01 je uvedená direktíva preprocesora #include, ktorej parametrom je štandardná knižnica iostream. Potrebujeme ju z dôvodu používania objektov cout, cin a manipulátora endl. Na riadku 02 uvádzame do platnosti menný priestor std pre celý zdrojový súbor .cpp. Spomenuté objekty cout, cin a manipulátor endl je zároveň súčasťou tohto priestoru. Na riadku 04 je uvedená funkcia main aj so svojim návratovým typom, ktorým je int (integer). Túto funkciu volá operačný systém. Na riadku 05 je uvedená ľavá programová zátvorka, ktorou sa začína telo funkcie main. Na riadku 06 je deklarovaná premenná iNumb na údajový typ int. Táto premenná reprezentuje hodnotu celého kladného čísla, o ktorom chceme zistiť, či patrí medzi prvočísla. Na riadku 08 je pomocou objektu cout zapísaný na výstup konzolovej aplikácie textový reťazec, ktorý vyzve používateľa na zadanie hodnoty kladného celého čísla, ktorého vlastnosť prvočísla testujeme. Na riadku 09 je prostredníctvom objektu cin načítaná táto hodnota do premennej iNumb. Na riadku 10 je prostredníctvom objektu cout a manipulátora endl presunutý kurzor konzolovej aplikácie na ďalší riadok. Na riadku 12 je deklarovaná premenná flag a zároveň inicializovaná na hodnotu true. Táto premenná nám bude po otestovaní načítaného čísla ukladať informáciu, či je číslo prvočíslom alebo nie. Z hľadiska logiky algoritmu je nutné premennú flag inicializovať pred testovaním na hodnotu true. Algoritmom budeme totiž testovať, či načítané číslo medzi prvočísla nepatrí. Používa sa tu teda postup vylučovací. Na riadku 14 je testovaná podmienka, či v premennej iNumb nie je hodnota 1. Ak áno, program pokračuje kladnou vetvou a do premennej flag sa na riadku 16 zapíše hodnota false, ktorá reprezentuje stav, kedy načítané číslo prvočíslom nie je. Na riadku 13 a 15 sú len uvedené programové zátvorky, ktoré uzatvárajú blok kódu uvedený v kladnej vetve. Ak spomínaná podmienka splnená nie je, pokračuje sa zápornou vetvou. Blok kódu v zápornej vetve uzatvorený programovými zátvorkami na riadkoch 19 a 29. Na riadku 20 až 27 je uvedené jadro algoritmu, ktorý testuje vlastnosť prvočísla u čísel väčších ako 1.  A v čom spočíva idea jadra algoritmu ? V každej iterácii cyklu zisťujeme, či je číslo deliteľné hodnotou v premennej i. Najmenšie číslo, ktorým môže byť načítané testované deliteľné, je číslo 2 (viď. riadok 20 – for slučka) a preto iterujeme od tejto hodnoty. Premennú i postupne inkrementujeme (viď. riadok 20 – for slučka) a testujeme, či je hodnota premennej iNumb deliteľná bez zvyšku pomocou operácie modulo na riadku 22, ktorá je umiestnená v príkaze if. Ak je číslo deliteľné hodnotou v premennej i bez zvyšku, tak sa na riadku 24 uloží do premennej flag hodnota false, čo reprezentuje stav, kedy načítané číslo nie je prvočíslom. Premenná i sa inkrementuje po iNumb / 2 (viď. riadok 20 – for slučka). Dôvodom je fakt, že žiadne celé kladné číslo nemôže byť predsa deliteľné bez zvyšku číslom väčším ako je jeho polovica.  Ak sa teda nenájde číslo, ktorým je načítaná hodnota testovaného čísla deliteľná bez zvyšku, neuloží sa do premennej flag hodnota false, čiže po ukončení v nej bude uložená hodnota true, čo reprezentuje stav, kedy je načítané testované číslo prvočíslom. Na riadku 25 je uvedené kľúčové slovo break a to z toho dôvodu, že v prípade nájdenia jedného čísla, ktoré delí načítané testované číslo bez zvyšku, nie je nutné hľadať ďalšie delitele. Testované číslo už prvočíslo totiž byť nemôže a preto násilne ukončíme slučku for, urýchlime program, ktorý následne prejde až na riadok 30. Tu sa už len testuje hodnota v premennej flag. Ak je v tejto premennej uložená hodnota true, tak sa zapíše na výstup konzolovej aplikácie pomocou objektu cout informácia o tom, že je načítané testované číslo prvočíslom (viď. riadok 32), ak false tak informácia, že prvočíslom nie je.  Na riadku 41 a 42 je už len načítavaný vstup z konzolovej aplikácie pomocou objektu cin, čo slúži na to, aby sa hneď program neukončil a bol zobrazený výsledok v okne konzole, pokým používateľ nezatlačí ľubovoľná kláves. Na riadku 44 vracia funkcia main operačnému systému hodnotu 0, ktorá indikuje stav správneho ukončenia aplikácie. Na riadku 45 je ukončené telo programu pravou programovou zátvorkou. Algoritmus, ktorý som navrhol a implementoval v jazyku C++ nie je ešte optimálny. Je však pre účely kurzu úrovne začiatočník postačujúci. Medzi prvočíslami sa dajú ešte sledovať určité vlastnosti, nebudem ich však tomto bloku spomínať, aby som príliš poslucháča úrovne začiatočník zbytočne nadmerne nezaťažil. Optimálny algoritmus však budem ešte publikovať a rozoberať v ďalšom bloku a v kurze, ktorý bude zameraný aj na matematiku. Autorom blogu je Marek Šurka, lektor online kurzov jazyka C++ na Learn2Code
EU Code Week:  Európsky týždeň programovania
Podujatia
06.10.2019
Skillmea

EU Code Week: Európsky týždeň programovania

V dňoch 5. – 20. októbra 2019 vrcholí siedmy ročník Európskeho týždňa programovania, tzv. EU Code Week. Dobrovoľníci z radov učiteľov, inštitúcií a nadšencov z viac ako 70 krajín sa budú snažiť prostredníctvom aktivít predstaviť nové vzdelávacie možnosti a materiály, aby tak zvýšili záujem o programovanie a zatraktívnili jeho výučbu.  Prečo sa zapájame aj my?Hodiny informatiky na základných a stredných školách sú nie vždy vedené zábavnou a pútavou formou. Len si spomeň na tie svoje. Digitálna gramotnosť sa však pre uplatnenie na trhu práce stáva kľúčovou a o tom, akú úlohu by mala zohrávať vo vzdelávaní nie je potrebné viesť diskusie. Niečo o tom vieme aj v Learn2Code, kde sa sa nás denne obracajú ľudia s otázkou, kde s programovaním začať. Preto sme sa aj my s podporou spoločnosti Google opäť stali súčasťou iniciatívy EU Code Week, aby sme podporili digitálne vzdelávanie na školách a pomohli deťom rozvíjať znalosti a zručnosti, ktoré im pomôžu realizovať nápady a uľahčia orientáciu v digitálnom svete. Ak sa v ňom totiž budú správne orientovať už teraz, budú lepšie pripravení využívať jeho prínosy a čeliť jeho nástrahám.[Image] Tento rok sa s Learn2Code vydávame na východ Slovenska do Košíc a okolia, kde sa prostredníctvom workshopov budú môcť deti na viacerých základných školách zoznámiť s programovaním v prostredí Scratch, ktorý sa vďaka svojej jednoduchosti výborne hodí na výučbu programovania, vytváranie interaktívnych hier a animácií. Okrem Scratchu máme pre deti pripravené aj zážitkové hodiny s robotmi Ozobotmi a programovanie hier v jazyku JavaScript pre pokročilejších. Tento rok sme spojili sily aj s leadership programom Teach for Slovakia a niektoré ukážkové hodiny zorganizujeme na školách zapojených do TfS. Ak chceš vedieť, ako to na takom našom workshope vyzerá, môžeš si pozrieť tento zostrih z roku 2016. Ako sa môžeš zapojiť?Európsky týždeň programovania je nezávislá iniciatíva dobrovoľníkov s podporou Európskej komisie, do ktorej sa môže zapojiť ktokoľvek, teda aj ty. Môžeš byť učiteľ, viesť programátorský krúžok alebo sa skrátka dobrovoľne angažovať v digitálnom vzdelávaní. Stačí, ak usporiadaš programátorskú aktivitu #CodeWeek a pridáš ju na mapu na stránke codeweek.eu. Na stránke navyše nájdeš návod a propagačné materiály, ktoré ti s realizáciou pomôžu. Ak si na niečo podobné netrúfaš, môžeš túto akciu podporiť aj použitím hashtagu #codeweek. 
Lambda výrazy v Jave - časť III.
Tipy a triky
03.10.2019
Skillmea

Lambda výrazy v Jave - časť III.

Lambda a vnútorné anonymné triedyVeľmi sa nám žiada povedať, že lambda výrazy sú len skratky ako napísať vnútorné anonymné triedy. Ale pamätaj si, nie je to tak. Vyzerá to podobne ale lambda nie je implementácia rozhrania. Lambda je sama osobe nezávislá iná vec.   Pozrime sa na príklad. Namiesto toho aby sme použili implementačnú triedu nášho rozhrania IHelloWord, vytvoríme si vnútornú anonymnú triedu. IHelloWord helloWord3 = new IHelloWord() { @Override public void sayHello() { System.out.println("HelloWord impls inner anonymous class"); } };Všetky 3 možnosti, ktoré majú ako návratovú hodnotu rozhranie IHelloWord môžeme podsunúť do metody printHelloWord(IHelloWord helloWord). helloWord.printHelloWord(helloWord1); helloWord.printHelloWord(helloWord2); helloWord.printHelloWord(helloWord3); Ako to, ako to? Ako java vie, aký má použiť typ pre lamba výraz? Aby sme tomu porozumeli, vytvoríme si novú triedu, kde budeme pracovať s lambda výrazom. Vytvorme si rozhranie, ktoré bude mať jednu metódu, ktorá bude vracať int a na vstupe bude tiež int. interface Nasob{ int nasob(int a); } Ako by vyerala implementácia tohto rozhrania? class NasobPiatimi implements Nasob{ public int nasob(int a){ return a*5; } }Teraz si navrhnime lambda výraz, ktorý zodpovedá danej metóde. Nepotrebujeme návratovú hodnotu int, lebo java vie na ňu prísť sama a nepotrebujeme ani názov metódy a ani modifikátor prístupu public. Náš lambda výraz bude vyzerať takto: (int a) -> a*5;Teraz použime tento lambda výraz: public static void main(String[] args) { Nasob nasobPiatimi = (int a) -> a*5; System.out.println(nasobPiatimi.nasob(10)); }Na výstupe bude 50. V tomto príklade sa lambda tvári ako instancia rozhrania Nasob. V predchádzajúcich príkladoch, keď sme používali HelloWord sme takúto premennú vkladali ako parameter metódy printHelloWord (HelloWord3 v IDEi). Namiesto toho sme mohli túto lambdu vložiť priamo do metódy. helloWord.printHelloWord(() -> System.out.println("HelloWord impls lambda");); Java kompilátor vezme tento lambda výraz a pozrie sa kam ide. Ide to metódy printHelloWord a pozrie sa, čo akceptuje na vstupe. Akceptuje rozhranie HelloWord. Ak lambda sedí s požiadavkou, že dané rozhranie obsahuje len jednu metódu a tá vracia void a na vstupe nemá žiaden parameter, tak java povie, že daná lambda je typu HelloWord. Toto sa volá Type inference. Java si sama zistí typ. Teraz, keď vieš ako java dokáže zistiť typy, vrátime sa ku príkladu, ktorý sme začali písať v tejto kapitole. V našom príklade vieme ešte viacej skrátiť zápis nášho lambda výrazu. Nasob nasobPiatimi = (int a) -> a*5; System.out.println(nasobPiatimi.nasob(10));Keďže naša lamba ide do metódy rozhrania, ktorú poznáme interface Nasob{ int nasob(int a); } Tak vieme presne povedať aký typ má vstupný paramter metódy. Je to int. interface Nasob{ int nasob(int a); }Keď to vieme, tak nemusíme pri písaní lambda výrazu znovu špecifikovať typ vstupného parametru. Nasob nasobPiatimi = (a) -> a*5; A keďže máme len jeden parameter, nemusíme písať ani zátvorky. Nasob nasobPiatimi = a -> a*5; Už nebudeme nič mazať, lebo by nám už nič neostalo 😃 Teraz môžeme napísať metódu, ktorá bude na vstupe očakávať rozhranie Nasob a keď ju použijeme, tak do nej vložíme na vstup náš lambda výraz. public static void printNasob(Nasob nasob){ System.out.println(nasob.nasob(10)); } public static void main(String[] args) { printNasob(a -> a*5); }V jave mohli kľudne vytvoriť nový typ pre tieto lambda výrazy. Ale nespravili to a jedným z dôvodov je aj spätná kompatibilita so starším kódom. Ako už vieme, tak lambda výrazy môžeme použiť všade tam, kde máme vyhovujúce rozhranie. Vo vnútorných anonymných triedach, v metódach kde je na vstupe interface a podobne. Príklad: HelloWord helloWord3 = new HelloWord() { @Override public void sayHello() { System.out.println("HelloWord impls inner anonymous class"); } }; HelloWord helloWord3 = () -> System.out.println("HelloWord impls inner anonymous class"); Pri tomto musíme pamätať, aby rozhrania boli jedno metódové alebo aby ostatné metódy rozhrania boli default. A dané metódy v rozhraniach, aby sa zhodovali s lambda výrazom. Takéto rozhranie s jednou abstraktnou metódou (metóda, ktorá poskytuje opis nie implemntáciu) sa nazýva Functional interface. Predstav si, že používaš rozhranie, ktorý má len jednu metódu a používaš ho pre lambda výrazy. Teraz by niekto cudzí prišiel a do tohto rozhrania by pridal ďalšiu abstraktnú metódu, presnejšie jej opis bez implementácie. Takéto rozhranie by už viac nebolo functional interface a preto by sa nemohlo použiť pre lambda výraz a nastala by chyba – napriek tomu, že rozhranie by bolo v poriadku. Treba na to myslieť a ak chceme niečo pridať do functional interfac, tak len ako default metódy. Aby sme upozornili kohokoľvek, kto by chcel niečo pridať do nášho rozhrania, tak máme možnosť pridať anotáciu @FunctionalInterface. K anotáciam sa ešte dostaneme, tak sa nebojte. Teraz je dôležité vedieť, že je to pomôcka – táto pomôcka nám spraví to, že hneď ako napíšeme ďalšiu metódu do nášho rozhrania, tak nastane chyba. Danú anotáciu nemusíme písať, ale je to super. @FunctionalInterface public interface HelloWord { void sayHello(); }Príklady na vyskúšanie: 1. vytvor si zoznam miest  2. zotrieď zoznam  3. napíš metódu, ktorá vypíše všetko zo zoznamu miest  4. urob si metódu, ktorá vypíše len tie mestá, ktoré sa skladajú z jedného slova nepoužívaj pri tom lambda výrazy Pokračovanie nabudúce 👋 Články a online kurzy o Jave pre teba pripravuje Jaro Beňo.
ReactiveConf 2019: piaty ročník konferencie mieri opäť do Prahy
Podujatia
24.09.2019
Katarína Kučáková

ReactiveConf 2019: piaty ročník konferencie mieri opäť do Prahy

Piaty ročník konferencie ReactiveConf 2019 mieri do Prahy,aby opäť priniesla prehľad najnovších technológií z prostredia programovania a software developmentu. Chceš odkryť tajomstvo spoločností ako sú Zeit, Google, Brave, Cypress a ďalšie? Čo pre teba tento rok organizátori pripravujú?  Čakajú ťa 3 nabité dni prednášok, workshopov, panelových diskusií, ktoré zaklincuje záverečná párty. Tentokrát sa organizátori snažili presiahnuť rámec React, Angular or Vue a rozšíriť diskusiu na ďalšie prvky ekosystému ako sú ReasonML, Elm, Clojure or Nuxt.js. Dva dni konferencie + festivalový deňReactiveConf sa koná od 30.októbra do 1.novembra 2019 v priestoroch Forum Karlin v centre Prahy. Prvé dva dni sú konferenčné, na 4 stagoch budú prebiehať prednášky, panelové diskusie a tzv. lightnings talks (krátke niekoľkominútové prednášky a prezentácie). Zo 60 speakerov spomeňme namakaného softwarového inžiniera Davida Nolena, Briana Holta z Microsoftu so svojou prednáškou o základoch futuristického kódu a podobne. Tretí, festivalový deň, je venovaný predovšetkým workshopom - čaká ich na teba viac než 15, program bude doplnený o prednášky a na záver odštartuje afterparty, ktorá sa prehupne  až do ďalšieho dňa. Pre koho je konferencia určená?Je určená pre teba, ak programuješ alebo sa zaujímaš o nové technológie. Vypočuješ si novinky zo sveta front- a back-endu, mobilných aplikácií, medzitým môžeš pri káve a občerstvení networkovať. Tento rok sa očakáva viac než 1300 účastníkov. Kde zohnať lístky?Lístky zoženieš priamo na stránke ReactiveConf až do 29.10. 2019. Ak navyše pri platbe zadáš kód "Learn2code", získať 20% zľavu na individuálny lístok.[Image]
4 nové online kurzy
Novinky
03.09.2019
Skillmea

4 nové online kurzy

Tento týždeň ti na Learn2Code prinášame 4 nové kurzy, v ktorých sme dali priestor niekoľkým novým témam. Sú to online kurzy zamerané predovšetkým na soft skills, spestrením je určite šachový kurz so slovenskou jednotkou Jánom Markošom. Zaujalo? Prečítaj si krátke predstavenie kurzov v článku. Prezentačné zručnosti - základyAk aj ty mávaš roztrasené kolená vždy, keď máš vystúpiť na pódium alebo prezentovať svoj nápad pred skupinou ľudí, mal by si zamerať pozornosť na tento kurz.  Nikto ako rečník z neba nespadol, aj ty sa máš možnosť osvojiť si a zdokonaliť svoje prezentačné zručnosti tak, aby si pri vystupovaní pôsobil/a sebavedome.  Čo máš robiť pri vystupovaní s rukami, kam sa pozerať a ako pracovať s publikom ti vysvetlí Andrej Mažáry – líder Slovenských Toastmasters (globálna organizácia venujúca sa rečníctvu) a stredoeurópsky šampión v rečníckych improvizáciách.    Ako rozmýšľať pri fotografovaníV ponuke máme mnoho kurzov zameraných na technickú stránku fotografie. Vytvoriť dobrú fotku však nie je len vecou kompozície a techniky, fotka by mala byť nositeľom príbehu, emócie, ktorú chce fotograf zachytiť.  Učiť sa budeš od troch úspešných a oceňovaných fotografov, ktorí sa venujú predovšetkým dokumentárnej a reportážnej fotografii. Každý z nich ti poskytne vlastný pohľad na postupy a techniky, ktoré pri fotení používajú, ako pracujú s objektom,s rôznymi zdrojmi svetla, prezradia ti kompozičné tipy a nápady. Kurz je určený tebe, ak už máš zvládnuté základy práce s fotoaparátom, možno uvažuješ nad fotením ako svojím živobytím a hlavne chceš tvoriť fotky, ktoré budú výnimočné.  Kurz podnikania - ako začaťKurzom ťa bude sprevádzať osem zakladateľov a CEO úspešných slovenských firiem. Tým myslíme značky ako Tuli, CURAPROX, daren & curtis, VISIBILITY, Be Cool a ďalšie. V tutoriáloch sa s tebou podelia o svoje skúsenosti, Know-how a zodpovedajú dôležité otázky, nad ktorými možno uvažuješ aj ty. Ako myšlienku premeniť na realitu, nápad na fungujúci biznis? Ako vieš odhadnúť jeho úspech? Akú rolu hrajú brand, firemná kultúra či hodnoty firmy? Vysvetlia ti aj plusy a mínusy partnerstva v podnikaní, ako a kedy prijímať nových zamestnancov a čo robiť, ak by to celé nevyšlo. Šach (Coming soon)Dlhoročná šachová jednotka na Slovensku Ján Markoš odhaľuje svoje šachové majstrovstvo. Uč sa od neho o šachových stratégiách, taktikách či sile jednotlivých figúr. Objavíš strategické a taktické postupy, o ktorých si možno doteraz nevedel. Kurz je určený mierne a stredne pokročilým šachistom. Či už rozohrávaš šachové partie online alebo zoči-voči, tento kurz ťa dostane na vyššiu úroveň. Našiel si kurz, ktorý ťa zaujal a bude pre teba prínosným? Ak máš prípadne návrh na ďalšie témy kurzov, ktoré by si v Learn2Code uvítal, napíš do komentára.
Lambda výrazy v Jave - časť II.
Tipy a triky
23.08.2019
Skillmea

Lambda výrazy v Jave - časť II.

Typy lambda výrazovTento článok je pokračovaním prvej časti tutoriálu o Lambda výrazoch. Vráťme sa k nášmu príkladu na začiatku, kde sme do metódy vložili implementáciu rozhrania a zavolali sme metódu. Toto si teraz skúsime spolu prerobiť, tak aby sme použili lamba výraz.  HelloWord2.  Prepíšme metódu implementácie na lambda výraz. public void sayHello() { System.out.println("HelloWord impls"); } () -> System.out.println("HelloWord impls"); Znovu tá istá otázka, aký typ má lamba výraz ak ho chcem priradiť do premennej?  lambdaFunkcia = () -> System.out.println("HelloWord impls");Počkať! V Jave predsa máme možnosť ako deklarovať, vymenúvať metódy a tú použijeme. Tou možnosťou je použiť rozhrania.  1. vytvorenie rozhrania s jednou deklaráciou metódy  2. vytvorenie metódy, ktorá odpovedá našemu lambda výrazu  1. v našom prípade nemá žiadne argumenty a návratová hodnota je void  Ak by sme vytvorili rozhranie, kde budeme uvádzať viacero metód, tak to bude chyba. Jedine ak budú default – teda implementované. Viď sekciu o rozhraniach.  ILambda lambdaFunkcia = () -> System.out.println("HelloWord impls"); … public interface ILambda { void metoda(); // void metoda2(String s); // bude error } Použime lambda výraz s bezpečným delením. Napíšme si k tomu interface a premennú: bezpecneDelenieFunkcia = (int a, int b) -> { if(b==0) { return 0 ; } return a/b; }; public static void main(String[] args) { Hocijako hocijako = (int a, int b) -> { if(b==0){ return 0; } return a/b; }; double d = hocijako.hocico(10, 2); System.out.println(d); } interface Hocijako{ double hocico(int x, int y); }Tu si môžeme povedať, že názov rozhrania a názov metódy v rozhraní nie je dôležitý. Dôležité je, aby sedeli vlastnosti. Teda rozhranie má len jednu metódu (mimo default metód) a metóde sedí typ návratovej hodnoty a parametre metódy. Implemetačnú triedu už teda nepotrebujeme, lebo akoby implementáciou je lambda výraz. Môžem si to nechať, ak to potrebujem takto používať, ale v našom prípade nepotrebujem implementačnú triedu.  Lambda výraz sa správa ako implemtnácia rozhrania. Ale nie je to implementácia. Tento príklad bude fungovať:  HelloWord3 helloWord = new HelloWord3(); IHelloWord helloWord1 = new HelloWordImpl(); IHelloWord helloWord2 = () -> System.out.println("HelloWord impls lambda"); helloWord1.sayHello(); helloWord2.sayHello();Na výstupe bude:  HelloWord impls  HelloWord impls lambda Pokračovanie nabudúce 😗 Mrkni zatiaľ moje kurzy o Java programovaní alebo videá, ktoré máme na Youtube o Lambda výrazoch: https://www.youtube.com/watch?v=tzSFOgnDZZo&list=PL5dKLQR6-HyU7jyoTuZGFmPLAEFpIumi4
Tipy, triky a chyby v jazyku C++ pre začiatočníkov
Tipy a triky
04.08.2019
Skillmea

Tipy, triky a chyby v jazyku C++ pre začiatočníkov

Týmto článkom by som vám chcel predstaviť zaujímavé tipy a triky v jazyku C++, ktoré by ste mohli použiť vo vašom kóde. Sú veľmi jednoduché, pretože sú určené pre začiatočníkov. Navyše by som vás chcel upozorniť na niektoré často sa opakujúce chyby, ktoré sa vo vašom kóde môžu na začiatku vyskytovať. Nejedná sa o chybu v pravom zmysle slova, teda nie takú, po ktorej by bol váš kód nepreložiteľný, skôr sa jedná o obrúsenie vášho programátorského štýlu, či vytvorenie takého kódu, ktorý bude rýchlo vykonávaný. Poslednú spomínanú vlastnosť dosiahnete s C++ ľahko, pretože kódy, ktoré navrhnete v C++ sa vykonajú oveľa rýchlejšie ako tie, ktoré navrhnete v iných jazykoch. Viem programovať vo viacerých jazykoch a preto to mám skutočne odskúšané. Pamätajte, že C++ to však nevykoná za vás, pretože aj tam sa dá vytvoriť veľmi špatný kód. Zámerne so použil termín špatný, hoci nie je odborný. Myslím tým kód, v ktorom zlým štýlom a technikou nedosiahnete požiadavky, ktoré sa na kód kladú. Príkladom môže byť práve rýchlosť vykonávania spustiteľného kódu, jeho prehľadnosť, či ľahká udržiavateľnosť. V nasledujúcich riadkoch vám to na pár príkladoch ozrejmím. Príklady tipov, trikov a chýbUrčite ste sa už v programovaní pokúšali naprogramovať jednoduché matematické operácie. Majme teda nasledovný kód: #include <iostream> int main() { int a; int b = -1; int c; int d = 4; int e = 2; int f = 3; int g; a = b + c; d = e - f; g = a * d; std::cout << "g = " << std::endl; std::cin.get(); std::cin.get(); return 0; }Najprv by som sa vás chcel spýtať, či sa vám takto napísaný kód na prvý pohľad páči. Myslím tým po koncepčnej stránke. Prvou chybou je, že začínajúci programátori neodsadzujú bloky kódu. Tak napríklad tento kód by sa dal pekne odsadiť pomocou nasledujúcich pravidiel. Oddeľte direktívy preprocesora od hlavičky funkcii main(). Oddeľte deklarácie a definície premenných od zvyšku kódu. Niekedy, keď budete používať veľa premenných, môžete aj jednotlivé deklarácie premenných usporiadať do logických celkov. Môžete vytvoriť bloky kódu podľa typu premennej. Navyše, jazyk C++ vám umožňuje deklarovať a inicializovať premennú namieste, kde to skutočne potrebujete, čiže predtým, ako ju použijete. Ďalej, v tomto kóde oddeľte nosnú časť kódu a to vytvorte blok kódu, kde sa vykonávajú jednotlivé matematické operácie. Nakoniec, oddeľte zápis na obrazovku a tiež načítanie zo vstupu klávesnice. Potom už len oddelíte kľúčové slovo return s jeho návratovou hodnotou. Po spomenutých úpravách vám vznikne čitateľný kód, ktorý vyzerá nasledovne: #include <iostream> int main() { int a; int b = -1; int c; int d = 4; int e = 2; int f = 3; int g; a = b + c; d = e - f; g = a * d; std::cout << "g = " << std::endl; std::cin.get(); std::cin.get(); return 0; }Keď sa ďalej pozrieme na kód, môžeme niektoré deklarácie umiestniť na jeden riadok. Konkrétne prevedenie nechám na vás, ale ja by som odporúčal deklarovať na jednom riadku premenné, ktoré sa neinicializujú hneď na začiatku súčasne s deklaráciou. Na druhý riadok by som umiestnil premenné, ktoré sa inicializujú súčasne s deklaráciou. Takto získate ešte väčší prehľad v kóde a ušetríte 4 riadky kódu. Kód bude vyzerať nasledovne: #include <iostream> int main() { int a, c, g; int b = -1, d = 4, e = 2, f = 3; a = b + c; d = e - f; g = a * d; std::cout << "g = " << std::endl; std::cin.get(); std::cin.get(); return 0; }Teraz prejdeme k spomínanej rýchlosti. Je mi jasné, že pri tak krátkom kóde ušetríme relatívne málo času, ale keby sa nosná časť kódu, čiže tri matematické operácie s priraďovaním, vykonávali v cykle napr. 1 000 000 krát, videli by ste zaručene rozdiel. V uvedenom príklade nie je nutné použiť 7 premenných a výsledok vyhodnocovať na trikrát. Výsledky  b + c a  e - f  sa vynásobia a priradia do ďalšej premennej. Tak, ako to je naprogramované, je to zbytočné. Skúste všetko vyhodnotiť ako jeden výraz a priradiť na jednom riadku. Vznikne nám kód, ktorý bude mať o dva riadky menej a bude vykonávať to isté. A v čom je vlastne problém. No v operátore priradenia. Táto operácia je príliš časovo náročná. V podstate sa musí presunúť hodnota premennej uložená na jednom pamäťovom mieste do pamäťového miesta, ktoré je určené pre inú premennú. A po kurze už viete, že počítač pozná len 0 a 1. Organizačne existuje najmenej jeden bajt. Nespomínal som síce, čo je zásobník, ale keď sa pohybujeme v jeho pamäti, trvá to ešte dlhšie. Vráťme sa ale späť, po úprave bude kód vyzerať nasledovne: #include <iostream> int main() { int g; int b = -1, d = 4, e = 2, f = 3; g = (b + c) * (e - f); std::cout << "g = " << std::endl; std::cin.get(); std::cin.get(); return 0; } A poďme ešte ďalej. Na čo vôbec v tomto kóde používame premenné, keď ich nenačítavame s vstupu. Výsledok kombinácie matematických operácií môžeme predsa zapísať rovno na obrazovku, bez toho, aby sme hodnoty priraďovali do premenných. Odstránime tým aj deklarácie. Po konečnej úprave, bude kód vyzerať nasledovne: #include <iostream> int main() { std::cout << "res = " << (-1 + 4) * (2 - 3) << std::endl; std::cin.get(); std::cin.get(); return 0; }Záverom by som teda znovu chcel zdôrazniť, aké sú programátorský štýl a technika dôležité. Vidíte, že z 18 riadkového kódu, ktorý sme získali odsadením pôvodného kódu, nám po niekoľkých úpravách zostal kód, ktorý má 8 riadkov.  A tento kód, hoci je malý, je laicky povedané, pekný. To znamená, že sa jeho spustiteľný kód vykoná rýchlo, je prehľadný a ľahko udržiavateľný. Autorom blogu je Marek Šurka, ktorý má na Learn2Code online kurz C++ pre začiatočníkov.
7 otázok na nového lektora Mareka Šurku
Rozhovory
25.07.2019
Skillmea

7 otázok na nového lektora Mareka Šurku

Dnes ti predstavíme človeka, vďaka ktorému môžeš na Learn2Code najnovšie študovať aj programovací jazyk C++. Náš nový lektor Marek Šurka alias Kamas sa jazyku C++ venuje už od svojich 20 rokov a v kurze ťa prevedie od jeho úplných základov až k zložitejším technikám. Prečo sa rozhodol vytvoriť kurz programovania a ako sa k jazyku C++ vôbec dostal? Dozvieš sa v rozhovore!👇[Image] Prečo si sa rozhodol pre vytvorenie kurzu v spolupráci s Learn2Code?V podstate som už dlho hľadal spôsob, ako odovzdávať svoje skúsenosti s programovaním ďalej.  V Learn2Code som našiel ideálne riešenie. Hovorím práve o online kurzoch, ktoré môžete absolvovať pohodlne kdekoľvek, v akomkoľvek čase a v dávkach, ktoré si sami určíte. Ja sa tak tiež ako lektor nemusím obmedzovať na konkrétny čas a miesto. Čo sa ľudia naučia v tvojom online kurze?V  kurze ľudia získajú prvé skúsenosti s jazykom C++. Nie je to však rýchlokurz, v priebehu ktorého sa človek naučí všetko o C++. Výstupné znalosti sú na úrovni začiatočníka, keďže som sa snažil ísť viac do hĺbky.  Nájdete tam informácie z programovania a matematiky. Plánujem postupne doplniť túto tému, pretože programovanie v jazyku C++ nie je totiž téma na jeden, dva kurzy. [Image] Kde a na akej pozícii v súčasnosti pracuješ?Pracujem ako programátor-analytik v spoločnosti, ktorá sa venuje automatizácii a diagnostike.  Dlhodobo pracujem na projekte, kde sa venujem robotike a programovaniu priemyselných zváracích robotov. Vyvíjam Frontend aj Backend. A baví ma to :)  Ako si sa k programovaniu a jazyku C++ dostal?Už na strednej škole som sa stretol s jazykom Turbo Pascal, v rámci jedného predmetu sme dokonca programovali mikroprocesory v jazyku Assembler.  Musím sa priznať, na začiatku mi to veľmi nešlo. Nakopol ma až programovací krúžok a najviac mi dala vysoká škola, kde som totálne drvil jazyk C++ a SQL. [Image] Čo ťa baví na tvojej práci?Aj keď možno nebudú všetci súhlasiť, programovanie je aj tvorivá činnosť, sám sa neustále vzdelávam a učím a len taká práca má pre mňa zmysel.  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ť?Aby sa nevzdávali a boli draví. Nikto nie je na začiatku expert.Ani Jazyk C++ sa nedá teoreticky naučiť na úroveň expert, to chce prax. Hlavne odporúčam, aby boli ľudia sami hladní po vedomostiach.  Najlepšie sa niečo naučíte, keď vás to baví. Sú ľudia, ktorí sú výnimočne talentovaní, no nebaví ich programovať. Ďaleko viac dosiahne menej nadaný človek, ktorého programovanie zaujíma. Potom sa učí s ľahkosťou. Jednoducho programujte, čítajte, pozerajte kurzy, diskutujte na fórach, porovnávajte. Učíte sa pre seba. [Image] A čomu sa venuješ vo voľnom čase?Venujem sa manželke a dcére, chodíme na výlety. Je to nevyhnutné, keď človek každý deň pracuje s počítačom. Okrem toho rád čítam, najviac odbornú literatúru. Rád sa učím. A snažím sa športovať. Najradšej mám plávanie a hokej, ktorému sa amatérsky venujem. Marek, ďakujeme za rozhovor. Páčil sa ti rozhovor? Venuj mu 👍  Ak máš na Mareka nejakú otázku, napíš ju dole do komentára 👇   Ak chceš zistiť viac o Marekovom kurze C++ elementary, pozri si intro do online kurzu! 
Lambda výrazy v Jave - časť I.
Tipy a triky
21.07.2019
Skillmea

Lambda výrazy v Jave - časť I.

V tomto a v nasledujúcich článkoch sa pozrieme na zúbok lambda výrazom. Budeme si ich vysvetľovať úplne dopodrobna, aby sme ich pochopili a využívali. Obsahovo sa zameriame na tieto oblasti: 1. porozumenie lambda výrazom, 2. použitie lambda výrazov, 3. funkcionálne rozhrania (functional intefaces), 4. referencie metód (method references), 5. vylepšenia na kolekciách. Prečo použiť lambda výrazy? Povieme si pár odrážok, prečo ich používať.  • povoľuje použiť takzvané funkcionálne programovanie, čo je doteraz niečo, povedal by som čudné, keďže Java je objektovo orientovaný jazyk, • sprehľadňujú kód, lepšia čitateľnosť v niektorých prípadoch, kde by sme použili viacero zbytočných riadkov, aby sme napísali to isté. Možno sa zamýšľaš, prečo používať funkcionálne programovanie v jazyku, ktorý je objektovo orientovaný. Už nie je OOP tak dobré? Už zanikne? Nie, nezanikne a java je a myslím si, že stále bude objektovo orientovaný jazyk. Toto funkcionálne programovanie ber len ako ďalší nástroj, ktorý ako vývojár máš vo svojej ruke.  Pri OOP sú vývojári zvyknutí rozmýšľať v podstatných menách, v objektoch, v triedach. Napríklad Pes šteká. Štekanie je súčasťou Psa. Tým pádom metóda, ktorá bude zabezpečovať psie štekanie, je súčasťou triedy Pes.  Niekedy ale potrebujem kus kódu, metódu – alebo inak povedané funkciu, ktorá nepatrí do žiadnej triedy špeciálne.  Podsunutie chovania do metódyUvažuj nad tým, že máš metódu, ktorá na konzolu vypíše nejaký text. Napríklad staré známe Hello World. Pre tento účel by sme si vytvorili triedu, ktorej by bola metóda na vypísanie Hello Word. Túto metódu by sme potom vypísali na konzolu v main metóde. Príklad v idea Lambda2.  Našou úlohou bude teraz prerobiť tento kód tak, aby som danej metóde podsunul správanie a vo vnútri tej metódy sa len vykoná to správanie. Ukážme si na príklade.  Takže sme spravili, čo sme chceli. Do metódy sme podsunuli správanie ako argument a potom sme ho vykonali.  Ale nie tak presne. Do metódy sme podsunuli niečo, čo má v sebe správanie. Podsunuli sme implementáciu rozhrania, ktorá má v sebe metódu, ktorá vykoná očakávané správanie sa.  Práve tomuto chcú lambda výrazy zabrániť. Chcú zabrániť tomu, aby sme podsúvali objekty, ale chcú, aby sme podsúvali funkcie.  Namiesto tohto:  public void printHelloWord(IHelloWord helloWord){ helloWord.sayHello(); } chceme do metódy vložiť nejakú akciu, nejakú funkciu. Tento prístup umožňuje správať sa k funkciám ako k hodnotám. public void printHelloWord(funkcia){ funkcia(); } Ak napíšem String meno = “Jaro”;  tak som hodnotu Jaro pridelil do premennej meno. Teraz sme ale načrtli, že do nejakej premennej by sme chceli vložiť blok kódu, ktorý prezentuje našu funkciu. Takže blok kód by sa stal hodnotou a tá by sa dala vložiť do premennej. Takže tam, kde používam danú premennú, tak tam používam aj danú funkciu, ktorá je v nej.   Pre predstavivosť, chceme dosiahnuť toto:  premennaSFunkciou = public void sayHello() { System.out.println("HelloWord impls"); } Toto je možné pomocou lambda výrazov. Najprv sa ale pozrime na tento kus kódu a povedzme si, čo nepotrebujeme: • public – označuje mi, či je niečo verejne dostupné mimo triedy, dáva zmysel v kontexte triedy, tu ale prideľujeme do premennej, tak to nepotrebujeme, lebo funkcia je dostupná tomu, kto pracuje s danou premennou. premennaSFunkciou = void sayHello() { System.out.println("HelloWord impls"); } • názov sayHello = ak pristupujeme k hodnote, ktorá je v premennej, tak ku nej pristupujme názvom premennej, v našom prípade je názov premennej premennaSFunkcou, takže ani druhé meno nepotrebujeme. premennaSFunkciou = void () { System.out.println("HelloWord impls"); } • typ návratovej hodnoty – pri písaní lambda výrazov nemusím písať, aký je návratový typ, prekladač vie, podľa vnútra metódy, čo sa vracia. premennaSFunkciou = () { System.out.println("HelloWord impls"); } Toto ale ešte nie je labmda výraz. Ak napíšem šípku (pomlčka - a znamienko väčšie >) medzi zátvorky a blok kódu, tak vtedy sme vytvorili labmda výraz.  premennaSFunkciou = () -> { System.out.println("HelloWord impls"); } Ak metóda obsahuje len jeden riadok, teda nie viac riadkov, tak je možné ďalej upraviť tento výraz a to tak, že odstránime zložené zátvorky. Ak je viac riadkov, tak zložené zátvorky ponecháme.  premennaSFunkciou = () -> System.out.println("HelloWord impls"); Teraz si už vieme predstaviť, spraviť, to, že pošleme funkciu ako parameter metódy a vo vnútri spustíme danú funkciu.  public void printHelloWord(------){ -----(); }Do metódy môžeme vložiť ako argument pri volaní metódy priamo lambda výraz.  printHelloWord(() -> System.out.println("HelloWord impls")){ PríkladyNapíš metódu, ktorá zoberie ako parameter číslo a vynásobí ho 5timi. nasobokPiatichFunkcia = public int nasobokPiatich(int i){ return i*5; }Prepíšeme to na lambda výraz, vyškrtám všetko, čo nepotrebujem. Teda názov, návratovú hodnotu a modifikátor prístupu.  nasobokPiatichFunkcia = (int i){ return i*5; }Napíšeme tam šípku a keďže riadok je tam len jeden, tak vieme odmazať kučeravé zátvorky.  nasobokPiatichFunkcia = (int i) -> return i*5;Tu máme ďalšiu pomôcku, alebo možnosť škrtať. Keďže java kompilátor pozná vnútro metódy a vie, čo má vrátiť, môžem vymazať aj return.  nasobokPiatichFunkcia = (int i) -> i*5;Keď máme jednoriadkový lambda výraz bez zložených zátvoriek, tak je nevyhnuté nepoužívať return.  SčítaniescitanieFunkcia = (int a, int b) -> a+b;  OdčítanieodcitanieFunkcia = (int a, int b) -> a-b; Bezpečné deleniebezpecneDelenieFunkcia = (int a, int b) -> { if(b==0) { return 0 ; } return a/b; };Spojenie reťazcovstringJoin = (String x, String y) -> x.concat(y);  Stále sme v Jave. Teda v typovom jazyku. Aké sú typy týchto premenných, ktoré v sebe držia lambda výrazy?  Video:Ak ťa viac baví počúvať a pozerať, tak si môžeš pozrieť sériu videí o lambda výrazoch v kurze Java pre pokročilých.  ZáverAk by si sa chcel dozvedieť o Jave viac alebo si nepochopil všetko, tak som aj pre teba pripravil online kurzy o Jave na https://skillmea.sk. Ak sa chceš o mne dozvedieť viac, tak klikaj na jaroslavbeno.sk alebo ma sleduj na sociálnych sieťach – youtube, facebook, instagram, linkedin.  Zakomponujem aj malú reklamu. V spolupráci s tvorcami stoličky Neseda.com ti ponúkam s kódom/kupónom JaroslavBeno 10% zľavu (aplikovateľná aj na zľavnenú stoličku).  Ja som Jaro a my sa vidíme, počujeme ak Boh dá nabudúce.  Čaves.
Instagramové profily, ktoré sa oplatí sledovať
Ostatné
03.07.2019
Katarína Kučáková

Instagramové profily, ktoré sa oplatí sledovať

Možno patríš medzi tých, ktorí si dajú Instagram ešte pred raňajkami. Alebo v ňom len často hľadáš inšpiráciu pre svoju prácu, príspevky. A tak sme trochu presurfovali Instagram a našli zaujímavých ľudí, ktorých sa určite oplatí sledovať. Marketing  visibilitysk (Visibility)Túto online marketingovú agentúru nie je potrebné predstavovať, pretože je dostatočne “visible”. Instagramový život Visibility zobrazuje ľudí, ktorí stoja za dianím v agentúre, mapuje ich prácu, úspechy, office život. Svadby, deti, teambuildingy a konferencie, aj to patrí k životu úspešných marketérov. Nám sa na tomto profile páči prirodzenosť a priestor, ktorý venujú vlastným ľuďom. jandl_advertising (Jandl)Marketingová agentúra Jandl sa môže hrdiť reklamnou kampaňou napríklad pre Coop Jednotu (kto by nepoznal dvoch pošetilých bačov zo salaša), kampaňou Ideme vlakom pre ZSSK, poznáme ich tiež z bilboardov Zoo Bratislava. Na Instagrame nájdeš ukážky ich práce, zábery z natáčania reklamných spotov, ale tiež profily jednotlivých ľudí tvoriacich Jandl a zákulisný život agentúry.   elitesolution (Elite solutions)Taký príjemne neformálny instagramový profil jednej reklamnej agentúry. Veď napokon sa aj prezentujú ako kolegovia a kamaráti v jednom. Aktuálne ste možno zachytili ich kampaň #Nebuďpirát v spolupráci s O2 a známymi influencermi, za zmienku určite stojí ich spolupráca s neziskovou organizáciou DEPAUL SLovensko, kde pomáhajú získavať prostriedky pre ľudí bez domova. Design mikaela220 (Michaela Chmeličková)Milujeme tento farebný a ilustrovaný instagramový profil z planéty 220. Miška je skúsená dizajnérka a ilustrátorka, na rováši má také zaujímavé projekty ako napríklad Curaprox, Biela noc, dizajn tričiek a obalov na telefóny pre Kompót. Vďaka nej sa na tričká dostala aj taká osobnosť, akou je Majka z Gurunu. petra.ziackova_tattoo (Petra Žiačková)Ak sa raz rozhodneme pokresliť, určite to bude tetovačka od Petry Žiačkovej. Petra tiež ilustruje, jej detailné obrázky ťa úplne pohltia a vtiahnu do iného sveta. Magického.  michalslovak (Michal Slovák)Michal robí obaly. Aspoň podľa Instagramu. Nájdeš tam džúsové, čokoládové, mydlové, kávové. Skrátka samé dobré veci. Okrem toho Michal rád cestuje a svetovými fotkami je poprelínaný aj jeho Instagram. Balans musí byť. Nám sa to páči. Foto&Video Patrik Paulíny (patrikpaulinyi)Fotograf a filmár Patrik Paulíny cestuje po svete a na svoj Instagram prináša skvelé zábery. Za svoje príspevky si vyslúžil ocenenie Instagram roka 2018. Patrika preslávil najmä projekt Follow me to Slovakia, ktoré ťa v 2-minútovom videu vezme na cestu za krásami Slovenska. michal_zahornacky (Michal Záhornácky)Michalovým zameraním je umelecká fotografia, snové portréty pôsobia surrealisticky, až rozprávkovo. Na svojom profile zachytil mnohé tváre, nájdeš medzi nimi aj známe osobnosti, každý portrét je jedinečný, rozpráva iný príbeh, emóciu. Zaujímavá je jeho spolupráca s Danielom Hevierom v rámci projektu Chymeros, dobrodružnej výpravy, do ktorej je zapojených už vyše tisíc detí zo základných škôl z celého Slovenska. maria.svarbova (Mária Švarbová)Jej fotografie, inšpirované funkcionalistickou architektúrou a minimalizmom, sú akousi magickou realitou. Mária je mladá fotografka, za svoju jedinečnú tvorbu nedávno získala ocenenia ako Forbes 30 under 30, prestížne ocenenie Hasselblad Master 2018 Máriu radí medzi fotografickú špičku sveta. V slávnej sérii Swimming Pool sa Márii podarilo zmapovať približne 11 slovenských plavární, téma je unikátna. Ak sa zaujímaš o fotografiu, určite odporúčame navštíviť Máriin profil. Tak čo povieš? Necháš sa inšpirovať niekým z týchto šikovných ľudí? 
Tipy, ako ušetriť čas pri práci v Sketchi, Photoshope, Illustratore a InDesigne
Tipy a triky
19.06.2019
Katarína Kučáková

Tipy, ako ušetriť čas pri práci v Sketchi, Photoshope, Illustratore a InDesigne

Práca v grafických programoch sa niekedy podobá na cirkusový chaos. Ikonky, záložky, nekonečný počet nástrojov, pluginov. Vieme, je ťažké sa v tom zorientovať. Preto sme pre teba v spolupráci s lektormi vybrali tipy, ktoré aj nám zjednodušujú život a hlavne šetria čas. Konkrétne sa pozrieme na programy Sketch, Adobe Photoshop, Illustrator a inDesign.  Sketch Sketch je profesionálny ilustračný program pre prácu s vektorovou grafikou, ktorý je dostupný pre užívateľov Mac OS X. Sketch je intuitívny a užívateľsky nenáročný, jeho zvládnutie na profi úrovni však spočíva najmä v malých trikoch. Tu sú niektoré z nich. [Image] • Rotate copies (rotovanie kópií)                                                                                                       Nástroj Rotate Copies ti umožní rotovať kópie určitej vrstvy okolo konkrétneho bodu. Vezmi si napríklad kvet. Stačí vytvoriť jeden lupeň a desiatky jeho kópií môžeš rotovať okolo stredu. Voilá. Tento nástroj sa štandardne nenachádza v paneli nástrojov, ale môžeš si ho pridať cez control-click a “Customize toolbar”, prípadne v menu cez Layer > Path > Rotate Copies. • Convert to outlines (previesť na obrysy) Ako a kedy previesť text na obrysy je nevyhnutnou znalosťou z hľadiska vektorovej kresby. Fonty totiž dokážu narobiť pri tlači veľa problémov. Na druhej strane, ak sa rozhodneš previesť text na obrysy, text sa stane grafikou a po konverzii ho už nebude možné upraviť. Pre konverziu textu na obrysy zvoľ v menu Layer > Convert to Outlines (prípadne stlač Shift-Command-O). • Obnovenie stratených dát Mac má skvelú funkciu, ktorá je kompatibilná aj so Sketchom. Môžeš si tak pozrieť históriu súboru a obnoviť stratené dáta cez File > Revert To > Browse All Versions. • Vnorenie symbolov Vnorený symbol môžeš vytvoriť tak, že inštanciu (kópiu) symbolu umiestniš do iného symbolu na stránku symbolov. Pri vykonaní zmeny rodičovského symbolu sa zmenia všetky jeho inštancie, bez ohľadu na to, či sú súčasťou iného symbolu, alebo nie. Neexistuje limit na to, ako hlboko je možné symbol vnoriť, symbol však nesmie obsahovať inštanciu seba samého. • Zdieľanie súborov cez appky (napríklad Slack) Jednoducho zdieľaj súbory cez appku tak, že potiahneš vybraný file zo sekcie Export - file a vložíš na plochu vybranej appky.  • Export Presets Týmto nástrojom ušetríš nesmierne mnoho času, môžeš si totiž kopírovať prvky zo svojho designu. Vytvorenie jednotlivých presets urobíš pomocou Presets preference panel. • Klávesové skratky Prehľad všetkých užitočných klávesových skratiek nájdeš tu! • Pluginy Užitočné pluginy sú Stark na kontrolu kontrastu, Runner na rýchlejší prístup k funkciám a Rename it + Styles Generator na stavbu knižníc. Adobe Photoshop Photoshop je veľmi obľúbeným nástrojom v oblasti úpravy fotografií a grafiky. Máš už v malíčku všetky jeho zákutia? [Image] • Kopírovanie farby z akéhokoľvek obrázka, vzoru a podobne.  Pomocou nástroja Eyedropper tool máš možnosť vybrať farbu zo zdroja mimo prostredia photoshopu a palety farieb. Jednoducho klikni a podrž nástroj kvapadlo a so stlačeným tlačidlom prejdi na vybranú stránku alebo obrázok. Namier kurzor na plochu s farbou, uvoľni myš a máš k dispozícii novú zadefinovú farbu. • Zmena veľkosti (a tvrdosti) štetca Asi ťa zdržiava neustále meniť veľkosť a tvrdosť štetca pomocou nástrojovej lišty. Najmä pri úpravách ako je retuš, či práca s maskami oceníš klávesovú skratku Alt+pravé tlačidlo myši (Ctrl+Alt+ľavé tlačidlo na Mac). Stačí podržať tlačidlo myši a pri pohybe vpravo-vľavo môžeš meniť veľkosť štetca, pri pohybe hore-dolu zase jeho tvrdosť. • Zmena prelínacích módov (blend modes) Práca s prelínacími módmi je vždy tak trochu experimentovaním, výsledok je totiž ťažké odhadnúť. Ty sa však nechceš zdržiavať dlho, čaká ťa kopec ďalšej práce, preto by si si mal osvojiť zaujímavú skratku Shift+plus. Táto skratka slúži na rýchle testovanie efektov na fotke. • Izolácia konkrétnej vrsty Niekedy môže projekt obsahovať toľko vrstiev, že sa zdá nemožné zobraziť len jednu konkrétnu. Vtedy stačí jednoducho podržať Alt (Option na Mac) a kliknúť na ikonku oka na vybranej vrstve.  • Bird's-eye-view Táto funkcia ti umožní ľahko sa orientovať v jednotlivých častiach obrázka pri detailnom priblížení. Ak si práve použil zoom a chceš prejsť na inú časť bez toho, aby si musel view zmenšovať, klikni a podrž H a potom ľavé tlačidlo myši. Teraz pohybuj kurzorom myši a prejdi na požadovanú oblasť. Uvoľnením tlačidla myši sa vrátiš k štandardnému náhľadu. • Exportovanie všetkých vrstiev do jednej  Potrebuješ exportovať všetky vrstvy do jednej? Aj na to poznáme skratku. Pomocou Control+Shift+Alt+E. (Command+Shift+Option+E pre Mac) spojíš všetky vrstvy do jednej.  • Prehľad klávesových skratiek[Image] Zdroj: www.digitalsynopsis.com • Užitočné pluginy Ak si dizajnér, alebo grafik, určite oceníš plugin RH Hover Color Picker. Ponúka prehľadnú prácu s farbami a  moderné rozhranie, ktoré konečne nevyzerá ako palubná doska v lietadle. Kopec efektov a filtrov ti umožní ON1 Effects, obrázky zase získaš prostredníctvom pluginu Pexels alebo Shutterstock.   Adobe Illustrator Illustrator je veľmi obľúbený pre svoje široké využitie, vytvoríš v ňom všetko od firemného loga, webových ikon, až po knižné ilustrácie. Ak si chceš osvojiť užitočné tipy a triky pre prácu s ním, si na správnom mieste. [Image] • Výber podobných objektov Ak už v Illustratore kreslíš zložitejšie tvary, je užitočné sa naučiť, ako vyhľadať podobné objekty. Ak napríklad chceme zmeniť vlastnosti viacerým objektom, nemusíme prácne objekty vyhľadávať, navyše môžu byť čiastočne zakryté inými objektmi. Stačí vybrať vybrať jeden z objektov, prejsť na Select>Same a vybrať požadované kritérium vyhľadávania objektov (napríklad Fill Colour). Všetky objekty s požadovanou farbou výplne potom systém vyberie a zmení pomocou vzorkovníka farieb. • Nauč sa správne používať Pen Tool Zvládnutie tohto nástroja v Illustratori by malo byť tvojím prvým krokom. Nie je to žiadne umenie a pomocou nástroja Pen Tool získaš väčšiu kontrolu nad tým, čo vytváraš. Výhodou je i jeho univerzálne použitie, keďže napríklad vo všetkých Adobe programoch funguje rovnako. • Použitie Pathfinder na vytvorenie komplexných tvarov Po zvládnutí Pen Tool by si mal upriamiť pozornosť aj na nástroj Pathfinder. Pathfinder umožňuje kombinovať objekty do nových tvarov. Môžete napríklad vrstviť jednoduché tvary a potom pomocou ukazovateľa pohybu ich transformovať na jednotnejší, zložitejší tvar. Existuje niekoľko tutoriálov na použitie Pathfinder na transformáciu základných tvarov na niektoré úžasné umelecké diela.  • Vyrob si vlastné štetce Ilustrátor milujeme, ale je potrebné si v ňom vytvoriť vlastný priestor. Nie všetky jeho základné funkcie sú pre vytvorenie vlastnej grafiky dostačujúce. To platí napríklad i o štetcoch. V Adobe Illustrator existujú 4 základné druhy štetcov: kaligrafické, rozptylové, umelecké a vzorkové. Ty máš ale možnosť pridať si svoje vlastné. Vyber si všetky tvary, z ktorých chceš urobiť štetec. V palete štetcov klikni na malú šípku vľavo vyber "new brush".  • Použi Color CC Ak chceš, aby tvoje ilustrácie vyzerali profesionálne, mali by obsahovať kombinácie farieb, ktoré oku lahodia. To je nie vždy jednoduché a ak nechceš strácať čas ich porovnávaním, určite využi Color CC. Tento nástroj ti umožní vybrať pekné, vkusné kombinácie farieb, navyše ich pridaním do palety farieb budeš mať hneď poruke. • Prehľad základných klávesových skratiek[Image] Zdroj: www.digitalsynopsis.com • Užitočné pluginy Prevezmi kontrolu nad svojimi vektormi pomocou VectorScribe v3, ktorú tvorcovia opisujú ako vektorový švajčiarsky nôž. Ak si začínajúci dizajnér, ktorý sa chce ponoriť do sveta 3D grafiky, určite neobíď plugin Cineware, efektný je aj Gold Rush a Phantasm v3.  Adobe InDesign Podobne ako Illustrator, je InDesign založený na vektorovej grafike. Poskytuje priestor, v ktorom môžeš spojiť všetky všetky svoje ilustrácie a grafiku (napr. z Photoshopu, Illustratoru) a vytvoriť si vlastné interaktívne dokumenty pre web, tlač, mobilné zariadenia a podobne. A aké triky by si si mal osvojiť v InDesigne? [Image] • Vytvorenie viacerých objektov rovnakej veľkosti  Ak chceš vytvoriť viacero objektov rovnakej veľkosti, nastav potrebnú šírku a výšku jedného objektu. Potom je už len potrebné vybrať zostávajúce objekty a zvoliť Object> Transform Again> Transform Sequence Again Individually. • Matematické funkcie v paneli nástrojov povedzme, že máš obrázok v ráme a chceš ho zväčšiť o 1″, pretože by tak pravdepodobne vyzeral lepšie. V paneli nástrojov, konkrétne vo Width field napíš 1 hneď vedľa existujúcej hodnoty. Stlač Tab a InDesign urobí ostatné za teba. Rovnako môžeš použiť i funkcie odčítanie (-), násobenie (*) a delenie (/). • Používaj vyplnenie zástupným textom.  Lorem Ipsum ti určite nemusím predstavovať. V InDesigne nám môže poslúžiť ako zástupný text (pravé tlačidlo > Vyplniť zástupným textom) v návrhoch, kde tento text použijeme pre lepšiu predstavu finálneho návrhu.  • Prispôsobenie rámu (frame fitting) Ak chceš prispôsobiť rám grafike vo vnútri neho, je potrebný dvojitý klik na roh rámu. Alebo stlač Cmd-Opt-C (Mac) / Ctrl-Alt-C (PC). • Vkladanie viacerých obrázok pomocou Adobe Bridge (multiplace from Bridge) Síce pre vloženie obrázka môžeš použiť File>Place, prípadne pretiahnuť požadovaný obrázok na plochu InDesign, je však určite jednoduchšie vkladať viacero obrázkov naraz. Otvor Adobe Bridge, vyber si obrázky, ktoré chceš použiť vo svojom layoute a zvoľ File>Place>In InDesign. Tým sa automaticky prepneš do InDesign, pomocou klávesov so šípkami môžeš prechádzať obrázky v kurzore a jednoducho ich klepnutím umiestniť. Pre úpravu môžeš využiť Object>Fitting. • Aplikovanie efektu z jedného objektu na iný Podarilo sa ti vytvoriť skvelý efekt, ktorý by si chcel aplikovať na ďalšie objekty? V tom prípade vyber objekt s požadovaným formátovaním a potiahni ikonu “FX” z panela efektov na objekt, na ktorý chceš formátovanie aplikovať. V prípade, že chceš vymazať všetky efekty z objektu, zvoľ „clear effects“ z Effects okna v paneli nástrojov.  • Klávesové skratky Prehľad všetkých užitočných klávesových skratiek nájdeš tu! • Užitočné pluginy Aquafadas AVE ti uľahčí digitálne publikovanie - od návrhu po distribúciu obsahu, jeho prispôsobenie rôznym platformám. Platený plugin Active Tables ti do InDesign prinesie Excel, vďaka PDF2Id zase budeš môcť importovať PDF súbory a konvertovať na editovateľný formát.  Práca v uvedených softvéroch je veľmi obsiahla a komplexná, snažili sme sa ti uviesť aspoň niekoľko "hackov" pre zjednodušenie a urýchlenie práce. Ak by si chcel prispieť nejakými overenými trikmi, podeľ sa o ne v komentári! Zaujala ťa téma grafiky a designu? Na Learn2code sme pre teba pripravili ponuku online kurzov grafiky, z ktorých si vyberieš svoj ušitý na mieru.
Lektor Pavol Banáš - Zažívame zlatú éru videa
Rozhovory
12.06.2019
Katarína Kučáková

Lektor Pavol Banáš - Zažívame zlatú éru videa

Radi sa pochválime novým prírastkom do Learn2code rodiny. Dnes ti predstavíme lektora Pavla Banáša, ktorý ťa v novom kurze Ako vybrať techniku na nakrúcanie naučí zorientovať sa vo fototechnike a vybrať si vhodné zariadenie. Aby tvoje videá mali „šťavu“. :) A čo nám prezradil? O svojej práci Pracujem ako freelance videomaker, pod svojou značkou Bajter studio (www.bajterstudio.com) vytváram videá rôznych žánrov a kategórií. V mojej tvorbe prevažujú najmä hudobné videoklipy. Popri tom študujem Masmediálnu komunikáciu na FMK UCM v Trnave.  Odkedy sa venujem videotvorbe, prešiel som si už všeličím. V tomto smere rád experimentujem a rozširujem svoje obzory vždy, keď sa naskytne príležitosť. Keď to mám zhrnúť, tak mám za sebou produkciu videoklipov, pár videí zo svadieb, dokument, nejaké tie aftermovies, propagačné videá, krátke hrané filmy, živé prenosy futbalových zápasov v športovej televízií, stáž v reklamnej agentúre a momentálne dokončujem projekt svojej bakalárskej práce- rapový muzikál.  [Image] O jeho ceste k videoprodukcii K videu som mal blízko od malička, kamera ma vždy lákala. Prvé videá som začal vytvárať s príchodom foťákov do mobilov. Zlomový bod v mojej kariére prišiel, keď som mal 16 a chodil na gymnázium. Spolu s dvoma spolužiakmi sme v rámci videokrúžku prihlásili náš výtvor do celoslovenskej súťaže Cineama a vo finále sme získali ocenenie od dekana Filmovej a televíznej fakulty VŠMU. Súčasťou tohto ocenenia bola aj účasť na Letnej škole filmového jazyka organizovanej práve touto fakultou. Počas tohto kurzu som prehĺbil svoje, dovtedy plytké znalosti z oblasti videa a uvedomil si, že práve toto by mohol byť ten smer, ktorý ma bude v budúcnosti živiť.  [Image] O rozhodnutí stať sa lektorom v Learn2code Takmer denne na mňa smeruje množstvo otázok o videu, technike či nakrúcaní. Po nejakom čase odpovedania na tieto otázky som si uvedomil, že okrem samotnej tvorby videa je vlastne aj toto oblasť, ktorá ma baví. Chcel som teda vyskúšať, ako by som zvládol skombinovať videotvorbu s vyučovaním. Sen o takomto niečom bol v mojej hlave už dlhšie a keď sa ku mne dostala ponuka od Learn2Code, neváhal som. Zároveň je to pre mňa výzva skúsiť niečo úplne nové, čo vždy skúšam rád. O tom, čo sa v jeho kurze naučíš Naučíš sa veľa z otázok, ktoré sa ku mne dostávajú a sú smerované k výberu techniky na nakrúcanie. Na túto otázku však neexistuje univerzálna odpoveď. Ak sa človek bez skúseností s videom či fotografiou rozhodne kúpiť svoje prvé záznamové zariadenie, veľmi rýchlo sa stratí v množstve parametrov a rôznych druhov zariadení. Preto som sa rozhodol spraviť kurz v širšom kontexte, ako len priamej odpovedi “toto si kúp”. Mojím cieľom je, aby absolvent kurzu vedel, čo je to video, ako sa zaznamenáva pohyb, aké technické parametre sú pri kamerách dôležité a na čo všetko si dať pozor pri kúpe. Absolvent si teda nebude len schopný vybrať sám zariadenie, ktoré mu maximálne splní jeho požiadavky, ale bude disponovať aj potrebnými teoretickými znalosťami, na ktorých môže stavať pri samotnej práci so zariadením. [Image] O potrebe sledovať trendy a inovácie V súčasnosti prežívame zlatú éru videa. Všetko od techniky, cez tvorcov, až po distribučné kanály prudko napreduje a to, čo bolo trendom pred rokom, je dnes už úplne out. Preto je dôležité neustále na sebe pracovať a zlepšovať sa. Na druhú stranu je ale rovnako dôležité nepodliehať úplne všetkým trendom a vkladať do videa aj svoju kreativitu. Veľa tvorcov na toto zabúda a potom vznikajú tisícky videí, ktoré sa podobajú “ako vajce vajcu”. Takže určite trendy sledovať, ale nezabúdať, že video je hlavne o kreativite. :)  O tom, čo ho najviac baví na jeho práci Pri tvorbe videoklipov je úžasné, ako sa dá v priebehu 3-4 minút divákovi povedať veľmi silná myšlienka a odkaz. Toto je to, čo mám na svojej práci rád. A síce, keď nie je video len pekným vizuálom, ale nesie v sebe myšlienku, ktorá môže diváka inšpirovať. [Image] O jeho plánoch do budúcnosti Aktuálne je priorita číslo jedna zoštátnicovať. Ak bude pozitívna odozva a záujem od študentov, rád by som pripravil aj ďalšie kurzy pre Learn2Code v oblasti videa. Mám už v hlave pár nápadov, ktoré by mohli začínajúci tvorcovia oceniť. Samozrejme, chcem aj naďalej pracovať na sebavzdelávaní a zlepšovaní svojich schopností a zručností, keďže oblasť videa poskytuje prakticky neobmedzený priestor na sebarozvoj. Krátky odkaz čitateľom na záver Nakrúcajte vždy a všade, využívajte každú príležitosť na tvorbu. Práve to je najlepšia cesta, ako sa zlepšovať vo videotvorbe. Nezabúdajte však, že dôležitá nie je len forma, ale hlavne obsah. Prajem vám príjemné štúdium a veľa kreatívnych chvíľ s vašou kamerou či fotoaparátom :) .