Náš blog

Jak zjistit, zda je číslo zadané ze vstupu prvočíslem?
Tipy a triky
16.10.2019
Skillmea

Jak zjistit, zda je číslo zadané ze vstupu prvočíslem?

V 15. kapitole online kurzu vyššího programovacího jazyka C++ úrovně Elementary II najdete mezi zadáními praktických příkladů pro domácí procvičení i úlohu, ve které máte najít největší společný dělitel dvou čísel a také úlohu, ve které máte najít nejmenší společný násobek dvou čísel nebo jejich největší společný dělitel.   Sáhnete-li do osnov matematiky druhého stupně základní školy někde do 6. nebo 7. ročníku, zjistíte, že klíčem k vyřešení těchto dvou úkolů je rozklad obou čísel na součin prvočísel. Úkoly patří z hlediska logiky a analytického myšlení mezi začátečnické. Přesto vím, že jsou náročnější. Právě proto jsem se rozhodl napsat tento blog. V tomto blogu nechci řešit tento úkol za vás, ale alespoň bych vám rád podal návod, jak zjistit, zda je načtené číslo ze vstupu prvočíslem. Tento úkol je jeden z dílčích úkolů, které je třeba řešit při dvou zmíněných příkladech, jejichž řešení jste dostali za úkol najít. Ti, kteří zapomněli, co je prvočíslo, ozřejmím i tento pojem. Prvočíslo je celé kladné číslo, které je dělitelné pouze jednotkou a svojí vlastní hodnotou. Budeme se tedy pohybovat pouze v množině kladných celých čísel. Příkladem prvočísla může být např. číslo 5, protože je dělitelné pouze číslem 1 a 5. dalšími příklady jsou 2, 3, 7, 11, 13, 17 atp. Samotné číslo 1 se za prvočíslo nepovažuje. Řekněme, že máme číslo 60, jeho rozklad na součin prvočísel je 2 x 2 x 3 x 5. Už z rozkladu je zřejmé, že jej můžeme vynásobit číslem 1, nic by to totiž nezměnilo na výsledku, pořád byste dostali číslo 60. Vidíte , a právě proto se matematici dohodli, že 1 prvočíslem nebude, nemá totiž již žádný vliv v součinu prvočísel, jehož výsledkem je nějaké číslo. Takže bez zbytečných dalších prázdných frází přejdu rovnou k věci. Následuje tedy zdrojový kód v jazyce C++, který řeší titulek tohoto 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 řádku 01 je uvedena direktiva preprocesoru #include, jejímž parametrem je standardní knihovna iostream. Potřebujeme ji z důvodu používání objektů cout, cin a manipulátoru endl. Na řádku 02 uvádíme v platnost jmenný prostor std pro celý zdrojový soubor .cpp. Zmíněné objekty cout, cin a manipulátor endl je zároveň součástí tohoto prostoru. Na řádku 04 je uvedena funkce main i se svým návratovým typem, kterým je int (integer). Tuto funkci volá operační systém. Na řádku 05 je uvedena levá programová závorka, kterou začíná tělo funkce main. Na řádku 06 je deklarována proměnná iNumb pro datový typ int. Tato proměnná reprezentuje hodnotu celého kladného čísla, o kterém chceme zjistit, jestli patří mezi prvočísla. Na řádku 08 je pomocí objektu cout zapsán na výstup konzolové aplikace textový řetězec, který vyzve uživatele k zadání hodnoty kladného celého čísla, jehož vlastnost prvočísla testujeme. Na řádku 09 je prostřednictvím objektu cin načtena tato hodnota do proměnné iNumb. Na řádku 10 je prostřednictvím objektu cout a manipulátoru endl přesunut kurzor konzolové aplikace na další řádek. Na řádku 12 je deklarována proměnná flag a zároveň inicializována na hodnotu true. Tato proměnná nám bude po otestování načteného čísla ukládat informaci, zda je číslo prvočíslem nebo ne. Z hlediska logiky algoritmu je nutno proměnnou flag inicializovat před testováním na hodnotu true. Algoritmem budeme totiž testovat, zda načtené číslo mezi prvočísla nepatří. Používá se zde tedy postup vylučovací. Na řádku 14 je testována podmínka, zda v proměnné iNumb není hodnota 1. Pokud ano, program pokračuje kladnou větví a do proměnné flag se na řádku 16 zapíše hodnota false, která reprezentuje stav, kdy načtené číslo prvočíslem není. Na řádcích 13 a 15 jsou pouze uvedeny programové závorky, které uzavírají blok kódu uvedený v kladné větvi. Pokud zmíněná podmínka splněna není, pokračuje se zápornou větví. Blok kódu v záporné větvi uzavřen programovými závorkami na řádcích 19 a 29. Na řádcích 20 až 27 je uvedeno jádro algoritmu, který testuje vlastnost prvočísla u čísel větších než 1. A v čem spočívá idea jádra algoritmu? V každé iteraci cyklu zjišťujeme, zda je číslo dělitelné hodnotou v proměnné i. Nejmenší číslo, kterým může být načteno testované dělitelné, je číslo 2 (viz. řádek 20 – for smyčka) a proto iterujeme od této hodnoty. Proměnnou i postupně inkrementujeme (viz. řádek 20 – for smyčka) a testujeme, zda je hodnota proměnné iNumb dělitelná beze zbytku pomocí operace modulo na řádku 22, která je umístěna v příkazu if. Pokud je číslo dělitelné hodnotou v proměnné i beze zbytku, tak se na řádku 24 uloží do proměnné flag hodnota false, což reprezentuje stav, kdy načtené číslo není prvočíslem. Proměnná i se inkrementuje po iNumb/2 (viz. řádek 20 – for smyčka). Důvodem je fakt, že žádné celé kladné číslo nemůže být přece dělitelné beze zbytku číslem větším než je jeho polovina. Nenajde-li se tedy číslo, kterým je načtená hodnota testovaného čísla dělitelná beze zbytku, neuloží se do proměnné flag hodnota false, čili po ukončení v ní bude uložena hodnota true, což reprezentuje stav, kdy je načteno testované číslo prvočíslem. Na řádku 25 je uvedeno klíčové slovo break a to z toho důvodu, že v případě nalezení jednoho čísla, které dělí načtené testované číslo beze zbytku, není nutné hledat další dělitele. Testované číslo už prvočíslo totiž být nemůže a proto násilně ukončíme smyčku for, urychlíme program, který následně přejde až na řádek 30. Zde se už jen testuje hodnota v proměnné flag. Pokud je v této proměnné uložena hodnota true, tak se zapíše na výstup konzolové aplikace pomocí objektu cout informace o tom, že je načteno testované číslo prvočíslem (viz. řádek 32), pokud false tak informace, že prvočíslem není. Na řádcích 41 a 42 je již jen načítán vstup z konzolové aplikace pomocí objektu cin, což slouží k tomu, aby se hned program neukončil a byl zobrazen výsledek v okně konzole, dokud uživatel nezatlačí libovolná klávesa. Na řádku 44 vrací funkce main operačnímu systému hodnotu 0, která indikuje stav správného ukončení aplikace. Na řádku 45 je ukončeno tělo programu pravou programovou závorkou. Algoritmus, který jsem navrhl a implementoval v jazyce C++, není ještě optimální. Je však pro účely kurzu úrovně začátečník dostačující. Mezi prvočísly lze ještě sledovat určité vlastnosti, nebudu je však tomto bloku vzpomínat, abych příliš posluchače úrovně začátečník zbytečně nadměrně nezatížil. Optimální algoritmus však budu ještě publikovat a rozebírat v dalším bloku a v kurzu, který bude zaměřen i na matematiku. Autorem blogu je Marek Šurka, lektor online kurzů jazyka C++ na Learn2Code.
EU Code Week: Evropský týden programování
Události
06.10.2019
Skillmea

EU Code Week: Evropský týden programování

