Náš blog

Najznámejšie tech a IT seriály
Ostatné
12.04.2020
Marián Kristeľ

Najznámejšie tech a IT seriály

Pripravili sme pre teba zoznam seriálov z oblasti IT, technológií a vedy. Komediálne, kriminálne aj sci-fi. Ak máš čas a si seriálový maniak, pozri na náš výber. IT CrowdZačíname britskou klasikou so zábavnou dvojkou Royom a Mossom, ktorí pracujú v IT oddelení firmy Reynholm Industries. Ich šéfkou sa stane svojská Jen, ktorá toho o serveroch a informačných technológiách nevie takmer vôbec nič. Jen nemá záujem pracovať s Royom a Mossom v suteréne budovy, kde sa IT oddelenie nachádza. Postupne však k sebe nájdu cestu a vytvoria zohraný tím.  Seriál má 5 sérií a na IMDB má hodnotenie 8,5. Odporúčame 👌 Silicon ValleyKomediálny seriál z produkcie HBO z prostredia mekky technologických firiem si od svojho začiatku získal mnohých fanúšikov. Hlavnými postavami sú programátor Richard, jeho spolubývajúci Big Head, Gilfoyle a Dinesh. Žijú zadarmo v dome milionára Erlicha výmenou za podiel vo všetkých svojich projektoch. Richard vyvinie unikátny algoritmus a musí sa rozhodnúť, či prijme multimiliónové ponuky na odkúpenie alebo založí vlastnú firmu. Seriál ponúka satirický pohľad na život v startupoch v Silicon Valley. Celkovo bolo nakrútených 6 sérií a seriál má na IMDB hodnotenie 8,5. Mr. RobotKto má radšej drámu a thrillery, pre toho odporúčame seriál Mr. Robot. V jednej bezpečnostnej firme pracuje mladý programátor Elliot (Rami Malek), ktorý má na starosti kyberbezpečnosť korporácie E Corp. V noci sa však z neho stáva hacker a chce zničiť tých, ktorých cez deň chráni. Podarí sa mu to s pomocou tajomného Mr. Robota (Christian Slater), ktorý Elliota naverbuje do svojej hackerskej organizácie F-Society? Seriál bol ovenčený viacerými oceneniami, vrátane Zlatého glóbusu za najlepší dramatický seriál alebo Cenou Emmy za najlepší herecký výkon v hlavnej úlohe. Seriál má 4 série a hodnotenie na IMDB má známku 8,5.  WestworldĎalšia úspešná produkcia z dielne HBO. Seriál Westworld patrí medzi najsledovanejšie TV seriály súčasnosti. Inšpiráciou bol rovnomenný film a dej tejto sci-fi drámy je zasadený do futuristického zábavného parku, ktorý obývajú robotické bytosti. Seriál režíruje Jonathan Nolan a jeho manželka Lisa Joy, v hlavných úlohách sa predstavili herecké esá ako Anthony Hopkins, Ed Harris, Ewan Rachel Wood či Jeffrey Wright. Westworld je thriller z pretechnizovanej budúcnosti. Zatiaľ sú vonku 3 série a hodnotenie z IMDB je 8,7. The Big Bang TheoryPopulárny americký sitcom zo sveta mladých vedátorov, fyzikov Leonarda a Sheldona, ktorí spolu žijú v jednom byte. Leonard a Sheldon sú 'geekovia' žijúci vo svojom vlastnom svete a reálny život im veľa nehovorí. Všetko sa zmení v okamihu, keď sa do susedného bytu nasťahuje blondínka Penny. Ďalej sú hlavnými postavami seriálu letecký inžinier Howard žijúci so svojou matkou a astrofyzik Raj, ktorý má problém rozprávať sa so ženami.  12 lepších aj menej vydarených sérií hodnotia na IMDB známkou 8,1. Halt and Catch FireTo najlepšie na koniec? Vysoko hodnotený seriál o histórii IT s názvom Halt and Catch Fire (slovenský preklad PC Rebeli) produkovala televízia AMC. Tvorcovia sa snažili o realistické vykreslenie technológií, IT, programovania. Seriál ťa prenesie do 80-rokov minulého storočia do obdobia, kedy vznikali prvé prenosné počítače. Prvá séria bola o vývoji klonu IBM PC, v druhej je to vytváranie online multiplayerovej hry a fóra pre online komunitu. Tretia séria bola o rizikovom kapitáli v Silicon Valley. Štvrtá séria je o "začiatkoch" internetu a webových prehliadačoch. Pre IT geekov je tento seriál povinná jazda a je mimoriadne obľúbený predovšetkým v technologickej komunite. Boli nakrútené 4 séria a hodnotenie na IMDB veľmi solídnych 8,4. Steve Wozniak, jeden zo zakladateľov Apple, ohodnotil tento seriál známkou 10/10 😮 Máš nejaké ďalšie tipy na seriály z IT, tech či geek prostredia? Určite sa o ne podeľ v komentároch 👇 
Konštruktory v Jave
Vzdelávanie
03.04.2020
Skillmea

Konštruktory v Jave

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

Success story: z materskej k front-endu

Petra Poliaková je ďalšou úspešnou absolventkou našich kurzov, vďaka ktorým si našla prácu v IT. Aktuálne pracuje ako front-end developerka pre jednu martinskú firmu. K tvorbe webov sa dostala počas materskej, keď sa začala pomaličky venovať HTML a CSS.  Ako sa jej podarilo nájsť si prácu v IT a čo všetko pre to urobila, to si prečítaj v tomto blogovom príspevku 👇 Začnime tvojou aktuálnou prácou. Čo presne robíš, aká je tvoja pozícia?Pracujem ako front-end developer pre jednu Martinskú firmu, ktorá pôsobí na trhu už niekoľko rokov. Tvoria e-shopy, webové aplikácie a som v podstate freelancer. Predtým ako som začala spolupracovať s touto firmou som vytvárala iba jednoduché prezentačné weby. Teraz sa zameriavam viac na eshopy, vzdelávam sa v oblasti online marketingu (vytváranie PPC reklám), nasadzujem šablóny do CMS systému wordpress a spracovávam frontendovú časť v ODOO systéme. Ako si k tejto pozícii dostala?Na internete som hľadala firmy, ktoré robia weby, sú v mojom okolí a hľadajú kolegov, najlepšie aj s možnosťou zaučenia. Buď som im posielala žiadosti alebo poslala email. Firma ma kontaktovala, postupne mi dávali na skúšku robiť projekty a začali sme spolupracovať.  Máš nejaký vzor, ktorý ťa inšpiruje? Osobu, ktorá je pre teba motivátorom?V oblasti tvorby webu ma inšpiruje Yablko, nielen svojimi rozsiahlymi vedomosťami, ale aj svojim humorom. A taktiež je to môj partner, ktorý mi trpezlivo vysvetľuje ako pochopiť programátorský svet a myslenie. Kde berieš inšpiráciu pre svoju prácu? Máš nejaké tipy, ktoré zaručene fungujú?Inšpiráciu hľadám na internete, od skúsenejších, ale aj od samotných klientov, s ktorými som často v kontakte pri tvorbe stránky. Zaručené tipy žiaľ nemám. Stále sa učím od skúsenejších.[Image] Jeden z webov, na ktorých Petra pracovala V tejto oblasti je potrebné sledovať aktuálne trendy, inovácie. Ako si na tom ty? Stíhaš to všetko popri práci?Keď mám povedať pravdu, veľmi nie. Som na úrovni juniora, takže je toho ešte veľa, čo sa mám učiť, ale niektoré trendy a inovácie prichádzajú rovno s požiadavkou webu. Vtedy ich stíhať musím 😊 Čím všetkým si si musela prejsť, pokiaľ si sa vypracoval na túto pozíciu?Nemám žiadne IT vzdelanie, takže som začínala úplne od nuly. Počas materskej som sa začala zaujímať o to, ako sa dajú robiť webstránky, čo to všetko obnáša a vôbec či by som niečo také zvládla. Začala som študovať HTML a CSS. Všetko som sa učila cez internet. Lepšiu a rýchlejšiu cestu som našla, keď som objavila online kurzy od Learn2Code. Začala som kurzom Webrebel 1. Čo som sa naučila, to som otestovala na známom, ktorý potreboval webstránku pre svoju firmu. Výsledok sa dostavil. Počet zákazníkov sa vďaka webstránke začal zvyšovať. Svoje vedomosti som si rozširovala o ďalšie kurzy z Learn2Code. Dostala som možnosť pracovať v jednej firme, ale musela som sa rýchlo preorientovať na Javu. Výhodou Learn2Code bolo to, že aj takýto kurz tam bol. Vo firme som nejakú dobu programovala. Musela som však odísť. Mám dve malé deti a prišlo obdobie, kedy sa striedala jedna choroba za druhou. Popri starostlivosti o deti som sa vrátila k vytváraniu webstránok a začala som si budovať svoj web – svoje portfólio. Znova som využila rôznorodosť kurzov a zamerala som sa na marketingové kurzy, ktoré mi pomohli, ako sa prezentovať. Urobila som si firemný profil na Facebooku a profil na LinkedIn. Takto pripravená som hľadala vhodné firmy. Čo ťa najviac baví na tvojej práci? Máš nejaký obľúbený task, ktorý robíš najradšej?Na tejto práci ma baví, keď dosiahnem úspech a prekonám prekážky, ktoré projekt prináša. Veľmi rada pracujem s frameworkom bootstrap.[Image] Ďalšia ukážka práce  Dnes je obrovský dopyt po programátoroch. Čo by si poradila všetkým, ktorí nemajú žiadne skúsenosti, ale chceli by nejako začať?Nepremýšľať nad tým, či na to mám alebo nie. Najlepšie začať a skúšať. Neporovnávať sa na začiatku s profesionálmi, z toho je celkom slušná depka 😀. Pripraviť sa na to, že výsledky nebudú hneď. Všetko potrebuje svoj čas. No a samozrejme využiť možnosť vzdelávať sa pomocou kurzov a skúšať, kódovať, kaziť a hľadať riešenia. Dobré je vyskúšať si aj reálny projekt. Čo je podľa teba najväčšou výhodou práce v IT odvetví?Výhodou je sloboda, veľké množstvo možností práce a pre mňa jedna osobná a obrovská výhoda, ktorá mi pomôže splniť si rodičovský sen - tráviť čas s deťmi, keď budú rásť a nie sedieť niekde v kacelárií. Mal si niekedy pocit, že to nezvládneš? Bolo obdobie, kedy si chcel skončiť a robiť niečo úplne iné?Niekoľkokrát. Ale zistila som, že už ani neviem, čo by to iné malo byť. Potom si uvedomím prečo to robím, nadýchnem sa a prekonávam sa ďalej. Aké sú tvoje plány do budúcnosti?Cestu mi skrížil WordPress, ktorý som moc nechcela ovládať, takže poriadne doštudovať framework Vue a pomaly prejsť na backend.  Máš nejakú radu, ktorú by si chcel zdieľať so študentami, ktorí len začínajú s tvorbou web stránok a programovaním alebo so svojím vzdelávaním v IT oblasti?Nezostaňte pri jednom kurze. Nenechajte sa odradiť od prvotných neúspechov. A keď budete trpezlivý a posúvať sa neustále dopredu, tak môžete získať výhodu oproti ostatným. Pomohli ti naše kurzy a našiel si si vďaka nim prácu. Napíš nám a radi s tebou spravíme podobný rozhovor. Pre všetkých, ktorí váhajú s tým, či začať a ako začať, na našom YouTube sú ďalšie úspešné príbehy našich absolventov.
Kolekcie v Jave
Vzdelávanie
06.03.2020
Skillmea

Kolekcie v Jave

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

Čo má spoločné Picasso a WordCamp Košice 2020?