Ve dnech 5.–20. října 2019 vrcholí sedmý ročník Evropského týdne programování, tzv. EU Code Week. Dobrovolníci z řad učitelů, institucí a nadšenců z více než 70 zemí se budou snažit prostřednictvím aktivit představit nové vzdělávací možnosti a materiály, aby tak zvýšily zájem o programování a zatraktivnily jeho výuku. Proč se zapojujeme i my?Hodiny informatiky na základních a středních školách jsou ne vždy vedeny zábavnou a poutavou formou. Jen si vzpomeň na ty své. Digitální gramotnost se však pro uplatnění na trhu práce stává klíčovou a o tom, jakou roli by měla hrát ve vzdělávání není třeba vést diskuse. Něco o tom víme iv Learn2Code, kde se nás denně obracejí lidé s otázkou, kde s programováním začít. Proto jsme se i my s podporou spoločnosti Google opět staly součástí iniciativy EU Code Week, abychom podpořili digitální vzdělávání na školách a pomohli dětem rozvíjet znalosti a dovednosti, které jim pomohou realizovat nápady a usnadní orientaci v digitálním světě. Pokud se v něm totiž budou správně orientovat již nyní, budou lépe připraveni využívat jeho přínosů a čelit jeho nástrahám.[Image] Tento rok sa s Learn2Code vydáváme na východ Slovenska do Košic a okolí, kde se prostřednictvím workshopů budou moci děti na více základních školách seznámit s programováním v prostředí Scratch, který se díky své jednoduchosti výborně hodí pro výuku programování, vytváření interaktivních her a animací. Kromě Scratchu máme pro děti připraveny i zážitkové hodiny s roboty Ozoboty a programování her v jazyce JavaScript pro pokročilejší. Letos jsme spojili síly is leadership programem Teach for Slovakia a některé ukázkové hodiny zorganizujeme na školách zapojených do TfS. Pokud chceš vědět, jak to na takovém našem workshopu vypadá, můžeš si prohlédnout tento sestřih z roku 2016. Jak se můžeš zapojit?Evropský týden programování je nezávislá iniciativa dobrovolníků s podporou Evropské komise, do které se může zapojit kdokoli, tedy i ty. Můžeš být učitel, vést programátorský kroužek nebo se zkrátka dobrovolně angažovat v digitálním vzdělávání. Stačí, když uspořádáš programátorskou aktivitu #CodeWeek a přidáš ji na mapu na stránce codeweek.eu. Na stránce navíc najdeš návod a propagační materiály, které ti s realizací pomohou. Pokud si na něco podobného netroufáš, můžeš tuto akci podpořit i použitím hashtagu #codeweek. 
Lambda výrazy v Javě - část III.
Tipy a triky
03.10.2019
Skillmea

Lambda výrazy v Javě - část III.

Lambda a vnitřní anonymní třídyVelmi se nám žádá říci, že lambda výrazy jsou jen zkratky jak napsat vnitřní anonymní třídy. Ale pamatuj si, není tomu tak. Vypadá to podobně, ale lambda není implementace rozhraní. Lambda je sama osobě nezávislá jiná věc. Podívejme se na příklad. Namísto toho, abychom použili implementační třídu našeho rozhraní IHelloWord, vytvoříme si vnitřní anonymní třídu. IHelloWord helloWord3 = new IHelloWord() { @Override public void sayHello() { System.out.println("HelloWord impls inner anonymous class"); } };Všechny 3 možnosti, které mají jako návratovou hodnotu rozhraní IHelloWord můžeme podsunout do metody printHelloWord(IHelloWord helloWord). helloWord.printHelloWord(helloWord1); helloWord.printHelloWord(helloWord2); helloWord.printHelloWord(helloWord3); Jak to, jak to?Jak java ví, jaký má použít typ pro lamba výraz? Abychom tomu porozuměli, vytvoříme si novou třídu, kde budeme pracovat s lambda výrazem. Vytvořme si rozhraní, které bude mít jednu metodu, která bude vracet int a na vstupu bude také 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; } }Nyní si navrhněme lambda výraz, který odpovídá dané metodě. Nepotřebujeme návratovou hodnotu int, neboť java umí na ni přijít sama a nepotřebujeme ani název metody a ani modifikátor přístupu public. Náš lambda výraz bude vypadat takto: (int a) -> a*5;Nyní použijte tento lambda výraz: public static void main(String[] args) { Nasob nasobPiatimi = (int a) -> a*5; System.out.println(nasobPiatimi.nasob(10)); }Na výstupu bude 50. V tomto příkladu se lambda tváří jako instance rozhraní Nasob. V předchozích příkladech, kdy jsme používali HelloWord, jsme takovou proměnnou vkládali jako parametr metody printHelloWord (HelloWord3 v IDEi). Namísto toho jsme mohli tuto lambdu vložit přímo do metody. helloWord.printHelloWord(() -> System.out.println("HelloWord impls lambda");); Java kompilátor vezme tento lambda výraz a podívá se kam jde. Jedná se o metody printHelloWord a podívá se, co akceptuje na vstupu. Akceptuje rozhraní HelloWord. Pokud lambda sedí s požadavkem, že dané rozhraní obsahuje jen jednu metodu a ta vrací void a na vstupu nemá žádný parametr, tak java řekne, že daná lambda je typu HelloWord. Toto se jmenuje Type inference. Java si sama zjistí typ. Teď, když víš jak java dokáže zjistit typy, vrátíme se k příkladu, který jsme začali psát v této kapitole. V našem příkladu umíme ještě více zkrátit zápis našeho lambda výrazu. Nasob nasobPiatimi = (int a) -> a*5; System.out.println(nasobPiatimi.nasob(10));Jelikož naše lamba jde do metody rozhraní, kterou zná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); }Když to víme, tak nemusíme při psaní lambda výrazu znovu specifikovat typ vstupního parametru. Nasob nasobPiatimi = (a) -> a*5; A jelikož máme jen jeden parametr, nemusíme psát ani závorky. Násob napětí = a -> a*5; Už nebudeme nic mazat, neboť by nám už nic nezbylo 😃 Nyní můžeme napsat metodu, která bude na vstupu očekávat rozhraní Nasob a když ji použijeme, tak do ní 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 jevu mohli klidně vytvořit nový typ pro tyto lambda výrazy. Ale neudělali to a jedním z důvodů je i zpětná kompatibilita se starším kódem. Jak už víme, tak lambda výrazy můžeme použít všude tam, kde máme vyhovující rozhraní. Ve vnitřních anonymních třídách, v metodách kde je na vstupu interface a podobně. Pří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"); Při tomto musíme pamatovat, aby rozhraní byla jedno metodová nebo aby ostatní metody rozhraní byly default. A dané metody v rozhraních, aby se shodovaly s lambda výrazem. Takové rozhraní s jednou abstraktní metodou (metoda, která poskytuje popis ne implementaci) se nazývá Functional interface. Představ si, že používáš rozhraní, které má jen jednu metodu a používáš ho pro lambda výrazy. Nyní by někdo cizí přišel a do tohoto rozhraní by přidal další abstraktní metodu, přesněji její popis bez implementace. Takové rozhraní by již více nebylo functional interface a proto by se nemohlo použít pro lambda výraz a nastala by chyba - přestože rozhraní by bylo v pořádku. Třeba na to myslet a pokud chceme něco přidat do functional interfac, tak jen jako default metody. Abychom upozornili kohokoli, kdo by chtěl něco přidat do našeho rozhraní, tak máme možnost přidat anotaci @FunctionalInterface. K anotacím se ještě dostaneme, tak se nebojte. Nyní je důležité vědět, že je to pomůcka – tato pomůcka nám udělá to, že jakmile napíšeme další metodu do našeho rozhraní, tak nastane chyba. Danou anotaci nemusíme psát, ale je to super. @FunctionalInterface public interface HelloWord { void sayHello(); }Příklady na vyzkoušení: 1. vytvoř si seznam míst 2. setřiď seznam 3. napiš metodu, která vypíše vše ze seznamu míst 4. udělej si metodu, která vypíše jen ta města, která se skládají z jednoho slova nepoužívej při tom lambda výrazy Pokračování příště 👋 Články a online kurzy o Javě pro tebe připravuje Jaro Beňo.
ReactiveConf 2019: pátý ročník konference míří opět do Prahy
Události
24.09.2019
Katarína Kučáková