WordCamp je nezisková konferencia, ktorá sa organizuje v 75-tich mestách po celom svete. Je určená najmä fanúšikom redakčného systému WordPress, zároveň však má značný presah do marketingu, podnikania i osobného života. Rozvíja vedomosti a zručnosti, ktoré sú v dnešnej IT dobe veľmi žiadané.  Pablo Picasso bol významný umelec 20. storočia, ktorý mal mnoho talentov. Možno o nich zo začiatku ani nevedel, no postupným tvorením a rozvíjaním sa z neho stal maestro. Tak ako Picasso, aj ty máš v sebe rôzne talenty, no musíš ich objaviť a rozvíjať.[Image]   Vďaka konferencii WordCamp Košice 2020 máš možnosť získať vedomosti a zručnosti o používaní a škálovaní systému WordPress, spoznať príbehy ľudí z WordPress komunity, môžeš sa stať súčasťou tejto komunity - objav a rozviň svoj #wordpresstalent.  „Tretí ročník WordCampu v Košiciach so sebou opäť prináša nové zmeny, ktorými sa snažíme zvyšovať úroveň konferencie. Jednou z tých väčších sú nové priestory – Kasárne/Kulturpark. Tie sa nachádzajú v centre mesta, iba pár minút chôdze od Hlavnej ulice.“, uviedli organizátori konferencie.  Už 16.mája ťa v priestoroch Kasární/Kulturpark čakajú zaujímavé prednášky i workshopy z rôznych oblastí tvorby, používania či propagácie webu. Tematické okruhy prednášok a workshopov sa budú striedať, takže ak si napr. hardcore dev, budeš mať program vystaraný na celý deň.  Learn2Code má rado WordPress a preto sme hrdým partnerom tejto konferencie. Ahoj a vidíme sa 16.5.2020 v Košiciach na WordCampe.
Rozhovor s lektorom kurzu o 3D modelovaní
Rozhovory
10.02.2020
Skillmea

Rozhovor s lektorom kurzu o 3D modelovaní