ReactiveConf 2019: pátý ročník konference míří opět do Prahy

Pátý ročník konference ReactiveConf 2019 míří do Prahy, aby opět přinesla přehled nejnovějších technologií z prostředí programování a software developmentu. Chceš odkrýt tajemství společností jako jsou Zeit, Google, Brave, Cypress a další? Co pro tebe letos organizátoři připravují? Čekají tě 3 nabité dny přednášek, workshopů, panelových diskusí, které zaklíní závěrečná párty. Tentokrát se organizátoři snažili přesáhnout rámec React, Angular or Vue a rozšířit diskusi na další prvky ekosystému jako jsou ReasonML, Elm, Clojure or Nuxt.js. Dva dny konference + festivalový denReactiveConf se koná od 30.října do 1.listopadu 2019 v prostorách Forum Karlin v centru Prahy. První dva dny jsou konferenční, na 4 stazích budou probíhat přednášky, panelové diskuse a tvz. lightnings talks (krátké několikaminutové přednášky a prezentace). Ze 60 speakerů zmiňme namakaného softwarového inženýra Davida Nolena, Briana Holta z Microsoftu se svou přednáškou o základech futuristického kódu a podobně. Třetí, festivalový den, je věnován především workshopům - čeká jich na tebe více než 15, program bude doplněn o přednášky a na závěr odstartuje afterparty, která se přehoupne až do dalšího dne. Pro koho je konference určena?Je určena pro tebe, pokud programuješ nebo se zajímáš o nové technologie. Poslechneš si novinky ze světa front- a back-endu, mobilních aplikací, mezitím můžeš u kávy a občerstvení networkovat. Letos se očekává více než 1300 účastníků. Kde sehnat lístky?Lístky seženeš přímo na stránce ReactiveConf až do 29.10. 2019. Pokud navíc při platbě zadáš kód "Learn2code", získat 20% slevu na individuální lístek.[Image]
4 nové online kurzy
Novinky
03.09.2019
Skillmea

4 nové online kurzy

Tento týden ti na Learn2Code přinášíme 4 nové kurzy, ve kterých jsme dali prostor několika novým tématům. Jsou to online kurzy zaměřené především na soft skills, zpestřením je určitě šachový kurz se slovenskou jedničkou Jánem Markošem. Zaujalo? Přečti si krátké představení kurzů v článku. Prezentační dovednosti - základyPokud i ty míváš roztřesená kolena vždy, když máš vystoupit na pódium nebo prezentovat svůj nápad před skupinou lidí, měl bys zaměřit pozornost na tento kurz. Nikdo jako řečník z nebe nespadl, i ty se máš možnost osvojit si a zdokonalit své prezentační dovednosti tak, abys při vystupování působil/a sebevědomě. Co máš dělat při vystupování s rukama, kam se dívat a jak pracovat s publikem ti vysvětlí Andrej Mažáry - lídr Slovenských Toastmasters (globální organizace věnující se řečnictví) a středoevropský šampion v řečnických improvizacích.   Jak přemýšlet při fotografováníV nabídce máme mnoho kurzů zaměřených na technickou stránku fotografie. Vytvořit dobrou fotku však není jen věcí kompozice a techniky, fotka by měla být nositelem příběhu, emoce, kterou chce fotograf zachytit. Učit se budeš od tří úspěšných a oceňovaných fotografů, kteří se věnují především dokumentární a reportážní fotografii. Každý z nich ti poskytne vlastní pohled na postupy a techniky, které při focení používají, jak pracují s objektem, s různými zdroji světla, prozradí ti kompoziční tipy a nápady. Kurz je určen tobě, máš-li už zvládnuté základy práce s fotoaparátem, možná uvažuješ nad focením jako svým živobytím a hlavně chceš tvořit fotky, které budou výjimečné.  Kurz podnikání - jak začítKurzem tě bude provázet osm zakladatelů a CEO úspěšných slovenských firem. Tím myslíme značky jako Tuli, CURAPROX, daren & curtis, VISIBILITY, Be Cool a další. V tutoriálech se s tebou podělí o své zkušenosti, Know-how a zodpoví důležité otázky, nad kterými možná uvažuješ i ty. Jak myšlenku přeměnit na realitu, nápad na fungující byznys? Jak umíš odhadnout jeho úspěch? Jakou roli hrají brand, firemní kultura či hodnoty firmy? Vysvětlí ti i plusy a minusy partnerství v podnikání, jak a kdy přijímat nové zaměstnance a co dělat, kdyby to celé nevyšlo. Šachy (Coming soon)Dlouholetá šachová jednička na Slovensku Ján Markoš odhaluje své šachové mistrovství. Uč se od něj o šachových strategiích, taktikách či síle jednotlivých figur. Objevíš strategické a taktické postupy, o kterých jsi možná dosud nevěděl. Kurz je určen mírně a středně pokročilým šachistou. Ať už rozehráváš šachové partie online nebo tváří v tvář, tento kurz tě dostane na vyšší úroveň. Našel jsi kurz, který tě zaujal a bude pro tebe přínosným? Pokud máš případně návrh na další témata kurzů, které bys v Learn2Code uvítal, napiš do komentáře.
Lambda výrazy v Javě - část II.
Tipy a triky
23.08.2019
Skillmea

Lambda výrazy v Javě - část II.