Nedávno sme na našej stránke spustili prvý online kurz zameraný na 3D modelovanie s použitím Autodesk Fusion 360. Ako freelancer, tvorca a spolu-tvorca sa lektor kurzu Agi Gonda od roku 2015 venuje ručnej výrobe drevených dekoratívnych predmetov. Keďže ho vždy zaujímali nové technológie a ich možnosti využitia vo výrobe, začal sa v roku 2018 intenzívne venovať oblasti konštrukčného modelovania s prepojením na 3D tlač a iné možnosti výstupov. Od júna 2018 som členom komunity e-NABLE, a zakladateľom jej slovenskej pobočky, ktorej dobrovoľníci z celého sveta využívajú svoje 3D tlačiarne na vytváranie „open source“ tlačených dlaní a rúk pre deti a dospelých, ktorí náhradu týchto častí rúk potrebujú. Prečítaj si celý rozhovor s lektorom Agim 👇 Na začiatok najskôr začnime tvojou prácou. Čo presne robíš? Na túto otázku nedokážem odpovedať presne :-) Keď zhrniem svoj okruh záujmov a pomenujem to, čo ešte stále voláme “práca”, posledných niekoľko rokov sa ako tvorca a spolutvorca venujem ručnej výrobe drevených dekoratívnych predmetov, čo je ešte aj dnes veľkou časťou môjho fungovania. Sám v sebe však cítim potrebu posunúť sa aj za pomoci súčasných technológií od čisto ručnej výroby k výrobe, ktorá je do istej miery uľahčená aj nástrojmi riadenými počítačom - či už je to CNC fréza alebo 3D tlačiareň, ktorú pri práci s drevom využívam hlavne na výrobu rôznych šablón a prípravkov. Keďže sa snažím všetky moje činnosti čo najefektívnejšie prepájať, venujem sa aj zákazkovému 3D modelovaniu, či poskytovaniu konzultácií, ktoré súvisia s učením sa základov konštrukčného 3D modelovania. Tak vzniklo aj prepojenie s Learn2Code a video kurz o získaní zručnosti a prehľadu pri používaní programu Autodesk Fusion 360.[Image] Na akých projektoch si pracoval? Aké sú tvoje pracovné aktivity? V poslednom období je pre mňa veľmi významné zapojenie sa do projektu celosvetovej komunity e-NABLE, ktorej dobrovoľní členovia využívajú svoje 3D tlačiarne a pre deti a dospelých pripravujú náhrady prstov, dlaní či celých rúk pre tých, ktorí ich potrebujú a majú o ne záujem. Táto komunita funguje už deviaty rok a je do nej po celom svete zapojených viac ako 20000 členov s viac ako 10000 vytvorenými a odovzdanými náhradami. V septembri 2018 sa mi podarilo vytvoriť pobočku tejto komunity aj na Slovensku, pod názvom e-NABLE Slovakia ju môžeš nájsť na internete aj sociálnych sieťach. Naviac energie momentálne venujem do prípravy a rozbehnutia môjho nového projektu - GeoDome.sk, ktorý je opäť prepojený s drevom. Ide o prípravu a výrobu drevených konštrukcií kupol - geodómov, ktoré je možné veľkostne ľubovoľne prispôsobiť a použiť na množstvo pripravovaných realizácií - vyhotovenie v prevedení fóliovníka, výletu - výbehu pre zvieratá, prekrytia bazéna a s ďalšími úpravami ich je možné využiť aj ako rekreačný domček určený pre oddych a relax. A znovu ako doteraz je opäť všetko prepojené a na prípravu týchto konštrukcií vo veľkej miere využívam 3D modelovanie a tlačenie šablón na 3D tlačiarni.[Image] A ako si sa k 3D modelovaniu vôbec dostal?Prvé pokusy naučiť sa modelovať som mal ešte niekedy na strednej škole. Keď som sa však do učenia pustil, veľmi rýchlo som s ním skončil s výsledkom a prehlásením, že také niečo nezvládam :-) Potom však prišiel môj záujem o 3D tlač a s dostupnosťou veľmi jednoduchých modelovacích programov, ktoré sú vo vynikajúcej funkčnosti prístupné vo free verziách aj cez webový prehliadač, som dokázal a chcel vstúpiť aj do tohto nového priestoru. Boli to hodiny a hodiny pozerania zahraničných inštruktážnych videí, z ktorých som si vybral tie spôsoby a postupy, ktoré sú pre mňa najjednoduchšie, najrýchlejšie a najefektívnejšie. Tieto informácie sa mi hneď podarilo vyskúšať v praxi pri spolupráci na modelovaní a tlačení zmenšených modelov športových trenažérov. Prečo si sa rozhodol spolupracovať s Learn2Code?Myšlienka spolupráce sa mi objavila ako ponuka spolupracovať s Learn2Code ako lektor. Bola to pre mňa jednoznačne výzva ísť do novej skúsenosti a zužitkovať získané informácie a znalosti.  Čo všetko sa človek naučí v tvojom online kurze Autodesk Fusion 360?Kurz a jeho obsah som skladal s myšlienkou, aby sa za tých niekoľko desiatok minút stretnúť s 3D modelovaním prakticky ktokoľvek - aj keď s ním doteraz nemal žiadnu skúsenosť. Záujemca sa dokáže zoznámiť so základnými možnosťami a funkciami tohto programu a s malou dávkou predstavivosti si po jeho ukončení vymodelovať požadovaný objekt a od úplných základov zistiť ako funguje vytvorenie priestorového objektu pridaním tretej dimenzie. Program Fusion 360 som zvolil pre jeho dostupnosť a vysokú variabilitu v neskoršom - nazvem ho pokročilejšom modelovaní.  V kurze spoločne prejdeme od stiahnutia a inštalácie programu, cez jeho základné funkcie a nastavenia. Možno nebude na začiatku dávať zmysel, že začneme s kreslením a priraďovaním vzťahov objektov v 2D priestore a až neskôr prejdeme na pridanie ich tretieho rozmeru. Je to však v tomto prípade najjednoduchší spôsob a postup a po narysovaní kruhu a štvorca sa prakticky jednou dodatočnou funkciou dostaneme z kreslenia pločných objektov k tvoreniu tých priestorových. Je v tejto oblasti potrebné sledovať aktuálne trendy a inovácie? Ako si na tom ty?3D modelovanie je oblasť nekonečných možností. Len za obdobie tvorenia kurzu vývojári programu Fusion 360 niekoľkokrát zmenili a zjednodušili pracovné prostredie a pridali mu ďalšie užitočné funkcie. Jednou z nich bolo vylepšenie zisťovania pevnosti a statiky objektov či modelovenie PCB dosiek s celým portfóliom doplnenia elektroniky vo forme pluginu. Niekedy je pre mňa nie veľmi ľahké držať so všetkými novinkami krok a naučiť sa ich používať. Robím to však tak, že nové možnosti programu zaregistrujem a naučím sa ich a začnem používať až vo chvíli, keď ich naozaj potrebujem. Myslím, že pri dnešnom množstve informácií a zmien to takýmto spôsobom robí väčšina z nás :-) Veľmi rád však sledujem inovácie v oblasti 3D tlače a novinky, ktoré pomôžu tento proces výroby zdokonaliť a zrýchliť. Rýchlosť procesu výroby je momentálne jednou z veľkých výziev pre všetkých výrobcov týchto zariadení.  Čo ťa najviac baví na tvojej práci? Na všetkom do čoho sa pustím ma najviac baví obrovská dávka kreativity a do veľkej miery aj voľnosti pri tvorení. Bavia ma nové nápady, stretnutia s rovnako naladenými ľuďmi, no mám rád aj dobre a efektívne nastavený výrobný stereotyp, ktorým si energiu neuberám - naopak ma takáto činnosť dokáže veľmi povzbudiť. Absolútne všetko vidím v nastavení jednoduchosti procesov a nezaťažovaním sa záležitosťami, ktoré nie sú práve v tejto chvíli podstatné. Aké máš plány do budúcnosti?Aj keď mám predstavy o ďalšom smerovaní, príliš túto otázku neriešim. Oveľa viac sa zameriavam na to, čo môžem urobiť lepšie a inak ako doteraz v túto konkrétnu chvíľu. Ako môžem zmeniť zaužívaný postoj, ktorým som sa už niekoľkokrát neviedol k žiadnemu citeľnému posunu a začať robiť veci novým - otvorenejším spôsobom a viac dôverovať prichádzajúcim okolnostiam. Hej, to je môj plán do budúcnosti :-) Krátky odkaz všetkým čitateľom na záverMôj odkaz zhrniem do pár slov... Za akýchkoľvek okolností - aj tých ľahkých a aj nie až takých ľahkých, neprestávaj tvoriť. Čokoľvek! Rukami, nohami, celým telom, nástrojom, prístrojom, obrazom v mysli či najhlbším pocitom.Tak, aby to úmyselne neublížilo nikomu druhému, no aby ťa to posunulo v každú novú chvíľu o krok vpred. A hlavne vlož do každého tvorenia čo najviac svojej energie a srdca, aby si si s každým pozretím do zrkadla či každým večerným zaspávaním mohol a mohla povedať - dnes som urobil a urobila najviac, čo bolo v mojich silách. Aj pre všetkých naokolo, no v prvom rade pre seba.   Ak máš na Agiho nejaké otázky, neváhaj ich napísať do komentárov 👇 Kurz o 3D modelovaní v Autodesk Fusion 360 nájdeš na našej stránke. 
Známe weby, ktoré používajú WordPress
Ostatné
19.01.2020
Martina Baumann

Známe weby, ktoré používajú WordPress

WordPress je najznámejší a najrozšírenejší redakčný systém CMS (Content Management System) na tvorbu webstránok, ktorý stále využíva väčšina užívateľov.  Vznikol v roku 2003 a odvtedy si už medzi sebou našiel milióny používateľov a fanúšikov. Jeho veľkou výhodou je dostupnosť, zrozumiteľnosť a možnosť inštalovať veľa pluginov a widgetov, vďaka ktorým napríklad zmeriate návštevnosť, doplníte si svoj web rôznymi aplikáciami alebo si ho prepojíte so sociálnymi sieťami. Tento článok pôvodne vznikol v lete 2017, upravili sme ho o a doplnili o ďalšie weby. Čítaj ďalej. A na čo WordPress slúži?Taký WordPress sa používa na klasické webstránky, klasický e-shop a samozrejme obľúbené blogy. Jeho veľkou výhodou je, že nepotrebujete licencie. Tento publikačný softvér je totiž vyvíjaný pod licenciou GNU GPL (licencia pre slobodný softvér). Používajú ho aj veľké firmy, organizácie, redakcie na Slovensku a tiež v zahraničí. Ak aj ty rozmýšľaš nad tým, že by si si chcel urobiť webku a nie si zrovna dobrý v programovaní, môže ti pomôcť tento blog na malú inšpiráciu. Existujú rôzne možnosti, ako si urobiť webku jednoducho a rýchlo vo WordPresse a to od systémov, ktoré sú zdarma až po tie platené. V tomto prípade však určite platí, pokiaľ chcete rozbehnúť svoj biznis vo veľkom štýle, investujte do platenej verzie - pôsobí to totiž oveľa profesionálnejšie a potencionálni klienti určite ocenia aj to, že máte vlastný názov web stránky. WordPress.orgPonúka vlastný názov webky a taktiež emailovú adresu -  okrem toho, že je to (ako som už spomínala vyššie) profesionálne, tak je to ľahšie zapamätateľné. Ďalej môžete používať pluginy a tiež veľa možností, ako môže váš web vyzerať. V neposlednom rade ponúka kvalitné SEO. Aby ste však nepovedali, tu je kratučký prehľad šablón, ktoré sú k použitiu zdarma: Sydney, Interface, Flash, Zerif Lite, Everal, Astrid, Hestia, ionMag, Writee a mnohé ďalšie (naozaj je ich na internete celá kopa, stačí len trošku pogúgliť). WordPress.org je vhodná pre ľudí, ktorí chcú mať serióznu profesionálne vyzerajúcu webstránku alebo eshop. Ak s WordPressom len začínate, určite si pozrite náš online kurz pre začiatočníkov o WordPresse a o tom, ako rozbehať a spustiť vlastnú webstránku. Možno ste sa niekedy stretli aj s platformou WordPress.com. WP.com je vhodná skôr pre netechnických ľudí, ktorí nemajú kapacitu na rôzne nastavovania vo "klasickom" WordPresse.  Známe WordPress webyPoďme sa teraz pozrieť na známe webstránky, ktoré sú založené na WordPresse. Ktoré sú to? Nemusíte so mnou súhlasiť, môžete mi pod článok napísať aj svoje vlastné tipy. Objektívny názor v tomto prípade jednoznačne neexistuje 😊 A hádať sa s vami nebudem... Denník N Začnime najskôr od populárneho slovenského denníka, ktoré sa venuje prevažne spravodajstvu a investigatívnej žurnalistike. Má svoju internetovú stránku, ktorá funguje tiež na WordPresse. Má veľkú čitateľskú základňu, denne produkuje desiatky článkov a rôznych príspevkov. [Image] Startitup Kto by nepoznal na Slovensku tento portál? Populárny web, ktorý je zameraný na úspešné startupy a prináša veľmi veľa pútavých príbehov nejedného úspešného Slováka. Všetky tieto príspevky na obľúbenej webke Slovákov čítate práve vďaka WordPressu.[Image] Dušan Plichta Blog Veľmi populárny je aj tento blog, ktorý okrem iného získal tento rok špeciálnu cenu Najlepší WordPress blog 2017. Súčasťou webky je aj e-shop.[Image] ADMA Asociácia digitálnych marketingových agentúr (ADMA) je známa ako združenie profesionálnych agentúr, ktoré pôsobia v oblasti digitálneho marketingu. A jej hlavnou úlohou je zvyšovanie úrovne digitálneho marketingu na Slovensku.[Image] Visibility Agentúra sa na začiatku zamerala na SEO, neskôr sa však začala venovať online marketingu vo veľkom a dnes má významných klientov. Webka je spojených kvalitného obsahu a pekného dizajnu.[Image] PizzaSEO Ďalšia špičková agentúra, ktorá používa WordPress a je dôkazom, že to robí dobre. Aj významné digitálne agentúry používajú WordPress.[Image] Bloger roka A tak určite musím spomenúť aj túto webku - pýta si to.[Image] V zahraničí používajú WordPress naozaj veľké mená, spomeniem napríklad tieto: FORBES Snáď najdôveryhodnejší magazín, poznáme ho aj vďaka populárnym rebríčkom najbohatších ľudí na planéte, ktorý pravidelne uverejňuje.[Image] TECH CRUNCH Spravodajský web o starupoch, technológiách, ventur kapitáli a Silicon Valley.[Image] REUTERS Spravodajská a tlačová agentúra, ktorá používa WordPress.[Image] THE WALL STREET JOURNAL Známy americký denník sa venuje najmä financiám a podnikaniu.[Image] ebay ebay nemusím ani predstavovať? Určite si si tu už niečo kúpil aj ty. [Image] A mne sa páčia ešte aj: Star Wars Blog Oficiálny blog o Star Wars - nájdeš tu všetky aktuálne info, videá, recenzie, komunitnú sekciu a mnoho ďalšieho.[Image] Baťa Prečo by sme nespomenuli aj niečo pre dámy - obuvnícka firma, ktorú založili súrodenci Anna, Antonín a Tomáš Baťoví v Zlíne v septembri 1894.  [Image] NFL A aby neboli ukrátení aj muži - tak spomínam aj túto webku. National Football League je najväčšia a najprestížnejšia liga amerického futbalu na svete. [Image] The New Yorker Týždenník, ktorý prináša komentáre a správy o politike, ekonomike, medzinárodných záležitostiach, kultúre,umení a vede. A samozrejme používa WordPress.[Image] Vypichli sme len niekľko webov, ktoré používajú WordPress, je ich určite oveľa viac. Keďže na WordPresse dnes beží približne 20% všetkých webov na svete. Ak sme na nejaký významný web zabudli, spomeň ho v komentári. Páčil sa ti tento článok? Venuj mu 👍  Ak máš nejaké rady a tipy aj ty a rád by si sa s nimi podelil s ostatnými, napíš nám dole do komentára 👇  
Kotlin vs. Java - menej kódu
Vzdelávanie
06.01.2020
Skillmea