Typy lambda výrazůTento článek je pokračováním první části tutoriálu o Lambda výrazech. Vraťme se k našemu příkladu na začátku, kde jsme do metody vložili implementaci rozhraní a zavolali jsme metodu. Toto si teď zkusíme spolu předělat, tak abychom použili lamba výraz. HelloWord2. Přepište metodu implementace na lambda výraz. public void sayHello() { System.out.println("HelloWord impls"); } () -> System.out.println("HelloWord impls"); Znovu ta samá otázka, jaký typ má lamba výraz pokud ho chci přiřadit do proměnné? lambdaFunkcia = () -> System.out.println("HelloWord impls");Počkat! V Javě přece máme možnost jak deklarovat, jmenovat metody a tu použijeme. Tou možností je použít rozhraní. 1. vytvoření rozhraní s jednou deklarací metody 2. vytvoření metody, která odpovídá našemu lambda výrazu 1. v našem případě nemá žádné argumenty a návratová hodnota je void  Pokud bychom vytvořili rozhraní, kde budeme uvádět několik metod, tak to bude chyba. Jedině pokud budou default - tedy implementovány. Viz sekci o rozhraních. ILambda lambdaFunkcia = () -> System.out.println("HelloWord impls"); … public interface ILambda { void metoda(); // void metoda2(String s); // bude error } Použijme lambda výraz s bezpečným dělením. Napišme si k tomu interface a proměnnou: 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); }Tady si můžeme říci, že název rozhraní a název metody v rozhraní není důležitý. Důležité je, aby seděly vlastnosti. Tedy rozhraní má jen jednu metodu (mimo default metod) a metodě sedí typ návratové hodnoty a parametry metody. Implemetační třídu už tedy nepotřebujeme, neboť jakoby implementací je lambda výraz. Můžu si to nechat, pokud to potřebuji takto používat, ale v našem případě nepotřebuji implementační třídu. Lambda výraz se chová jako implemtnace rozhraní. Ale není to implementace. Tento příklad bude fungovat: HelloWord3 helloWord = new HelloWord3(); IHelloWord helloWord1 = new HelloWordImpl(); IHelloWord helloWord2 = () -> System.out.println("HelloWord impls lambda"); helloWord1.sayHello(); helloWord2.sayHello();Na výstupu bude: HelloWord impls HelloWord impls lambda Pokračování příště 😗 Mrkni prozatím moje kurzy o Java programování nebo videa, která máme na Youtube.
Tipy, triky a chyby v jazyce C++ pro začátečníky
Tipy a triky
04.08.2019
Skillmea

Tipy, triky a chyby v jazyce C++ pro začátečníky

Tímto článkem bych vám chtěl představit zajímavé tipy a triky v jazyce C++, které byste mohli použít ve vašem kódu. Jsou velmi jednoduché, protože jsou určeny pro začátečníky. Navíc bych vás chtěl upozornit na některé často se opakující chyby, které se ve vašem kódu mohou na začátku vyskytovat. Nejedná se o chybu v pravém slova smyslu, tedy ne takovou, po které by byl váš kód nepřeložitelný, spíše se jedná o obroušení vašeho programátorského stylu, či vytvoření takového kódu, který bude rychle vykonáván. Poslední zmíněnou vlastnost dosáhnete s C++ snadno, protože kódy, které navrhnete v C++ se provedou mnohem rychleji než ty, které navrhnete v jiných jazycích. Umím programovat ve více jazycích a proto to mám skutečně odzkoušené. Pamatujte, že C++ to však neprovede za vás, protože i tam lze vytvořit velmi špatný kód. Záměrně se použil termín špatný, ačkoli není odborný. Myslím tím kód, ve kterém špatným stylem a technikou nedosáhnete požadavků, které se na kód kladou. Příkladem může být právě rychlost provádění spustitelného kódu, jeho přehlednost či snadná udržovatelnost. V následujících řádcích vám to na pár příkladech ozřejmím. Příklady tipů, triků a chybJistě jste se již v programování pokoušeli naprogramovat jednoduché matematické operace. Mějme tedy následující 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; }Nejprve bych se vás chtěl zeptat, jestli se vám takto napsaný kód na první pohled líbí. Myslím tím po koncepční stránce. První chybou je, že začínající programátoři neodsazují bloky kódu. Tak například tento kód by se dal pěkně odsadit pomocí následujících pravidel. Oddělte direktivy preprocesoru od hlavičky funkci main(). Oddělte deklarace a definice proměnných od zbytku kódu. Někdy, když budete používat mnoho proměnných, můžete také jednotlivé deklarace proměnných uspořádat do logických celků. Můžete vytvořit bloky kódu podle typu proměnné. Navíc jazyk C++ vám umožňuje deklarovat a inicializovat proměnnou na místě, kde to skutečně potřebujete, tedy předtím, než ji použijete. Dále, v tomto kódu oddělte nosnou část kódu a to vytvořte blok kódu, kde se provádějí jednotlivé matematické operace. Nakonec, oddělte zápis na obrazovku a také načtení ze vstupu klávesnice. Potom už jen oddělíte klíčové slovo return s jeho návratovou hodnotou. Po zmíněných úpravách vám vznikne čitelný kód, který vypadá následovně: #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; }Když se dále podíváme na kód, můžeme některé deklarace umístit na jeden řádek. Konkrétní provedení nechám na vás, ale já bych doporučoval deklarovat na jednom řádku proměnné, které se neinicializují hned na začátku současně s deklarací. Na druhý řádek bych umístil proměnné, které se inicializují současně s deklarací. Takto získáte ještě větší přehled v kódu a ušetříte 4 řádky kódu. Kód bude vypadat následovně: #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; }Nyní přejdeme ke zmiňované rychlosti. Je mi jasné, že při tak krátkém kódu ušetříme relativně málo času, ale kdyby se nosná část kódu, tedy tři matematické operace s přiřazováním, prováděly v cyklu například. 1 000 000 krát, viděli byste zaručeně rozdíl. V uvedeném příkladu není nutné použít 7 proměnných a výsledek vyhodnocovat na třikrát. Výsledky b + c a e - f se vynásobí a přiřadí do další proměnné. Tak, jak to je naprogramováno, je to zbytečné. Zkuste vše vyhodnotit jako jeden výraz a přiřadit na jednom řádku. Vznikne nám kód, který bude mít o dva řádky méně a bude provádět totéž. A v čem je vlastně problém. No v operátoru přiřazení. Tato operace je příliš časově náročná. V podstatě se musí přesunout hodnota proměnné uložená na jednom paměťovém místě do paměťového místa, které je určeno pro jinou proměnnou. A po kurzu už víte, že počítač zná jen 0 a 1. Organizačně existuje nejméně jeden bajt. Nezmiňoval jsem sice, co je zásobník, ale když se pohybujeme v jeho paměti, trvá to ještě déle. Vraťme se ale zpět, po úpravě bude kód vypadat následovně: #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 pojďme ještě dál. K čemu vůbec v tomto kódu používáme proměnné, když je nenačítáme ze vstupu. Výsledek kombinace matematických operací můžeme přece zapsat rovnou na obrazovku, aniž bychom hodnoty přiřazovali do proměnných. Odstraníme tím i deklarace. Po konečné úpravě, bude kód vypadat následovně: #include <iostream> int main() { std::cout << "res = " << (-1 + 4) * (2 - 3) << std::endl; std::cin.get(); std::cin.get(); return 0; }Závěrem bych tedy znovu chtěl zdůraznit, jak jsou programátorský styl a technika důležité. Vidíte, že z 18 řádkového kódu, který jsme získali odsazením původního kódu, nám po několika úpravách zůstal kód, který má 8 řádků. A tento kód, ačkoli je malý, je laicky řečeno, pěkný. To znamená, že se jeho spustitelný kód provede rychle, je přehledný a snadno udržovatelný. Autorem blogu je Marek Šurka, který má na Learn2Code online kurz C++ pro začátečníky.
7 otázek na nového lektora Marka Šurku
Rozhovory
25.07.2019
Skillmea

7 otázek na nového lektora Marka Šurku

Dnes ti představíme člověka, díky kterému můžeš na Learn2Code nově studovat i programovací jazyk C++. Náš nový lektor Marek Šurka alias Kamas se jazyku C++ věnuje již od svých 20 let a v kurzu tě provede od jeho úplných základů až ke složitějším technikám. Proč se rozhodl vytvořit kurz programování a jak se k jazyku C++ vůbec dostal? Dozvíš se v rozhovoru!👇[Image] Proč ses rozhodl pro vytvoření kurzu ve spolupráci s Learn2Code?V podstatě jsem už dlouho hledal způsob, jak předávat své zkušenosti s programováním dál. V Learn2Code jsem našel ideální řešení. Mluvím právě o online kurzech, které můžete absolvovat pohodlně kdekoli, v jakémkoli čase a v dávkách, které si sami určíte. Já se tak také jako lektor nemusím omezovat na konkrétní čas a místo. Co se lidé naučí ve tvém online kurzu?V kurzu lidé získají první zkušenosti s jazykem C++. Není to však rychlokurz, během kterého se člověk naučí všechno o C++. Výstupní znalosti jsou na úrovni začátečníka, protože jsem se snažil jít víc do hloubky.   Najdete tam informace z programování a matematiky. Plánuji postupně doplnit toto téma, protože programování v jazyce C++ není totiž téma na jeden, dva kurzy. [Image] Kde a na jaké pozici v současnosti pracuješ?Pracuji jako programátor-analytik ve společnosti, která se věnuje automatizaci a diagnostice. Dlouhodobě pracuji na projektu, kde se věnuji robotice a programování průmyslových svařovacích robotů. Vyvíjím Frontend i Backend. A baví mě to :) Jak ses k programování a jazyku C++ dostal?Už na střední škole jsem se setkal s jazykem Turbo Pascal, v rámci jednoho předmětu jsme dokonce programovali mikroprocesory v jazyce Assembler. Musím se přiznat, na začátku mi to moc nešlo. Nakopl mě až programovací kroužek a nejvíc mi dala vysoká škola, kde jsem totálně drtil jazyk C++ a SQL. [Image] Co tě baví na tvé práci?I když možná nebudou všichni souhlasit, programování je i tvůrčí činnost, sám se neustále vzdělávám a učím a jen taková práce má pro mě smysl. Dnes je obrovská poptávka po programátorech. Co bys poradil všem, kdo nemají žádné zkušenosti, ale chtěli by nějak začít?Aby se nevzdávali a byli draví. Nikdo není na začátku expert. Ani Jazyk C++ se nedá teoreticky naučit na úroveň expert, to chce praxi. Hlavně doporučuji, aby byli lidé sami hladoví po znalostech. Nejlépe se něco naučíte, když vás to baví. Jsou lidé, kteří jsou výjimečně talentovaní, ale nebaví je programovat. Daleko více dosáhne méně nadaného člověka, jehož programování zajímá. Potom se učí s lehkostí. Jednoduše programujte, čtěte, dívejte kurzy, diskutujte na fórech, srovnávejte. Učíte se pro sebe. [Image] A čemu se věnuješ ve volném čase?Věnuji se manželce a dceři, chodíme na výlety. Je to nezbytné, když člověk každý den pracuje s počítačem. Kromě toho rád čtu, nejvíce odbornou literaturu. Rád se učím. A snažím se sportovat. Nejraději mám plavání a hokej, kterému se amatérsky věnuji. Marek, děkujeme za rozhovor. Líbil se ti rozhovor? Věnuj mu 👍 Pokud máš na Marka nějakou otázku, napiš ji dolů do komentáře 👇   Pokud chceš zjistit více o Marekovém kurzu C++ elementary, zkoukni intro do online kurzu!
Lambda výrazy v Javě - část I.
Tipy a triky
21.07.2019
Skillmea