Kotlin vs. Java - menej kódu

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

Testovanie Java aplikácií s JUnit

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

Lektor Michal Žák: "Nerob škaredé veci, potom sa len tak poflakujú po svete."

Vyspovedali sme lektora Michala Žáka, ktorý pre teba na Learn2Code pripravil kurz Adobe Illustrator Advanced  a finišuje ďalší online kurz zameraný na komunikáciu s klientom - Client management. Michal sa venuje predovšetkým grafike, rozbehnutých má však viacero projektov. Jeho kariéra začala v 15-tich, kedy objavil Photoshop, k srdcu mu však prirástol Illustrator. Jeho motto? "Nerob škaredé veci, ony sa potom len tak poflakujú po svete." Prečo by mal byť práve Illustrator tým vyvoleným softvérom pre grafika a čo pripravuje v ďalšom kurze sa dozvieš v rozhovore.[Image] Na akých projektoch momentálne pracuješ?Momentálne mi väčšinu času zaberá práca pre AR Visual. Je to malá snaživá firma. Nastúpil som na marketingovú pozíciu, momentálne robím na product developmente - programovanie, práca s klientom, demo videá. A nemenil by som. Grafike sa síce venujem pomenej, ale vždy sa viem vyblázniť na externých projektoch - ako napríklad tvorba kurzu pre Learn2Code. Nie je to také ľahké, ako keď si kreslím podvedome.  Primárne sa venujem hlavne online grafike, UI designu a printu, neprimárne fotím a kódim weby. Nepohrdnem však ničím, kým to nie sú zvrhlé požiadavky typu „daj mi do loga prekrížené pištole“ alebo „dajme tam slogan 2x, aby pochopili o čo ide“. True story.  A významný projekt? Napríklad som nedávno nakódil .js appku, vďaka ktorej nám klient odklepol megadrahý projekt na niekoľko rokov. A ešte som raz robil takú tabuľu pre kebab, čo visela jedno leto na Nitrianskom kúpalisku.[Image] Na pozícii v Bistro.sk Michal pochopil, že ilustrácie mu moc nejdú Pri takom množstve aktivít, čo ti v živote pomáha udržiavať balans?Mám tú najperfektnejšiu a najtolerantnejšiu ženu, ktorá pozná rozdiel medzi helveticou a arialom a pozná ma do bodky. Keď je človek freelancer, tak je dôležité, aby mu partner bol oporou.  Častokrát sedím nad projektom do štvrtej rána alebo mi vyjde business trip na dcérine narodky. Proste shit happens. Mať však pri sebe niekoho, kto to vie pochopiť, je na nezaplatenie. Takže balans medzi 24/7 prácou a rodinou. To je významný projekt. Okrem toho máme doma čoskoro už 10-ročnú slečnu, ktorej sa popri práci nestíham venovať tak, ako by som chcel. Na Vianoce mimochodom dostane grafický tablet. Tak uvidíme. Ja som koniec koncov začínal s ilustráciami na starom Geniuse na intráku v Nitre. Prečo si sa rozhodol stať sa lektorom v Learn2Code?Toto by ani nemala byť otázka 😀 Boli ste sa pozrieť von? Veď to je strašné - neskernované nápisy, písma typu papyrus a calibri, farebne ani nehovorím.  A weby? 😀 Mordor. Ľudia sa musia učiť robiť veci dobre. Musia sa naučiť, že typografia je dôležitá a rozdiely medzi RGB a CMYK nie sú len v kalibrácii monitora. Nie každý, kto si stiahne Photoshop a naučí sa v ňom behať myškou, je aj grafik. Čo sa ľudia naučia v tvojom kurze Adobe Illustrator Advanced?V prvom rade sa zoznámia s Adobe Illustrator. Zistia, že to nie je program len pre ilustrátorov alebo že sa tam robia ikony. Podľa mňa v 95% prípadov Illustrator spokojne nahradí InDesign a Photoshop. Okrem toho hovorím o tom, ako si urobiť poriadok vo väčších projektoch, čo je to Grid a prečo používať pravítka, niečo o typografii, klávesové skratky, tabuľky, štetce, scripty a nejaké špeciálne efekty :D  Napokon sa budeme venovať UI-čku a tomu, ako nenahnevať človeka, ktorý to bude po nás kódovať :)  Na čo sa zameriavaš v pripravovanom kurze?Kurz bude zameraný na komunikáciu s klientom a s ľuďmi všeobecne. Ako presedlať z full time práce na freelancera, ako si naceniť svoje služby (najmä tie kreatívne), kde a ako získať nových klientov, zostaviť si portfólio a podobne. Proste ako to nepokašlať s klientom, je to jedno, či ste od grafiky, od webu alebo whataver-ingu. Pokiaľ chce byť kreatívec v dnešnej dobe úspešný, minimálne 70% jeho energie a času musí byť venovaných práci s klientom. Prejdeme si teda aj konfrontačné situácie, ktoré môžu pri komunikácii nastať.  Sám som si tým všetkým prešiel a prial by som si, aby taký návod niekto vypustil do sveta už skôr. A čo ďalšie plány do budúcnosti?Chcel by som sa pustiť do tutoriálu zameraného na kódenie pre grafikov. Ako si teda zostrojiť vlastný web bez toho, aby sme ťahali Wordpress, WiX a podobné bolehlavy.  Navyše ten, kto pracuje v oblasti UI/UX by mal vedieť, ako web development vlastne funguje. Dokončiť by som chcel aj e-book o Typografii a jej používaní na webe, v printe a podobne. Ale nič zložité. Jednoduché pravidlá, vysvetlenie hierarchie, kontrastu, párovania a podobne. Proste čo nerobiť, prečo to nerobiť a ak robiť, ako to robiť správne. Čo odkazuješ ľuďom, ktorí sa chcú uplatniť v grafickom designe?V odbore grafiky? Choďte do toho! Špecializácia nevedie nikam. Na Slovensku určite nie a obzvlášť nie v korporátnych štruktúrach. Teda s výnimkou tých, ktorým stačí práca za 700-800 v čistom pre nejakú pseudo-digitálku z hornej dolnej a napĺňa ich logotvorba pre lokálne vegan bistrá so životnosťou 4 mesiace. Pokiaľ chcete ísť do toho, učte sa a zbierajte toľko informácií, koľko sa len dá. Napríklad, ako funguje veľkoformátový print, špecifiká mobilných typefaceov, ako zanimovať logo-reveal v After Effects, čo je to inverse-square-law pri fotografii, akú uzávierku zvoliť pri 30fps, aké sú formáty pre google bannery, ako napísať blog, na ktorí ľudia reagujú, ako nakódovať online 3D product viewer atď atď...  A to všetko minimálne preto, aby ste mali prehľad. Nehovorím že máte byť profík v každej disciplíne. A určite všetky tie vedomosti a skúsenosti budete vedieť raz dobre využiť. :) Páčil sa ti rozhovor? Venuj mu 👍  Ak máš na Michala nejakú otázku, napíš ju dole do komentára 👇  
Lambda výrazy v Jave - časť IV.
Tipy a triky
30.10.2019
Skillmea

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