Lambda výrazy v Javě - část I.

V tomto a v následujících článcích se podíváme na zoubek lambda výrazem. Budeme si je vysvětlovat zcela dopodrobna, abychom je pochopili a využívali. Obsahově se zaměříme na tyto oblasti: 1. porozumění lambda výrazům, 2. použití lambda výrazů, 3. funkcionální rozhraní (functional intefaces), 4. reference metod (method references), 5. vylepšení na kolekcích. Proč použít lambda výrazy? Řekneme si pár odrážek, proč je používat. • povoluje použít takzvané funkcionální programování, což je dosud něco, řekl bych divné, protože Java je objektově orientovaný jazyk, • zpřehledňují kód, lepší čitelnost v některých případech, kde bychom použili několik zbytečných řádků, abychom napsali totéž. Možná se zamýšlíš, proč používat funkcionální programování v jazyce, který je objektově orientovaný. Už není OOP tak dobré? Už zanikne? Ne, nezanikne a java je a myslím si, že pořád bude objektově orientovaný jazyk. Toto funkcionální programování ber jen jako další nástroj, který jako vývojář máš ve své ruce. U OOP jsou vývojáři zvyklí přemýšlet v podstatných jménech, v objektech, ve třídách. Například Pes štěká. Štěkání je součástí Psa. Tím pádem metoda, která bude zajišťovat psí štěkání, je součástí třídy Pes. Někdy ale potřebuji kus kódu, metodu – nebo jinak řečeno funkci, která nepatří do žádné třídy speciální. Podsunutí chování do metodyUvažuj nad tím, že máš metodu, která na konzoli vypíše nějaký text. Například staré známé Hello World. Pro tento účel bychom si vytvořili třídu, které by byla metoda pro vypsání Hello Word. Tuto metodu bychom pak vypsali na konzoli v main metodě. Příklad v idea Lambda2. Naším úkolem bude nyní předělat tento kód tak, abych dané metodě podsunul chování a uvnitř té metody se jen provede to chování. Ukažme si na příkladu. Takže jsme udělali, co jsme chtěli. Do metody jsme podsunuli chování jako argument a poté jsme jej provedli. Ale ne tak přesně. Do metody jsme podsunuli něco, co má v sobě chování. Podsunuli jsme implementaci rozhraní, která má v sobě metodu, která provede očekávané chování. Právě tomuto chtějí lambda výrazy zabránit. Chtějí zabránit tomu, abychom podsouvali objekty, ale chtějí, abychom podsouvali funkce. Namísto tohoto: public void printHelloWord(IHelloWord helloWord){ helloWord.sayHello(); } chceme do metody vložit nějakou akci, nějakou funkci. Tento přístup umožňuje chovat se k funkcím jako k hodnotám. public void printHelloWord(funkcia){ funkcia(); } Pokud napíšu String jméno = “Jaro”; tak jsem hodnotu Jaro přidělil do proměnné jméno. Nyní jsme ale nastínili, že do nějaké proměnné bychom chtěli vložit blok kódu, který prezentuje naši funkci. Takže blok kód by se stal hodnotou a ta by se dala vložit do proměnné. Takže tam, kde používám danou proměnnou, tak tam používám i danou funkci, která je v ní. Pro představivost, chceme dosáhnout tohoto: premennaSFunkciou = public void sayHello() { System.out.println("HelloWord impls"); } Toto je možné pomocí lambda výrazů. Nejprve se ale podívejme na tento kus kódu a řekněme si, co nepotřebujeme: • public – označuje mi, jestli je něco veřejně dostupné mimo třídu, dává smysl v kontextu třídy, tady ale přidělujeme do proměnné, tak to nepotřebujeme, neboť funkce je dostupná tomu, kdo pracuje s danou proměnnou. premennaSFunkciou = void sayHello() { System.out.println("HelloWord impls"); } • název sayHello = pokud přistupujeme k hodnotě, která je v proměnné, tak k ní přistupujme názvem proměnné, v našem případě je název proměnné proměnnou SFunkcí, takže ani druhé jméno nepotřebujeme. premennaSFunkciou = void () { System.out.println("HelloWord impls"); } • typ návratové hodnoty – při psaní lambda výrazů nemusím psát, jaký je návratový typ, překladač ví, podle nitra metody, co se vrací. premennaSFunkciou = () { System.out.println("HelloWord impls"); } Toto ale ještě není lambda výraz. Pokud napíšu šipku (pomlčka - a znaménko větší >) mezi závorky a blok kódu, tak tehdy jsme vytvořili labmda výraz. premennaSFunkciou = () -> { System.out.println("HelloWord impls"); } Pokud metoda obsahuje jen jeden řádek, tedy ne více řádků, tak lze dále upravit tento výraz a to tak, že odstraníme složené závorky. Pokud je více řádků, tak složené závorky ponecháme. premennaSFunkciou = () -> System.out.println("HelloWord impls"); Teď si už umíme představit, udělat, to, že pošleme funkci jako parametr metody a uvnitř spustíme danou funkci. public void printHelloWord(------){ -----(); }Do metody můžeme vložit jako argument při volání metody přímo lambda výraz. printHelloWord(() -> System.out.println("HelloWord impls")){ PříkladyNapiš metodu, která vezme jako parametr číslo a vynásobí ho 5ti.nasobokPiatichFunkcia = public int nasobokPiatich(int i){ return i*5; }Přepíšeme to na lambda výraz, vyškrtám všechno, co nepotřebuji. Tedy název, návratovou hodnotu a modifikátor přístupu. nasobokPiatichFunkcia = (int i){ return i*5; }Napíšeme tam šipku a jelikož řádek je tam jen jeden, tak umíme odmazat kudrnaté závorky. nasobokPiatichFunkcia = (int i) -> return i*5;Tady máme další pomůcku, nebo možnost škrtat. Jelikož java kompilátor zná vnitřek metody a ví, co má vrátit, můžu vymazat i return. nasobokPiatichFunkcia = (int i) -> i*5;Když máme jednořádkový lambda výraz bez složených závorek, tak je nezbytné nepoužívat return. SčítáníscitaniFunkce = (int a, int b) -> a+b;  OdčítáníodcitaniFunkce = (int a, int b) -> a-b; Bezpečné děleníbezpecneDelenieFunkcia = (int a, int b) -> { if(b==0) { return 0 ; } return a/b; };Spojení řetězcůstringJoin = (String x, String y) -> x.concat(y);  Stále jsme v Javě. Tedy v typovém jazyce. Jaké jsou typy těchto proměnných, které v sobě drží lambda výrazy? Video:Pokud tě více baví poslouchat a dívat, tak si můžeš prohlédnout sérii videí o lambda výrazech v kurzu Java pro pokročilé. ZáverPokud by ses chtěl dozvědět o Javě víc nebo jsi nepochopil všechno, tak jsem i pro tebe připravil online kurzy o Javě na https://skillmea.sk. Pokud se chceš o mně dozvědět více, tak klikej na jaroslavbeno.sk nebo mě sleduj na sociálních sítích – youtube, facebook, instagram, linkedin.  Zakomponuji i malou reklamu. Ve spolupráci s tvůrci židle Neseda.com ti nabízím s kódem/kuponem JaroslavBeno 10% slevu (aplikovatelná i na zlevněnou židli). Já jsem Jaro a my se vidíme, slyšíme-li Bůh dá příště. Čaves.
Instagramové profily, které se vyplatí sledovat
Ostatní
03.07.2019
Katarína Kučáková

Instagramové profily, které se vyplatí sledovat

Možná patříš mezi ty, kteří si dají Instagram ještě před snídaní. Nebo v něm jen často hledáš inspiraci pro svoji práci, příspěvky. A tak jsme trochu přesurfovali Instagram a našli zajímavé lidi, které se určitě vyplatí sledovat. Marketing  visibilitysk (Visibility)Tuto online marketingovou agenturu není třeba představovat, protože je dostatečně „visible“. Instagramový život Visibility zobrazuje lidi, kteří stojí za děním v agentuře, mapuje jejich práci, úspěchy, office život. Svatby, děti, teambuildingy a konference, i to patří k životu úspěšných marketérů. Nám se na tomto profilu líbí přirozenost a prostor, který věnují vlastním lidem. jandl_advertising (Jandl)Marketingová agentura Jandl se může pyšnit reklamní kampaní například pro Coop Jednotu (kdo by neznal dva pošetilé bače ze salaše), kampaní Jedeme vlakem pro ZSSK, známe je také z bilboardů Zoo Bratislava. Na Instagramu najdeš ukázky jejich práce, záběry z natáčení reklamních spotů, ale také profily jednotlivých lidí tvořících Jandl a zákulisní život agentury. elitesolution (Elite solutions)Takový příjemně neformální instagramový profil jedné reklamní agentury. Vždyť nakonec se i prezentují jako kolegové a kamarádi v jednom. Aktuálně jste možná zachytili jejich kampaň #Nebuďpirát ve spolupráci s O2 a známými influencery, za zmínku určitě stojí jejich spolupráce s neziskovou organizací DEPAUL SLovensko, kde pomáhají získávat prostředky pro lidi bez domova. Design mikaela220 (Michaela Chmeličková)Milujeme tento barevný a ilustrovaný instagramový profil z planety 220. Miška je zkušená designérka a ilustrátorka, na rováši má takové zajímavé projekty jako například Curaprox, Bílá noc, design triček a obalů na telefony pro Kompot. Díky ní se na trička dostala i taková osobnost, jakou je Majka z Gurunu. petra.ziackova_tattoo (Petra Žiačková)Pokud se jednou rozhodneme pokreslit, určitě to bude tetovačka od Petry Žiačkové. Petra také ilustruje, její detailní obrázky tě úplně pohltí a vtáhnou do jiného světa. Magického. michalslovak (Michal Slovák)Michal dělá obaly. Alespoň podle Instagramu. Najdeš tam džusové, čokoládové, mýdlové, kávové. Zkrátka samé dobré věci. Kromě toho Michal rád cestuje a světovými fotkami je poprolínán i jeho Instagram. Balans musí být. Nám se to líbí. Foto&Video Patrik Paulíny (patrikpaulinyi)Fotograf a filmař Patrik Paulíny cestuje po světě a na svůj Instagram přináší skvělé záběry. Za své příspěvky si vysloužil ocenění Instagram roku 2018. Patrika proslavil zejména projekt Follow me to Slovakia, které tě ve 2-minutovém videu vezme na cestu za krásami Slovenska. michal_zahornacky (Michal Záhornácky)Michalovým zaměřením je umělecká fotografie, snové portréty působí surrealisticky, až pohádkově. Na svém profilu zachytil mnohé tváře, najdeš mezi nimi i známé osobnosti, každý portrét je jedinečný, vypráví jiný příběh, emoci. Zajímavá je jeho spolupráce s Danielem Hevierem v rámci projektu Chymeros, dobrodružné výpravy, do které je zapojeno již více než tisíc dětí ze základních škol z celého Slovenska. maria.svarbova (Mária Švarbová)Její fotografie, inspirované funkcionalistickou architekturou a minimalismem, jsou jakousi magickou realitou. Maria je mladá fotografka, za svou jedinečnou tvorbu nedávno získala ocenění jako Forbes 30 under 30, prestižní ocenění Hasselblad Master 2018 Marii řadí mezi fotografickou špičku světa. Ve slavné sérii Swimming Pool se Marii podařilo zmapovat přibližně 11 slovenských plováren, téma je unikátní. Pokud se zajímáš o fotografii, určitě doporučujeme navštívit Mariin profil. Tak čo povieš? Necháš sa inšpirovať niekým z týchto šikovných ľudí? 
Tipy, jak ušetřit čas při práci ve Sketchi, Photoshopu, Illustratore a InDesignu
Tipy a triky
19.06.2019
Katarína Kučáková

Tipy, jak ušetřit čas při práci ve Sketchi, Photoshopu, Illustratore a InDesignu

Práce v grafických programech se někdy podobá cirkusovému chaosu. Ikonky, záložky, nekonečný počet nástrojů, pluginů. Víme, je obtížné se v tom zorientovat. Proto jsme pro tebe ve spolupráci s lektory vybrali tipy, které i nám usnadňují život a hlavně šetří čas. Konkrétně se podíváme na programy Sketch, Adobe Photoshop, Illustrator a inDesign. Sketch Sketch je profesionální ilustrační program pro práci s vektorovou grafikou, který je dostupný pro uživatele Mac OS X. Sketch je intuitivní a uživatelsky nenáročný, jeho zvládnutí na profi úrovni spočívá zejména v malých tricích. Zde jsou některé z nich. [Image] • Rotate copies (rotování kopií)             Nástroj Rotate Copies ti umožní rotovat kopie určité vrstvy kolem konkrétního bodu. Vezmi si třeba květinu. Stačí vytvořit jeden okvětní lístek a desítky jeho kopií můžeš rotovat kolem středu. Voila. Tento nástroj se standardně nenachází v panelu nástrojů, ale můžeš si jej přidat přes control-click a „Customize toolbar“, případně v menu přes Layer > Path > Rotate Copies. • Convert to outlines (převést na obrysy) Jak a kdy převést text na obrysy je nezbytnou znalostí z hlediska vektorové kresby. Fonty totiž dokážou nadělat při tisku spoustu problémů. Na druhé straně, pokud se rozhodneš převést text na obrysy, text se stane grafikou a po konverzi jej již nebude možné upravit. Pro konverzi textu na obrysy zvol v menu Layer > Convert to Outlines (prípadně stlač Shift-Command-O). • Obnovení ztracených dat Mac má skvělou funkci, která je kompatibilní i se Sketchem. Můžeš si tak prohlédnout historii souboru a obnovit ztracená data přes File > Revert To > Browse All Versions. • Vnoření symbolů Vnořený symbol můžeš vytvořit tak, že instanci (kopii) symbolu umístíš do jiného symbolu na stránku symbolů. Při provedení změny rodičovského symbolu se změní všechny jeho instance, bez ohledu na to, zda jsou součástí jiného symbolu, nebo ne. Neexistuje limit na to, jak hluboko lze symbol vnořit, symbol však nesmí obsahovat instanci sebe sama. • Sdílení souborů přes appky (například Slack) Jednoduše sdílej soubory přes appku tak, že potáhneš vybraný file ze sekce Export - file a vložíš na plochu vybrané appky. • Export Presets Tímto nástrojem ušetříš nesmírně mnoho času, můžeš si totiž kopírovat prvky ze svého designu. Vytvoření jednotlivých presets provedeš pomocí Presets preference panel. • Klávesové zkratky Přehled všech užitečných klávesových zkratek najdeš zde! • Pluginy  Užitečné pluginy jsou Stark pro kontrolu kontrastu, Runner pro rychlejší přístup k funkcím  a Rename it + Styles Generator pro stavbu knihoven. Adobe Photoshop Photoshop je velmi oblíbeným nástrojem v oblasti úpravy fotografií a grafiky. Máš už v malíčku všechna jeho zákoutí? [Image] • Kopírování barvy z jakéhokoli obrázku, vzoru a podobně. Pomocí nástroje Eyedropper tool máš možnost vybrat barvu ze zdroje mimo prostředí photoshopu a palety barev. Jednoduše klikni a podrž nástroj kapadlo a se stlačeným tlačítkem přejdi na vybranou stránku nebo obrázek. Namiř kurzor na plochu s barvou, uvolni myš a máš k dispozici novou zadefinovou barvu. • Změna velikosti (a tvrdosti) štětce Asi tě zdržuje neustále měnit velikost a tvrdost štětce pomocí nástrojové lišty. Zejména při úpravách jako je retuš či práce s maskami oceníš klávesovou zkratku Alt+pravé tlačítko myši (Ctrl+Alt+levé tlačítko na Mac). Stačí podržet tlačítko myši a při pohybu vpravo-vlevo můžeš měnit velikost štětce, při pohybu nahoru-dolů zase jeho tvrdost. • Změna prolínacích módů (blend modes) Práce s prolínacími módy je vždy tak trochu experimentováním, výsledek je totiž obtížné odhadnout. Ty se však nechceš zdržovat dlouho, čeká tě spousta další práce, proto by sis měl osvojit zajímavou zkratku Shift+plus. Tato zkratka slouží k rychlému testování efektů na fotce. • Izolace konkrétní vrsty Někdy může projekt obsahovat tolik vrstev, že se zdá nemožné zobrazit jen jednu konkrétní. Tehdy stačí jednoduše podržet Alt (Option na Mac) a klepnout na ikonku oka na vybrané vrstvě. • Bird's-eye-view Tato funkce ti umožní snadno se orientovat v jednotlivých částech obrázku při detailním přiblížení. Pokud jsi právě použil zoom a chceš přejít na jinou část, aniž bys musel view zmenšovat, klikni a podrž H a potom levé tlačítko myši. Nyní pohybuj kurzorem myši a přejdi na požadovanou oblast. Uvolněním tlačítka myši se vrátíš ke standardnímu náhledu. • Exportování všech vrstev do jedné Potřebuješ exportovat všechny vrstvy do jedné? I na to známe zkratku. Pomocí Control+Shift+Alt+E. (Command+Shift+Option+E pro Mac) spojíš všechny vrstvy do jedné. • Přehled klávesových zkratek[Zdroj: www.digitalsynopsis.com] • Užitečné pluginy Pokud jsi designér, nebo grafik, určitě oceníš plugin RH Hover Color Picker. Nabízí přehlednou práci s barvami a moderní rozhraní, které konečně nevypadá jako palubní deska v letadle. Kopec efektů a filtrů ti umožní ON1 Effects, obrázky zase získáš prostřednictvím pluginu Pexels nebo Shutterstock.   Adobe Illustrator Illustrator je velmi oblíbený pro své široké využití, vytvoříš v něm vše od firemního loga, webových ikon až po knižní ilustrace. Pokud si chceš osvojit užitečné tipy a triky pro práci s ním, jsi na správném místě. [Image] • Výběr podobných objektů Pokud už v Illustratore kreslíš složitější tvary, je užitečné se naučit, jak vyhledat podobné objekty. Pokud například chceme změnit vlastnosti více objektem, nemusíme pracné objekty vyhledávat, navíc mohou být částečně zakryty jinými objekty. Stačí vybrat vybrat jeden z objektů, přejít na Select>Same a vybrat požadované kritérium vyhledávání objektů (například Fill Colour). Všechny objekty s požadovanou barvou výplně pak systém vybere a změní pomocí vzorníku barev. • Nauč se správně používat Pen Tool Zvládnutí tohoto nástroje v Illustratori by mělo být tvým prvním krokem. Není to žádné umění a pomocí nástroje Pen Tool získáš větší kontrolu nad tím, co vytváříš. Výhodou je i jeho univerzální použití, jelikož například ve všech Adobe programech funguje stejně. • Použití Pathfinder k vytvoření komplexních tvarů Po zvládnutí Pen Tool by si měl zaměřit pozornost i na nástroj Pathfinder. Pathfinder umožňuje kombinovat objekty do nových tvarů. Můžete například vrstvit jednoduché tvary a poté pomocí ukazatele pohybu je transformovat na jednotnější, složitější tvar. Existuje několik tutoriálů k použití Pathfinder k transformaci základních tvarů na některá úžasná umělecká díla. • Vyrob si vlastní štětce Ilustrátor milujeme, ale je zapotřebí si v něm vytvořit vlastní prostor. Ne všechny jeho základní funkce jsou pro vytvoření vlastní grafiky dostačující. To platí například io štětcích. V Adobe Illustrator existují 4 základní druhy štětců: kaligrafické, rozptylové, umělecké a vzorkové. Ty máš ale možnost přidat si své vlastní. Vyber si všechny tvary, ze kterých chceš udělat štětec. V paletě štětců klikni na malou šipku vlevo vyber "new brush". • Použi Color CC Pokud chceš, aby tvé ilustrace vypadaly profesionálně, měly by obsahovat kombinace barev, které oku lahodí. To je ne vždy jednoduché a pokud nechceš ztrácet čas jejich porovnáváním, určitě využij Color CC. Tento nástroj ti umožní vybrat pěkné, vkusné kombinace barev, navíc jejich přidáním do palety barev budeš mít hned po ruce. • Přehled základních klávesových zkratek[Zdroj: www.digitalsynopsis.com] • Užitečné pluginy Převezmi kontrolu nad svými vektory pomocí VectorScribe v3, kterou tvůrci popisují jako vektorový švýcarský nůž. Pokud si začínající designér, který se chce ponořit do světa 3D grafiky, určitě neobejde plugin Cineware, efektní je i Gold Rush a Phantasm v3. Adobe InDesign Podobně jako Illustrator, je InDesign založen na vektorové grafice. Poskytuje prostor, ve kterém můžeš spojit všechny své ilustrace a grafiku (např. z Photoshopu, Illustratoru) a vytvořit si vlastní interaktivní dokumenty pro web, tisk, mobilní zařízení a podobně. A jaké triky by sis měl osvojit v InDesignu? [Image] • Vytvoření více objektů stejné velikosti Pokud chceš vytvořit více objektů stejné velikosti, nastav potřebnou šířku a výšku jednoho objektu. Potom je už jen třeba vybrat zbývající objekty a zvolit Object> Transform Again> Transform Sequence Again Individually. • Matematické funkce v panelu nástrojů řekněme, že máš obrázek v rámu a chceš ho zvětšit o 1“, protože by tak pravděpodobně vypadal lépe. V panelu nástrojů, konkrétně ve Width field napiš 1 hned vedle stávající hodnoty. Stiskni Tab a InDesign udělá ostatní za tebe. Rovněž můžeš použít i funkce odčítání (-), násobení (*) a dělení (/). • Používej vyplnění zástupným textem. Lorem Ipsum ti určitě nemusím představovat. V InDesignu nám může posloužit jako zástupný text (pravé tlačítko > Vyplnit zástupným textem) v návrzích, kde tento text použijeme pro lepší představu finálního návrhu. • Přizpůsobení rámu (frame fitting) Pokud chceš přizpůsobit rám grafice uvnitř něj, je zapotřebí dvojitý klik na roh rámu. Nebo zmáčkni Cmd-Opt-C (Mac) / Ctrl-Alt-C (PC). • Vkládání více obrázek pomocí Adobe Bridge (multiplace from Bridge) Sice pro vložení obrázku můžeš použít File>Place, případně přetáhnout požadovaný obrázek na plochu InDesign, je však určitě jednodušší vkládat více obrázků najednou. Otevři Adobe Bridge, vyber si obrázky, které chceš použít ve svém layoutu a zvol File>Place>In InDesign. Tím se automaticky přepneš do InDesign, pomocí kláves se šipkami můžeš procházet obrázky v kurzoru a jednoduše je klepnutím umístit. Pro úpravu můžeš využít Object>Fitting. • Aplikování efektu z jednoho objektu na jiný Podařilo se ti vytvořit skvělý efekt, který bys chtěl aplikovat na další objekty? V tom případě vyber objekt s požadovaným formátováním a potáhni ikonu “FX” z panelu efektů na objekt, na který chceš formátování aplikovat. V případě, že chceš vymazat všechny efekty z objektu, zvol „clear effects“ z Effects okna v paneli nástrojov.  • Klávesové zkratky Přehled všech užitečných klávesových zkratek najdeš zde! • Užitečné pluginy Aquafadas AVE ti usnadní digitální publikování - od návrhu po distribuci obsahu, jeho přizpůsobení různým platformám. Placený plugin Active Tables ti do InDesign přinese Excel, díky PDF2Id zase budeš moci importovat PDF soubory a konvertovat na editovatelný formát.   Práce v uvedených softwarech je velmi obsáhlá a komplexní, snažili jsme se ti uvést alespoň několik „hacků“ pro zjednodušení a urychlení práce. Pokud bys chtěl přispět nějakými ověřenými triky, poděl se o ně v komentáři! Zaujalo tě téma grafiky a designu? Na Learn2code jsme pro tebe připravili nabídku online kurzů grafiky, ze kterých si vybereš svůj ušitý na míru.
Lektor Pavel Banáš - Zažíváme zlatou éru videa
Rozhovory
12.06.2019
Katarína Kučáková

Lektor Pavel Banáš - Zažíváme zlatou éru videa

Rádi se pochlubíme novým přírůstkem do Learn2code rodiny. Dnes ti představíme lektora Pavla Banáše, který tě v novém kurzu Jak vybrat techniku na natáčení naučí zorientovat se ve fototechnice a vybrat si vhodné zařízení. Aby tvá videa měla „šťávu“. :) A co nám prozradil? O své práciPracuji jako freelance videomaker, pod svou značkou Bajter studio (www.bajterstudio.com) vytvářím videa různých žánrů a kategorií. V mé tvorbě převažují zejména hudební videoklipy. Vedle toho studuji Masmediální komunikaci na FMK UCM v Trnavě. Odkdy se věnuji videotvorbě, prošel jsem si už všeličím. V tomto směru rád experimentuji a rozšiřuji své obzory vždy, když se naskytne příležitost. Když to mám shrnout, tak mám za sebou produkci videoklipů, pár videí ze svateb, dokument, nějaké ty aftermovies, propagační videa, krátké hrané filmy, živé přenosy fotbalových zápasů ve sportovní televizi, stáž v reklamní agentuře a momentálně dokončuji projekt své bakalářské práce- rapový muzikál. [Image] O jeho cestě k videoprodukci K videu jsem měl blízko od malička, kamera mě vždycky lákala. První videa jsem začal vytvářet s příchodem foťáků do mobilů. Zlomový bod v mé kariéře přišel, když mi bylo 16 a chodil na gymnázium. Spolu se dvěma spolužáky jsme v rámci videokroužku přihlásili náš výtvor do celoslovenské soutěže Cineama a ve finále jsme získali ocenění od děkana Filmové a televizní fakulty VŠMU. Součástí tohoto ocenění byla i účast na Letní škole filmového jazyka pořádané právě touto fakultou. Během tohoto kurzu jsem prohloubil své, do té doby mělké znalosti z oblasti videa a uvědomil si, že právě toto by mohl být ten směr, který mě bude v budoucnu živit.[Image] O rozhodnutí stát se lektorem v Learn2codeTéměř denně na mě směřuje řada otázek o videu, technice či natáčení. Po nějaké době odpovědi na tyto otázky jsem si uvědomil, že kromě samotné tvorby videa je vlastně i tato oblast, která mě baví. Chtěl jsem tedy vyzkoušet, jak bych zvládl zkombinovat videotvorbu s vyučováním. Sen o takovém něčem byl v mé hlavě už déle a když se ke mně dostala nabídka od Learn2Code, neváhal jsem. Zároveň je to pro mě výzva zkusit něco úplně nového, co vždy zkouším rád. O tom, co se v jeho kurzu naučíšNaučíš se mnoho z otázek, které se ke mně dostávají a jsou směrovány k výběru techniky pro natáčení. Na tuto otázku však neexistuje univerzální odpověď. Pokud se člověk bez zkušeností s videem či fotografií rozhodne koupit své první záznamové zařízení, velmi rychle se ztratí v řadě parametrů a různých druhů zařízení. Proto jsem se rozhodl udělat kurz v širším kontextu, než jen přímé odpovědi „tohle si kup“. Mým cílem je, aby absolvent kurzu věděl, co je to video, jak se zaznamenává pohyb, jaké technické parametry jsou u kamer důležité a na co všechno si dát pozor při koupi. Absolvent si tedy nebude jen schopen vybrat sám zařízení, které mu maximálně splní jeho požadavky, ale bude disponovat i potřebnými teoretickými znalostmi, na kterých může stavět při samotné práci se zařízením. [Image] O potřebě sledovat trendy a inovaceV současnosti prožíváme zlatou éru videa. Vše od techniky, přes tvůrce, až po distribuční kanály prudce pokračuje a to, co bylo trendem před rokem, je dnes už naprosto out. Proto je důležité neustále na sobě pracovat a zlepšovat se. Na druhou stranu je ale stejně důležité nepodléhat naprosto všem trendům a vkládat do videa i svou kreativitu. Spousta tvůrců na toto zapomíná a pak vznikají tisíce videí, které se podobají „jako vejce vejci“. Takže určitě trendy sledovat, ale nezapomínat, že video je hlavně o kreativitě. :) O tom, co ho nejvíc baví na jeho práciPři tvorbě videoklipů je úžasné, jak se dá během 3-4 minut divákovi sdělit velmi silná myšlenka a vzkaz. Toto je to, co mám na své práci rád. A sice, když není video jen pěkným vizuálem, ale nese v sobě myšlenku, která může diváka inspirovat. [Image] O jeho plánech do budoucnaAktuálně je priorita číslo jedna zestátnicovat. Pokud bude pozitivní odezva a zájem od studentů, rád bych připravil i další kurzy pro Learn2Code v oblasti videa. Mám už v hlavě pár nápadů, které by mohli začínající tvůrci ocenit. Samozřejmě chci i nadále pracovat na sebevzdělávání a zlepšování svých schopností a dovedností, protože oblast videa poskytuje prakticky neomezený prostor pro seberozvoj. Krátký odkaz čtenářům na závěrNatáčejte vždy a všude, využívejte každou příležitost ke tvorbě. Právě to je nejlepší cesta, jak se zlepšovat ve videotvorbě. Nezapomínejte však, že důležitá není jen forma, ale hlavně obsah. Přeji vám příjemné studium a spoustu kreativních chvil s vaší kamerou či fotoaparátem :) .