Funkcionálne rozhraniaAk chcem používať lambda výraz, tak potrebujem na to rozhranie s jednou abstraktnou metódou. Daná metóda musí odpovedať popisu nášho lambda výrazu.  Ak sa nad tým zamyslíš, tak v skutočnosti sa dané rozhranie môže volať hocijako. Na názve nezáleží. A aj metóda v tom rozhraní môže mať hocijaký názov, pre logiku lambda výrazu to nemá žiaden zmysel. Jediné, čo je dôležité je, aby metóda sedela s lamba výrazom v tom, čo vracia a to, čo je na vstupe metódy ako parameter.  Bolo by úplne super, keby sme nemuseli vždy pri písaní lambda výrazu riešiť vytvorenie nového rozhrania, ktoré nám bude slúžiť ako typ daného lambda výrazu. Čo povieš?  Povedali sme, si, že java nevytvorila nový typ pre lambdy. Pri písaní, sme si mohli všimnúť, že metódy sú často podobné. Vraciam nejaký typ alebo vraciam void a mám tam názov metódy tam sú alebo nie sú parametre. Sú tu nejaké paterny, nejaké vzorce, ktoré sa opakujú častejšie.  Java nám ponúka niekoľko takých rozhraní, ktoré môžeme kľudne použiť. Tieto rozhrania sú v balíčku java.util.function. V tomto balíku je mnoho pred pripravených rozhraní, ktoré môžeš používať. Tieto rozhrania používajú generiká, tak si tam vieš dosadiť objekty aké potrebuješ.  Napríklad Predicate je presne stvorený na to, ak potrebujeme zobrať na vstupe objekt a vrátiť boolean ako návratovú hodnotu. Takto môžeme použiť toto rozhranie namiesto toho rozhrania, čo sme si sami napísali, keď sme riešili predchádzajúcu úlohu.  Ako ošetriť výnimky Spravme si príklad, ktorý bude obsahovať zoznam osôb, ktoré budem spracovávať – vypíšeme ich mená a dáme ich na veľké písmená. public class ExceptionHandling { public static void main(String[] args) { ArrayList<Osoba> osoby = new ArrayList<>(); osoby.add(new Osoba("jano", "beno", 3)); osoby.add(new Osoba("peter", "beno", 0)); osoby.add(new Osoba("jaro", "beno", 30)); osoby.add(new Osoba("brano", "beno", 28)); processOsoby(osoby); } private static void processOsoby(ArrayList<Osoba> osoby) { for (Osoba osoba : osoby){ System.out.println(osoba.getMeno().toUpperCase()); } } } Prepíšeme si to na lambda výraz. Náš kód, ktorý chceme metóde predať ako argument je System.out.println(osoba.getMeno().toUpperCase()). Pracujem teda len s objektom osoba. Výsledok napíšem na konzolu. Tým pádom mám jeden argument a tento kus kódu nevracia žiadnu hodnotu. Budeme na to potrebovať funkcionálne rozhranie, ktoré má metódu s jedným parametrom a nevracia nič. Takým je Consumer s jeho metódou accept. public class ExceptionHandling { public static void main(String[] args) { ArrayList<Osoba> osoby = new ArrayList<>(); osoby.add(new Osoba("jano", "beno", 3)); osoby.add(new Osoba("peter", "beno", 0)); osoby.add(new Osoba("jaro", "beno", 30)); osoby.add(new Osoba("brano", "beno", 28)); processOsoby(osoby, osoba -> System.out.println(osoba.getMeno().toUpperCase())); } private static void processOsoby(ArrayList<Osoba> osoby, Consumer<Osoba> consumer) { for (Osoba osoba : osoby){ consumer.accept(osoba); } } } Teraz si náš zoznam osôb zmením tak, že namiesto mien dám do zoznamu null. Pri spracúvaní lamba výrazu nám program spadne na NullPointerException. osoby.add(new Osoba("jano", "beno", 3)); osoby.add(new Osoba(null, "beno", 0)); osoby.add(new Osoba("jaro", "beno", 30)); osoby.add(new Osoba("brano", "beno", 28));Musíme si ošetriť túto výnimku. Ako na to? Jedným zo spôsobov je obaliť volanie consumer.accept do try catch bloku. private static void processOsoby(ArrayList<Osoba> osoby, Consumer<Osoba> consumer) { for (Osoba osoba : osoby){ try { consumer.accept(osoba); }catch (NullPointerException e){ //... } } }Ale to je škaredé riešenie. To čo príde do consumer môže byť všeličo možné a nemusí to dať NullPointerException, možno to bude iná výnimka. Náš kód chceme mať jednoduchší. Druhou možnosťou je, aby bola výnimka spracovaná priamo v lamba výraze. public class ExceptionHandling { public static void main(String[] args) { ArrayList<Osoba> osoby = new ArrayList<>(); osoby.add(new Osoba("jano", "beno", 3)); osoby.add(new Osoba(null, "beno", 0)); osoby.add(new Osoba("jaro", "beno", 30)); osoby.add(new Osoba("brano", "beno", 28)); processOsoby(osoby, osoba -> { try { System.out.println(osoba.getMeno().toUpperCase()); }catch (NullPointerException e){ e.printStackTrace(); } }); } private static void processOsoby(ArrayList<Osoba> osoby, Consumer<Osoba> consumer) { for (Osoba osoba : osoby){ consumer.accept(osoba); } } }Dosiahol som to, že metóda processOsoby je krajšia, ale náš lambda výraz je teraz viacriadkový a nie pekný - jednoriadkový.  Na jednej strane chceme mať pekné jednoduché lambda výrazy, na druhej strane chceme, aby bolo postarané o výnimky.  V našom kóde sa vráťme k riešeniu, ktoré nepoužíva try catch blok. Na odchytenie výnimky použijeme wrapper metódu. Try catch blok si vyvedieme do osobitnej metódy a potom obalíme náš lambda výraz, ďalším lambda výrazom, ktorý má try catch blok. Urobme to, čo som teraz napísal. Vytvoríme si novú metódu, ktorá bude akceptovať lambda výraz. V našom prípade sme na to použili Consumer rozhranie. A keďže je to wrapper, tak to čo mi príde na vstup tak dám aj na výstup. private static Consumer<Osoba> wrapperLambda(Consumer<Osoba> consumer){ return consumer; }V metóde processOsoby(osoby, osoba -> System.out.println(osoba.getMeno().toUpperCase())); zavolám namiesto lambda výrazu, wrapper metódu, ktorej argument bude lambda výraz. Urobí to to isté, ale použil som wrapper metódu. public class ExceptionHandling { public static void main(String[] args) { ArrayList<Osoba> osoby = new ArrayList<>(); osoby.add(new Osoba("jano", "beno", 3)); osoby.add(new Osoba("peter", "beno", 0)); osoby.add(new Osoba("jaro", "beno", 30)); osoby.add(new Osoba("brano", "beno", 28)); processOsoby(osoby, wrapperLambda(osoba -> System.out.println(osoba.getMeno().toUpperCase()))); } private static void processOsoby(ArrayList<Osoba> osoby, Consumer<Osoba> consumer) { for (Osoba osoba : osoby){ consumer.accept(osoba); } } private static Consumer<Osoba> wrapperLambda(Consumer<Osoba> consumer){ return consumer; } }Tu môžem spraviť nasledujúcu vec. Namiesto toho aby som lambdu prehnal cez wrapper metódu, tak ju ani nepoužijem, ale použjime len jej vstupný parameter, čo je osoba. Môžem spraviť niečo takéto:  private static Consumer<Osoba> wrapperLambda(Consumer<Osoba> consumer){ return osoba -> System.out.println(osoba.getPriezvisko()); }Namiesto toho, aby som využil vstupnú lambdu, ktorá mi prišla cez parameter consumer, som na ňu zabudol a len som využil vstupný parameter danej lambdy a vytvoril som novú lambdu.  Pri volaní consumer.accept(osoba); v metóde processOsoby sa vykoná lambda výraz z wrapper metódy. Toto nie je skutočný wrapper. Skutočný wrapper, zoberie vstupnú lambdu a vykoná čo požaduje. Teraz máme istotu, že sa zavolá presne náš požadovaný lambda výraz a zároveň môžeme pridávať kód okolo. private static Consumer<Osoba> wrapperLambda(Consumer<Osoba> consumer){ return osoba -> consumer.accept(osoba); }Tu prichádza narad try catch blok v wrapper metóde. Upravíme si kód, aby nám hádzal výnimku. public class ExceptionHandling { public static void main(String[] args) { ArrayList<Osoba> osoby = new ArrayList<>(); osoby.add(new Osoba("jano", "beno", 3)); osoby.add(new Osoba(null, "beno", 0)); osoby.add(new Osoba("jaro", "beno", 30)); osoby.add(new Osoba("brano", "beno", 28)); processOsoby(osoby, wrapperLambda(osoba -> System.out.println(osoba.getMeno().toUpperCase()))); } private static void processOsoby(ArrayList<Osoba> osoby, Consumer<Osoba> consumer) { for (Osoba osoba : osoby){ consumer.accept(osoba); } } private static Consumer<Osoba> wrapperLambda(Consumer<Osoba> consumer){ return osoba -> { try{ consumer.accept(osoba); }catch (NullPointerException e){ System.out.println("Null pointer exception in wrapper lambda"); } }; } }Ak sa zastavuješ pri myšlienke, že sme nič nezjednodušili, len sme presunuli kód na iné miesto, tak máš pravdu, ale! Ak si danú metódu spravíš generickú, tak si do tejto metódy môžeš zabaliť hocijakú lambdu, ktorej typ je Consumer rozhranie. Škoda, že tvorcovia javy nespravili takéto wrapper metódy pre všetky funkcionálne rozhrania z balíku java.util.function. private static<T> Consumer<T> wrapperLambda(Consumer<T> consumer){ return osoba -> { try{ consumer.accept(osoba); }catch (NullPointerException e){ System.out.println("Null pointer exception in wrapper lambda"); } }; } Pokračovať s Lambda výrazmi budeme opäť v ďalšom článku. Moje meno je Jaro Beňo a naučím ťa programovať v Jave. Ahoj.
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