Náš blog

Top 8 internetových prehliadačov. Ktorý si vybrať?
Tipy a triky
20.02.2023
Marián Kristeľ

Top 8 internetových prehliadačov. Ktorý si vybrať?

Všetky webové prehliadače majú rovnakú základnú funkciu a napriek tomu je výber medzi nimi vždy jedným z najdiskutovanejších v histórii technológií. V súčasnosti máte viac možností ako kedykoľvek predtým, či už hľadáte webový prehliadač zameraný na ochranu súkromia, na rýchlosť alebo bezpečnosť. Aby sme vám pomohli rozhodnúť sa pre najlepší webový prehliadač, prinášame porovnanie prehliadačov v rôznych aspektoch od rýchlosti, cez zabezpečenie až po systémové požiadavky. Čo sú webové prehliadačeWebový prehliadač vám umožňuje prezerať si texty, obrázky a videá odkiaľkoľvek na svete. Prehliadač získava informácie z iných častí webu a zobrazuje ich na vašom počítači alebo mobilnom zariadení. Informácie sa prenášajú pomocou HTTP protokolu (Hypertext Transfer Protocol), ktorý definuje spôsob prenosu textu, obrázkov a videa na webe. Vyššie spomínané informácie je potrebné zdieľať a zobrazovať v konzistentnom formáte, aby ich mohli vidieť ľudia používajúci akýkoľvek prehliadač na svete. V realite je to však inak a môže sa stať, že webová stránka na rôznych prehliadačoch vyzerá a funguje inak. Je to spôsobené tým, že výrobcovia prehliadačov sa rozhodli interpretovať prenášané informácie rôznym spôsobom.[Ako funguje webový prehliadač]Keď webový prehliadač načítava údaje zo servera pripojeného k internetu, používa softvér nazývaný vykresľovacie jadro na preklad týchto údajov do textu a obrázkov. Tieto údaje sú napísané v jazyku HTML (Hypertext Markup Language) a webové prehliadače čítajú tento kód, aby vytvorili to, čo vidíme, počujeme a zažívame na internete. #1 Mozilla FirefoxFirefox je už dlho švajčiarskym nožíkom internetu a veľmi obľúbeným prehliadačom. Vďaka pohodlnému rozhraniu, rýchlemu enginu a neuveriteľným vývojárskym nástrojom je Firefox voľbou číslo 1 mnohých používateľov v roku 2023. Aj keď jeho rýchlosť nie je porovnateľná s prehliadačom Chrome, vyniká v rôznych oblastiach, napríklad Firefox ponúka oveľa lepšie a bezpečnejšie súkromie, škálovanie obrázkov, vykresľovanie písma a neuveriteľné možnosti prispôsobenia. Medzi najnovšie aktualizácie patrí jednoduchšia správa sťahovania, podpora titulkov a titulkov na YouTube, videá Prime Video a Netflix sledované v režime obraz v obraze, podpora HDR v systéme MacOS a možnosť upravovať súbory PDF s textom, kresbami a podpismi. Firefox dokáže rozpoznať text aj z obrázka, ktorý sa po výbere skopíruje do schránky. Na našom webe nájdeš online kurz venovaný nastaveniam Firefoxu pre lepšie súkromie a bezpečnosť na internete. ➕ Výhody prehliadača Firefox: • ochrany osobných údajov • prispôsobiteľný a open-source prehliadač • synchronizácia naprieč zariadeniami ➖ Nevýhody prehliadača Firefox: • pomalší ako konkurenti (najmä Chrome) • možné úniky systémovej pamäte #2 ChromeAj v roku 2023 zostáva Google Chrome jedným z najpopulárnejších prehliadačov na scéne pre používateľov Windows a Mac, ako aj pre iné operačné systémy. Je inovatívny, ľahko sa inštaluje a zvládne svoju prácu. Ponúka všetky funkcie, ktoré by ste od prehliadača v roku 2023 očakávali – rýchle načítanie, rozšírenia, záložky, motívy a prispôsobiteľnú domovskú stránku. Má vynikajúce funkcie automatického dopĺňania a nástroje pre web developerov. Nevýhody môžu byť pre niektorých problémom – prehliadač Google Chrome je známy tým, že využíva veľa zdrojov vášho zariadenia, čo je evidentný problém najmä na počítačoch. ➕ Výhody prehliadača Chrome: • rýchly výkon a vykresľovanie webu • rozsiahla knižnica doplnkov • dobré fungovanie naprieč viacerými zariadeniami ➖ Nevýhody prehliadača Chrome: • môže byť náročný na zdroje • obavy o súkromie #3 Microsoft EdgeMicrosoft bol dlhé roky terčom posmeškov kvôli ich prehliadaču Internet Explorer používanom v operačných systémoch Windows. Internet Explorer je však už minulosť a je tu Edge, ktorý beži na Chromium a stále je predvoleným prehliadačom na Windwsoch, je však dostupný aj pre Mac, Android či iOS. Nová Chromium verzia (od roku 2020) je podstatne rýchlejšia ako jej predchodca a obsahuje niektoré užitočné funkcie vrátane funkcie Čítať nahlas, možnosti prenášať médiá, ako sú vložené videá do Chromecast zariadení, dobrý výber doplnkov, či možnosti prispôsobenia. Môžete si tiež stiahnuť webové stránky ako aplikácie, ktoré potom bežia ako samostatné aplikácie bez toho, aby ste museli spúšťať celý prehliadač. ➕ Výhody prehliadača Edge: • dobrá správa pamäte • vstavaná funkcia Čítať nahlas s prirodzenými hlasmi • nástroje produktivity ➖ Nevýhody prehliadača Edge: • synchronizácia záložiek • nepodporovaný na starších PC s menej ako 1 GHz procesorom #4 OperaPrehliadač Opera zdieľa veľkú časť DNA prehliadača Chrome a zaslúži si svoje miesto ako jeden z najlepších webových prehliadačov. Rovnako ako Edge a Chrome, aj Opera je postavená na open-source engine Chromium od spoločnosti Google a v dôsledku toho majú všetky veľmi podobnú používateľskú skúsenosť. Opera má vstavanú neobmedzenú službu VPN, vďaka čomu je bezpečnejšou možnosťou prehliadača. Integrované a prispôsobiteľné skratky pre webové aplikácie, ako sú WhatsApp Web, Discord a Facebook Messenger, uľahčujú komunikáciu priamo z vášho prehliadača. Najväčšie zmeny prišli s Opera 60 a Reborn 3, ktorá priniesla nový bezokrajový dizajn, podporu Web 3 a krypto peňaženku, čo používateľom umožňuje pripraviť sa na stránky založené na blockchaine. ➕ Výhody prehliadača Opera: • RAM, CPU a obmedzovač siete (len verzia Opera GX) • moderné, čisté rozhranie s animáciami • podporuje rozšírenia prehliadača Chrome prostredníctvom doplnku z obchodu Opera ➖ Nevýhody prehliadača Opera: • obavy o ochranu osobných údajov • niektoré rozšírenia nefungujú správne alebo im chýbajú aktualizácie • rýchlosť prehliadača #5 SafariAk používate výhradne zariadenia Apple, Safari je už váš predvolený prehliadač. Je tiež výrazne rýchlejší ako v minulosti a svojou rýchlosťou prekonáva Chrome. Je integrovaný do iOS, iPadOS a MacOS a pravdepodobne získate lepšiu výdrž batérie vďaka interným optimalizáciám spoločnosti Apple a základnému hardvéru. Safari sa tiež veľmi zameriava na súkromie a bezpečnosť. Ak chcete minimalizovať spôsob, akým vás sledujú, Safari je dobrá voľba. Ak používate aj iPhone a/alebo iPad, potom pomocou Safari na Macu dosiahnete najplynulejší prechod medzi platformami. Otvorené webové stránky na iPade alebo iPhone sa prenesú do MacOS. ➕ Výhody prehliadača Safari: • inovatívne a moderné používateľské rozhranie • dodáva sa predinštalovaný na vašom Macu, iPhone a iPade • optimalizované pre výkon ➖ Nevýhody prehliadača Safari: • na Windowse rozbeháte len zastaralú verziu • relatívne obmedzená knižnica rozšírení #6 BraveWebový prehliadač novej generácie, ktorý predvolene blokuje všetky reklamy na všetkých webových stránkach, čo z neho robí pravdepodobne najrýchlejší prehliadač. V rámci prehliadača však existuje program Brave Rewards. Používatelia získajú základné tokeny pozornosti (BAT - basic attention token), keď si prezerajú alternatívne reklamy, ktoré Brave umiestni do streamu prehliadania. Používatelia môžu odovzdať časť svojich tokenov vydavateľom. Existujú desaťtisíce webstránok, ktoré podporujú transakcie založené na BAT prostredníctvom prehliadača Brave, vrátane Wikipedia, The Guardian, WikiHow, MacRumors a ďalších. Brave nevykonáva žiadne sledovanie používateľov, vďaka čomu je ideálny aj na súkromné prehliadanie.[Najpopulárnejšie prehliadače za rok 2022] Alternatívne prehliadačeĎalšími dosť využívanými prehliadačmi sú napríklad Vivaldi alebo Tor Browser. Poďme si o nich napísať niečo viac. VivaldiVivaldi je svojím spôsobom jedinečný. Žiadni dvaja používatelia Vivaldi nebudú mať rovnaké nastavenie. Pri prvom spustení vás prevedie procesom nastavenia, ktorý rozloží váš prehliadač spôsobom, ktorý vám dáva zmysel. Má tiež niekoľko vynikajúcich funkcií na zvýšenie ochrany osobných údajov, ako je napríklad spojenie s DuckDuckGo, nové aktualizácie pridali vstavaný blokovač reklám, vstavaný blokovač sledovania, hodiny v stavovom riadku, či nového správcu poznámok. Tor BrowserTor je softvér kombinovaný s otvorenou sieťou, ktorej cieľom je urobiť vás neviditeľnými smerovaním vašej prevádzky cez niekoľko anonymných serverov. Aj keď to nie je úplne spoľahlivé, je veľmi ťažké, aby vás niekto identifikoval, keď ste správne nakonfigurovaný a používate prehliadač Tor na surfovanie po webe – najmä v kombinácii s VPN. Existuje mnoho legitímnych použití prehliadača Tor a siete Tor. Je to dobrá voľba pre ľudí, ktorí žijú v krajinách s represívnymi vládami, ako aj pre novinárov a aktivistov. Dark web je tiež jedným z cieľov pre ľudí používajúcich Tor. Ak chcete pri surfovaní na webe zostať v úplnej anonymite, prehliadač Tor a Tor network sú pre vás. ZáverPrehliadače dnes patria medzi najčastejšie používané aplikácie, či už na stolnom počítači alebo na mobile. Vzostup softvéru ako služby (SaaS) znamená, že prostredníctvom webových aplikácií a prehliadača môžete vykonávať prakticky akúkoľvek úlohu. Výber webového prehliadača na dlhodobé používanie je veľmi osobná vec a bude závisieť od vašich individuálnych potrieb v oblasti zabezpečenia, súkromia a dostupnosti. Z technického hľadiska zohráva úlohu aj to, čo váš počítač zvládne z hľadiska rýchlosti spracovania, kapacity pamäte alebo aký operačný systém používate.
8 užitočných Chrome rozšírení pre dizajnérov
Tipy a triky
07.10.2022
Skillmea

8 užitočných Chrome rozšírení pre dizajnérov

V tomto článku sa pozrieme na rozšírenia pre Chrome, ktoré sú dôležité a potrebné pre každého dizajnéra, uľahčujú prácu a pomáhajú dodať projekt klientovi rýchlejšie. 1. WhatFont Skúsili ste niekedy zistiť, aké písmo sa používa na webovej stránke, ktorá sa vám naozaj páči? Rozšírenie WhatFont rozpozná použité písmo, na ktore narazíte vo svojom prehliadači. Stačí nad dané písmo umiestniť kurzor myši. Veľmi užitočné, keď pracujete v agentúre a váš klient zabudol názov písma, ktoré chce použiť vo svojej grafike. Toto rozšírenie skontrolujte typ písma, font a medzery s veľkosťou nadpisu, podnadpisu a textu. Myslím, že väčšina dizajnérov už pozná tento alebo podobný nástroj a mali by ho tiež na prvom mieste zoznamu. Rozšírenie je možné stiahnuť tu.[WhatFont] 2. ColorZilla Nikto nemá rád problémy s HEX kódom. Budete chcieť vytvoriť grafiku s presne rovnakými farbami, aké nájdete na webstránkach. Nie vždy však máte style guide poruke. S ColorZilla môžete získať zobrazenie farieb z ľubovoľného bodu vo vašom prehliadači, rýchlo upraviť túto farbu a vložiť ju do iného programu. Má tiež množstvo ďalších šikovných funkcií, vďaka čomu je najkomplexnejším dostupným color picker nástrojom. Rozšírenie je možné stiahnuť tu.[ColorZilla] 3. Heurio - UX Check Tento nástroj pomôže pri komunikácii medzi dizajnérom a vývojárom. Pomocou tohto rozšírenia môžete zmeniť ľubovoľnú webovú stránku na plátno a pridať svoje poznámky, ktoré môžete neskôr zdieľať s vývojármi. Všetko, čo musíte urobiť, je otvoriť webovú stránku, kliknúť na rozšírenie, pripnúť svoje nápady kliknutím na ľubovoľný prvok na webe a zdieľať odkaz so všetkými vývojármi. Rozšírenie je možné stiahnuť tu.[Heurio] 4. Muzli 2 Rozšírenie Muzli 2 je zdrojom inšpirácie na jednom mieste. Účelom rozšírenia Muzli 2 je poskytnúť centrálny rozbočovač pre UI/UX dizajn. Všetky kanály sú ručne vyberané, takže nenarazíte na menej spoľahlivé zdroje. Muzli 2 nahrádza domovskú stránku prehliadača Chrome, takže už nikdy nezmeškáte najnovšie aktualizácie z oblasti, ktorú sledujete. Prijímajte aktuálny prúd obrázkov, návrhov, používateľského rozhrania a UX a ďalších. Funguje dobre s Dribbble, Designer News a ďalšími médiami súvisiacimi s grafikou a dizajnom. Rozšírenie je možné stiahnuť tu.[Muzli 2] 5. Window Resizer Dizajnéri, ktorí tvoria grafiku pre digitál, chcú vedieť, či sú ich návrhy vhodné pre rôzne rozlíšenia obrazovky. Window Resizer vám umožňuje emulovať rozlíšenie obrazovky alebo prehliadača, aby ste mohli otestovať svoje dizajny v ktoromkoľvek z nich. Skvelý nástroj na finálnu kontrolu vašich dizajnov. Rozšírenie je možné stiahnuť tu.[Window Resizer] 6. Site Palette Toto rozšírenie vám pomôže extrahovať všetky farby z webovej stránky. Tieto farby môžete dokonca exportovať ako obrázok. Site Palette podporuje generátory paliet, môžete vytvoriť odkaz na zdieľanie a rozšírenie je prepojené s Adobe Swatch, coolors.co, Sketch a podobne. Skvelý nástroj pre dizajnérov aj front-end vývojárov. Rozšírenie je možné stiahnuť tu.[Site Palette] 7. Page Ruler Udržujte svoje dizajny "pixel perfect" pomocou rozšírenia Page Ruler. Tento praktický nástroj vám umožňuje nakresliť pravítko, aby ste získali rozmery v pixeloch a umiestnenie a zmerali prvky na ľubovoľnej webovej stránke. Rozšírenie je možné stiahnuť tu.[Page Ruler] 8. Dark Mode Ide o jednoduché rozšírenie a každý dizajnér by ho mal vyskúšať. Rozšírenie o dark mode poskytuje iný vizuálny pohľad na grafiku, webstránku a podobne. Niekedy je ťažké si predstaviť, ako budú niektoré webové stránky vyzerať v tmavom režime. Tento doplnok teda vytvára inverzný pohľad, ktorý premení webovú stránku do tmavého režimu. Rozšírenie je možné stiahnuť tu.[Dark Mode] Záver Toto sú niektoré z rozšírení pre dizajnérov, ktoré ušetria čas a nervy. Podeľte sa so svojimi tipmi na zaujímavé rozšírenia, ktoré používate. Ďakujeme za prečítanie a dúfam, že vám článok pomôže.
Ako googliť ako profesionál: 7 tipov na efektívnejšie googlenie
Tipy a triky
20.09.2022
Skillmea

Ako googliť ako profesionál: 7 tipov na efektívnejšie googlenie

Google je prvá zastávka, keď hľadáte nejaké informácie na internete. Aj keď sa možno zdá, že vyhľadávanie informácií na Googli je ľahké, mnohí používatelia nevedia, ako efektívne používať Google vyhľadávač. Naučiť sa správne googliť je umenie. Ak chcete získať od Googlu správne odpovede, musíte sa pýtať správne otázky. A aby ste rýchlo dostali správne odpovede, musíte vedieť ako klásť správne otázky. Nižšie uvádzame niekoľko užitočných tipov a trikov, ktoré vám pomôžu nájsť správne odpovede na vaše otázky rýchlo a efektívne. Ako efektívne vyhľadávať na Google1. Použite úvodzovky pre získanie "PRESNEJ" zhodyVo všeobecnosti, keď robíme bežné vyhľadávanie na Google, je to také povrchné vyhľadávanie. Výsledkom môžu byť stránky, ktoré môžu alebo nemusia obsahovať všetky slová, ktoré ste spomenuli vo svojom vyhľadávacom dopyte. Ak však zabalíte svoj vyhľadávací dopyt alebo otázku (buď výraz alebo frázu) do úvodzoviek, ako je tento: "váš vyhľadávací dopyt je tu", potom Google vykoná podrobné vyhľadávanie. To znamená, že všetky výsledky budú zahŕňať stránky, ktoré obsahujú všetky výrazy, ktoré ste vložili do úvodzoviek. Je to užitočné, keď chcete, aby sa vo vašich výsledkoch vyhľadávania nachádzal konkrétny výraz alebo fráza.[Efektívne vyhľadávanie] 2. Vyhľadávajte v rámci konkrétnej webstránky pomocou site:Ak chcete, aby Google vracal výsledky z konkrétnej webovej stránky, stačí pridať site: pred otázku, ktorú hľadáte. To je tiež užitočné, keď chcete hľadať niečo na webovej stránke, ktorá nemá možnosť interného vyhľadávania alebo toto vyhľadávanie nefunguje správne. Napríklad vyhľadávanie site:skillmea.sk excel zobrazí výsledky vyhľadávania iba z webovej stránky skillmea.sk na tému Excel, viď obrázok nižšie:[site:] 3. Vylúčte výraz z výsledkov vyhľadávania pomocou -Ak nechcete, aby sa výraz alebo fráza zobrazovala vo výsledkoch vyhľadávania, stačí pred dané slovo pridať -. Toto viete spojiť aj s predchádzajúcim tipom a ak chcete odstrániť výsledky z nejakej webovej lokality z výsledkov vyhľadávania, použite pred hľadaným výrazom -site: Konkrétny príklad: -site:wikipedia.org nezobrazí vo výsledkoch vyhľadávania nič zo stránky wikipedia.[Vylúčenie výrazov alebo stránok] 4. Vyhľadajte obrázky určitej veľkosti pomocou imagesize:Ak chcete hľadať obrázky určitej veľkosti, použite vo vyhľadávacom dopyte značku imagesize: spolu so šírkou a výškou v pixeloch. Rozmery by mali byť len v pixeloch – napríklad imagesize:500x500 zobrazí výsledky obrázkov, ktoré majú rozmer 500px x 500px. Takže vyhľadávanie => "cute cats imagesize:500x1000" povedie k obrázkom roztomilých mačičiek s veľkosťou obrázka 500 x 1000 pixelov.[Imagesize 500x1000] 5. Vyhľadajte konkrétny typ súboru pomocou filetype:Ak chcete získať výsledky vyhľadávania, ktoré obsahujú konkrétny typ súboru, napríklad PDF alebo PPT, pridajte filetype:<prípona> (bez zátvoriek). Napríklad Angular tutorial filetype:pdf vygeneruje výsledky, ktoré obsahujú PDF, ako je vidieť na nasledujúcom obrázku:[Filetype:] 6. Skombinujte vyhľadávania s OR a ANDAk chcete, aby výsledky vyhľadávania obsahovali dva výrazy, vložte medzi ne kľúčové slovo AND. Napríklad vyhľadávanie na => Python AND Mongo prinesie výsledky, ktoré obsahujú výrazy Python aj Mongo. Podobne, ak chcete mať vo výsledkoch vyhľadávania ktorýkoľvek z výrazov, použite medzi nimi kľúčové slovo OR (alebo). Napríklad vyhľadávanie na => Vue OR React prinesie výsledky, ktoré obsahujú jeden z výrazov alebo aj obidva. 7. Filtrujte vyhľadávania pomocou AFTER:, BEFORE: alebo .. medzi dvoma číslamiAk chcete, aby Google zobrazil výsledky vyhľadávania, ktoré boli zverejnené po určitom roku, použite značku after:. Napríklad vyhľadávanie na => After Effects tutorial AFTER:2021 zobrazí výsledky vyhľadávania zverejnené po roku 2021. Podobne pridanie značky before: vráti výsledky publikované pred konkrétnym rokom. Môžete tiež vyhľadávať výsledky publikované v určitom období roka alebo medzi ľubovoľnými číslami. Stačí pridať .. medzi dve čísla, medzi ktorými chcete hľadať, spolu s jednotkami, ak nejaké existujú. TIP pre pokročilých: Viete ako využívať pokročilé Google vyhľadávanie? Bonusová časťHviezdička (*)Hviezdička je zástupný znak, ktorý môže zodpovedať ľubovoľnému slovu. Na chýbajúce slová alebo frázy použite *.  Napríklad build a todo app with * Definície slov (define:)Na nájdenie definície slova použite nasledujúci vyhľadávací trik: define:machine learning. Vyhľadanie webstránky uloženej v cache (cache:)Google ukladá verzie webových stránok vo vyrovnávacej pamäti, aby rýchlo poskytoval výsledky vyhľadávania. Ak chcete zistiť, či Google uložil nejakú stránku do vyrovnávacej pamäte alebo nie, použite cache: pred adresou URL webových stránok. PrekladyPomocou Google vyhľadávania môžete prekladať slová a frázy z jedného jazyka do druhého. Vyskúšajte to s tagom translate:. ZáverVďaka za prečítanie článku. Dúfam, že sa vám článok páčil a dozvedeli ste niekoľko noviniek o tom, ako efektívne a rýchlo googliť. Zostaňme v spojení na sociálnych sieťach alebo sa prihláste k odberu newslettra.
Najpoužívanejšie Linuxové príkazy
Tipy a triky
21.05.2022
Marián Kristeľ

Najpoužívanejšie Linuxové príkazy

Keď sa povie Linux, väčšina ľudí si predstaví komplikovaný operačný systém, ktorý používajú iba programátori. Nie je to však celkom tak, ako sa na prvý pohľad môže zdať. Čo je Linux?Linux je celá rodina unixových operačných systémov s otvoreným zdrojovým kódom, ktoré sú založené na Linuxovom jadre. To zahŕňa všetky najpopulárnejšie systémy založené na Linuxe, ako sú Ubuntu, Fedora, Mint, Debian a ďalšie. Presnejšie povedané, nazývajú sa distribúcie. Celosvetový trhový podiel Linuxu na desktopových počítačoch je 2,49 %, avšak keď sa pozrieme na cloudovú infraštruktúru, tu Linux dominuje s podielom približne 90 %. Pri práci s operačným systémom Linux musíš použiť shell – rozhranie, ktoré poskytuje prístup k službám operačného systému. Väčšina distribúcií Linuxu používa grafické používateľské rozhranie (GUI) ako svoj shell, hlavne preto, aby svojim používateľom uľahčila používanie. Je bežnou praxou používať ich pri správe VPS. Akékoľvek grafické používateľské rozhranie (GUI) je len abstrakciou programov príkazového riadka. Napríklad, keď zatvoríte okno kliknutím na „X“, za touto akciou sa spustí príkaz. Odporúča sa používať rozhranie príkazového riadka (CLI), pretože je výkonnejšie a efektívnejšie. Úlohy, ktoré vyžadujú viackrokový proces cez GUI, je možné vykonať v priebehu niekoľkých sekúnd zadaním príkazov do CLI. V tomto článku sa naučíš 26 základných príkazov Linuxu, ktoré ti ako nováčikovi nepochybne pomôžu pri navigácii v Linuxe.  Čo je Linuxový príkaz?Linuxový príkaz je program alebo pomôcka, ktorá sa spúšťa na príkazovom riadku. Príkazový riadok je rozhranie, ktoré prijíma riadky textu a spracováva ich do pokynov pre tvoj počítač. Príznak je spôsob, ako môžeš odovzdať možnosti príkazu, ktorý spustíš. Väčšina príkazov Linuxu má stránku pomocníka, ktorú môžeš vyvolať príznakom -h. Argument alebo parameter je vstup, ktorý dávame príkazu, aby mohol správne bežať. Vo väčšine prípadov je argumentom cesta k súboru, ale môže to byť čokoľvek, čo zadáš do terminálu. Príznaky je možné vyvolať pomocou pomlčiek (-) a dvojitých pomlčiek (--), zatiaľ čo vykonanie argumentov závisí od poradia, v ktorom ich odošleš funkcii. Najpoužívanejšie Linuxové príkazyPredtým, než sa pozrieme na najpoužívanejšie Linux príkazy, nezabudni spustiť terminál. Vo väčšine distribúcií Linuxu je možné použiť klávesovú skratku Ctrl + Alt + T. Ak to nefunguje, príkazový riadok nájdeš v časti Utilities. 1. pwdPomocou príkazu pwd zistíš cestu k aktuálnemu pracovnému adresáru (priečinku), v ktorom sa nachádzaš. Príkaz vráti absolútnu (úplnú) cestu, čo je v podstate cesta všetkých adresárov, ktorá začína lomítkokm (/ ). Príkladom absolútnej cesty je /home/username. 2. cdNa navigáciu v súboroch a adresároch Linuxu použiješ príkaz cd. Vyžaduje buď úplnú cestu alebo názov adresára, v závislosti od aktuálneho pracovného adresára, v ktorom sa nachádzaš. Napríklad, si v /home/username/Documents a chceš prejsť do adresára Photos, ktorý je podadresárom Documents. Jednoducho zadáš nasledujúci príkaz: cd Photos. Iná situácia by bola, ak by si chcel prejsť do úplne nového adresára, napríklad /home/username/Movies. V tomto prípade zadáš cd a za ním absolútnu cestu k adresáru: cd /home/username/Movies. Existuje niekoľko skratiek, ktoré vám pomôžu pri rýchlej navigácii: • cd .. (s dvoma bodkami) pre posun o jeden adresár nahor, • cd na prejdenie priamo do domovského adresára, • cd- (s pomlčkou) na presun do predchádzajúceho adresára “Shell Linuxu je case sensitive a rozlišuje veľké a malé písmená. Takže musíš zadať názov adresára presne tak, ako je.” 3. lsPríkaz ls sa používa na zobrazenie obsahu adresára. V predvolenom nastavení tento príkaz zobrazí obsah tvojho aktuálneho pracovného adresára. Ak chceš vidieť obsah iných adresárov, zadaj ls a potom cestu k adresáru. Napríklad zadaním ls /home/username/Documents zobrazíš obsah adresára Documents. Existujú tieto verzie, ktoré môžete použiť s príkazom ls: • ls -R zobrazí zoznam všetkých súborov v podadresároch, • ls -a zobrazí skryté súbory, • ls -al zobrazí zoznam súborov a adresárov s podrobnými informáciami, ako sú oprávnenia, veľkosť, vlastník atď. 4. catcat (skratka pre concatenate) je jedným z najčastejšie používaných príkazov v Linuxe. Používa sa na výpis obsahu súboru na štandardnom výstupe (sdout). Ak chceš spustiť tento príkaz, zadaj cat a za ním názov súboru a jeho príponu. Napríklad: cat file.txt. Tu sú ďalšie spôsoby použitia príkazu cat: • cat povodnysubor > názovsúboru obsah z pôvodného súboru skopíruješ a uložíš do súboru názovsúboru, • cat názovsúboru1 názovsúboru2>názovsúboru3 spojí dva súbory (1 a 2) a uloží ich výstup do nového súboru (3), • na zmenu súboru na veľké alebo malé písmená použi cat názovsúboru | tr a-z A-Z >output.txt 5. cpNa skopírovanie súborov z aktuálneho adresára do iného adresára použi príkaz cp. Napríklad príkaz cp skillmea_logo.jpg /home/username/Pictures vytvorí kópiu skillmea_logo.jpg (z tvojho aktuálneho adresára) do adresára Pictures. 6. mvPríkaz mv sa primárne používa na presun súborov, hoci ho možno použiť aj na premenovanie súborov. Argumenty pri mv sú podobné príkazu cp. Musíš zadať mv, názov súboru a cieľový adresár. Napríklad: mv hello.txt /home/username/Documents. Ak chceš premenovať súbory, príkaz je mv starýnázov.txt novýnázov.txt 7. mkdirNa vytvorenie nového adresára použiješ príkaz mkdir — ak zadáš mkdir Music, vytvorí sa adresár s názvom Music. Existujú aj ďalšie príkazy mkdir: • pre vygenerovanie nového adresára v inom adresári, použi príkaz mkdir Music/Novyadresar • použite voľbu p (parents) na vytvorenie adresára medzi dvoma existujúcimi adresármi, napríklad mkdir -p Music/Metallica/Novyadresar vytvorí Novyadresar v adresári Metallica. Ak adresár Metalilca neexistuje, tak ho zároveň aj vytvorí. 8. rmdirAk potrebuješ vymazať adresár, použi príkaz rmdir. rmdir však umožňuje mazať iba prázdne adresáre. 9. rmPríkaz rm sa používa na odstránenie adresárov a obsahu v nich. Ak chceš odstrániť iba adresár, ako alternatívu k rmdir použite rm -r. “Pri tomto príkaze musíš byť veľmi opatrný a vždy skontroluj, v ktorom adresári sa nachádzaš. Príkazom sa všetko vymaže a nedá sa vrátiť späť.” 10. touchTento príkaz umožňuje vytvoriť nový prázdny súbor. Zadajte napríklad touch /home/username/Documents/Index.html a vytvorte súbor HTML s názvom Index v adresári Documents. 11. locateTento príkaz môžeš použiť na vyhľadanie (locate) súboru, rovnako ako príkaz na vyhľadávanie v systéme Windows. Pri použití argumentu -i spolu s týmto príkazom sa nerozlišujú malé a veľké písmená, takže je možné hľadať súbor, aj keď nevieš jeho presný názov. Ak potrebuješ vyhľadať súbor, ktorý obsahuje dve alebo viac slov, použiješ hviezdičku (*). Napríklad príkaz locate -i meeting*notes vyhľadá akýkoľvek súbor, ktorý obsahuje slovo „meeting“ a „notes“, a je jedno, či ide o veľké alebo malé písmená. 12. findPodobne ako pri príkaze locate, pomocou find sa tiež vyhľadajú súbory a adresáre. Rozdiel je v tom, že na vyhľadanie súborov v danom adresári použiješ príkaz find. Napríklad príkaz find /home/ -name notes.txt vyhľadá súbor s názvom notes.txt v domovskom adresári a jeho podadresároch. 13. grepĎalší zo základných Linuxových príkazov, ktorý je užitočný pre každodenné použitie, je grep. Umožňuje prehľadávať celý text v danom súbore. Príklad použitia: grep deadline notes.txt vyhľadá v súbore notes.txt slovo deadline. Riadky, ktoré obsahujú hľadané slovo, sa zobrazia celé. 14. sudoSkratka pre „SuperUser Do“, tento príkaz umožňuje vykonávať úlohy, ktoré vyžadujú oprávnenia správcu alebo oprávnenia root. Neodporúča sa však používať tento príkaz na každodenné použitie, pretože sa môže ľahko stať, že dôjde k chybe, ak urobíš niečo nesprávne. 15. dfPomocou príkazu df získaš správu o využití miesta na disku v percentách a kB. Ak potrebuješ zobraziť prehľad v megabajtoch, zadaj príkaz df -m. 16. duAk chceš skontrolovať, koľko miesta zaberá súbor alebo adresár, použiješ na to príkaz du (Disk Usage). Súhrn využitia disku však namiesto zvyčajného formátu veľkosti zobrazí čísla blokov disku. Ak ho chceš vidieť v bajtoch, kilobajtoch a megabajtoch, pridaj do príkazového riadka argument -h. 17. headPríkaz head sa používa na zobrazenie prvých riadkov ľubovoľného textového súboru. V predvolenom nastavení sa zobrazí prvých desať riadkov, ale toto číslo je možné zmeniť podľa vlastného uváženia. Napríklad, ak chceš zobraziť iba prvých päť riadkov, zadaj príkaz head -n 5 názov súboru.ext. 18. tailTento má podobnú funkciu ako príkaz head, ale namiesto zobrazenia prvých riadkov príkaz tail zobrazí posledných desať riadkov textového súboru. Napríklad tail -n názov_súboru.ext. 19. tarPríkaz tar je najpoužívanejším príkazom na archiváciu viacerých súborov do tarballu – bežného formátu súborov v systéme Linux, ktorý je podobný formátu zip, pričom kompresia je voliteľná. Tento príkaz je pomerne zložitý s dlhým zoznamom funkcií, ako je pridávanie nových súborov do existujúceho archívu, zoznam obsahu archívu, extrahovanie obsahu z archívu a mnohé ďalšie. 20. killAk máš nereagujúci program, môžeš ho ukončiť manuálne pomocou príkazu kill. Vyšle určitý signál nesprávne sa správajúcej aplikácii a prikáže aplikácii, aby sa sama ukončila. 21. pingPomocou príkazu ping skontroluješ stav pripojenia k serveru. Jednoduchým zadaním príkazu ping google.com príkaz skontroluje, či sa dokážete pripojiť k službe Google, a tiež zmeria čas odozvy. 22. wgetPríkaz wget je veľmi užitočný, pomocou neho je možné dokonca sťahovať súbory z internetu. Ak to chceš urobiť, jednoducho zadaj wget a za ním odkaz na stiahnutie. 23. topPríkaz top zobrazí zoznam spustených procesov a koľko procesora každý proces využíva. Monitorovanie využitia systémových prostriedkov je užitočné, je dobré najmä vedieť, ktorý proces je potrebné ukončiť, pretože spotrebúva príliš veľa zdrojov. 24. manNie si si istý ohľadom funkcií určitých Linux príkazov? Žiadne obavy, môžeš sa ľahko naučiť, ako ich používať priamo z prostredia Linuxu pomocou príkazu man. Napríklad príkaz man tail zobrazí manuálny pokyn pre príkaz tail. 25. echoTento príkaz sa používa na presun niektorých údajov do súboru. Napríklad, ak chceš pridať text „Ahoj, volám sa Karol“ do súboru s názvom name.txt, napíšeš echo Ahoj, volám sa Karol >> name.txt 26. useradd, userdelKeďže Linux je systém pre viacerých používateľov, znamená to, že s rovnakým systémom môže súčasne pracovať viac osôb. useradd sa používa na vytvorenie nového používateľa, zatiaľ čo passwd pridáva heslo k účtu tohto používateľa. Ak chceš pridať novú osobu s názvom Karol napíšeš: useradd Karol a potom pridaj jeho heslo príkazom passwd Karol a systém ťa vyzve na na zadanie a potvrdenie hesla. Odstránenie používateľa je veľmi podobné ako pridanie nového používateľa, stačí napísať userdel UserName. ZáverZákladné Linuxové príkazy ti pomôžu vykonávať úlohy jednoduchšie a efektívnejši. Môže chvíľu trvať, kým si zapamätáš základné príkazy, ale praxou a neustálym skúšaním získaš istotu. Znalosť a zvládnutie týchto základných Linuxových príkazov bude prínosom pre správu tvojho linuxového stroja, či už desktopu alebo VPS riešenia. Veľa štastia!
8 najlepších pluginov pre After Effects
Tipy a triky
07.03.2022
Skillmea

8 najlepších pluginov pre After Effects

V tomto článku prinášame prehľad 8 najlepších After Effects pluginov a ich funkcií, o ktorých by mal vedieť a pracovať s nimi každý seriózny motion designer. Adobe After Effects je skvelý softvér, no prichádza bod, kedy by vás mohlo zaujímať, ako môžete zlepšiť svoj workflow, zvýšiť svoju kreativitu a produktivitu a naučiť sa nové zručnosti. V tomto momente vstupujú do hry úžasné pluginy do After Effects. Pluginy existujú od výmyslu sveta: od úpravy postáv, korekcie farieb, glitch efekty, a mnohé ďalšie. Výhody a nevýhody používania After Effects pluginovEšte predtým ako sa pozrieme na jednotlivé pluginy podrobnejšie, prejdime si klady a zápory After Effects pluginov,  Výhody After Effects pluginov: • umožňujú novú úroveň kreativity, • mali by zlepšiť váš pracovný workflow v After Effects, • vytvárajte efekty oveľa rýchlejšie ako používaním iba predvolených efektov After Effects, • možňuje vám pracovať s 3D objektmi a prvkami priamo v After Effects, • vytvorte nádherné pozadia iba niekoľkými kliknutiami, • nevyžadujú znalosť programovania, skriptovania. Nevýhody After Effects pluginov: • niektoré pluginy zaberajú veľa pamäte a značne spomaľujú After Effects počas ich používania, • vykreslenie niektorých pluginov zaberie veľa času, • niektoré pluginy môžu počas používania aplikácie After Effects spadnúť, • cena pluginov môže byť relatívne vysoká. 1. OrbPlugin Orb je navrhnutý tak, aby pomáhal pri vytváraní 3-rozmerných gúľ. Používa sa predovšetkým pri vytváraní planét. Orb používa podobný 3D engine ako vynikajúci doplnok Element 3D od Video Copilot a zameriava sa na vytváranie realistických planét a ponúka celý rad jedinečných nástrojov na jednoduché vytváranie planét. Môže sa zdať, že vytvorenie planéty v After Effects je také jednoduché ako vytvorenie gule s nejakými textúrami. Ak však chcete vytvoriť pôsobivú, profesionálne detailnú planétu, Orb je najlepší nástroj, ktorý máte. Nehovoriac o tom, že doplnok je bezplatný a má bezplatný návod, ktorý môžete využiť. Orb bude fungovať pre 90 percent z nich a je neoceniteľným nástrojom pre previs. To platí najmä v kombinácii s inými zásuvnými modulmi After Effects alebo v kombinácii s 3D kamerou z 3D aplikácie, ktorú je možné importovať do After Effects spolu s doskami v popredí pre objekty, ako sú vesmírne lode. 2. Animation ComposerPovedzme, že sa ponáhľate a chcete animovať svoju vrstvu After Effects v zlomku sekundy? Najlepším riešením môžu byť predvoľby pohybu animácií - motion presets. Niekoľkými kliknutiami môžete doslova získať super plynulé odrazy a jednoduchú animáciu. Balík obsahuje viac ako 1000 presetov, takže si určite nájdete pohyb, ktorý sa vám páči. Bonus: za týmto pluginom stoja Slováci z Mister Horse.[Image] 3. DuikAfter Effects má dobrý základný systém rozhýbania postáv (rigging), ale Duik posúva rigging na úplne novú úroveň. Klienti stále častejšie požadujú Duik pre akúkoľvek pokročilú prácu s animáciou a plugin sa stáva kľúčovým prvkom animácie pre širokú škálu projektov. Tento doplnok je úplne zadarmo spolu so zvyškom doplnkov Rainbox After Effects. Určite sa oplatí naučiť pracovať s Duik pluginom. Ak sa vám plugin páči, podporte jeho tvorcov. Ak vás zaujíma tento plugin a chcete sa venovať charakterovým animáciám a rozpohybovaniu postáv, pozrite si náš online kurz Character Animations, v ktorom sa venujeme práve DUIK pluginu.[Image] 4. Motion Boutique - Newton3Newton3 je jedným z pluginov, ktorý by motion dizajnéri mali mať nainštalovaný. Je to v podstate 2D fyzika alebo matematický engine integrovaný do After Effects, ktorý vám umožňuje presúvať vrstvy realistickým spôsobom, pretože všetko je vypočítané za vás. Či už chcete ukázať hustotu, trenie, odskok, rýchlosť alebo gravitáciu, Newton3 toto všetko a ešte oveľa viac dokáže.  Ďalšia vec, ktorú môžete urobiť, je vytvoriť realistické spoje medzi objektmi, takže môžete ľahko vytvárať zložité pohyby. Po dokončení simulácie sa animácia znova vytvorí v After Effects so štandardnými kľúčovými snímkami, takže si môžete prispôsobiť načasovanie podľa svojich predstáv. Cena tohto pluginu je však pomerne vysoká.  5. Red Giant Trapcode ParticularAsi neexistuje zoznam najlepších pluginov pre After Effects, v ktorom by sa nenachádzal nejaký od Red Giant. A najväčším frajerom medzi ich After Effects pluginmi je určite Trapcode Particular. Plugin Red Giant Trapcode Particular funguje podobne a a podľa nás aj oveľa lepšie ako plugin Particular World od After Effects. Tento plugin je pravdepodobne jedným z najstarších doplnkov After Effects, ktorý zostal veľmi aktívny a efektívny, keď motion dizajnéri potrebujú animovať častice, ktoré môžu byť založené na rôznych vzoroch, tvaroch alebo veľkostiach.  To je veľmi užitočné pri vytváraní prvkov počasia, ako je dážď, sneh, oblaky alebo dokonca dym. Plugin sa vo veľkom sa používa vo filmovom priemysle. 6. Motion Boutique - PasticheTento plugin využijete vtedy, keď máte na časovej osi veľa malých vrstiev. Pastiche vám umožňuje presúvať, preskupovať a umiestňovať tieto vrstvy do jedného tvaru. Pastiche tiež poskytuje intuitívne ovládače na jemné doladenie polohy, mierky, rotácie a nepriehľadnosti vrstiev koláže. Stiahnite si skúšobnú verziu tohto pluginu a vyskúšajte pracovať s ním aspoň nejaký čas. Vyskúšajte tiež  skombinovať Pastiche s pluginom Newton3. 7. Video Copilot Element 3DĎalší úžasný plugin od spoločnosti VideoCopilot sa nazýva Element 3D. Umožňuje vám importovať 3D objekty do aktuálneho pluginu a animovať ich a textúrovať.  Mnoho motion dizajnérov používa Element 3D na vytváranie krásnych filmových videí a výstupy vyzerajú veľmi profesionálne. Cena tohto pluginu je 189,95 USD cez Toolfarm. 8. DOF PROVývojár Richard Rosenman sprístupnil DOF PRO(Depth Of Field Generator PRO), svoj populárny doplnok na generovanie hĺbky poľa vo Photoshope, pre After Effects. Od svojho prvého vydania v roku 2005 sa DOF PRO stal profesionálnou voľbou v motion design odvetví. Najmodernejšie funkcie DOF PRO poskytujú inovatívne a špičkové technológie, ktoré inde nie sú dostupné, výsledkom čoho je jeden z najvýkonnejších a najpokročilejších procesorov hĺbky poľa. Medzi pokročilé funkcie patrí podpora chromatickej a achromatickej aberácie, diferenciácia bokehu ohniskovej roviny, astigmatizmus a efekty vinetácie, podpora vlastných máp clony a obnovenie hluku. K dispozícii je tiež plná podpora alfa kanála/priehľadnosti alebo podpora 32-bitových farieb. Cena pluginu je 199,99 USD. Ďalšie zaujímavé pluginyMedzi ďalšie veľmi zaujímavé pluginy, ktoré určite stoja za zmienku, patria Plexus 3, Boris Fx alebo Saber. Plexus 3 umožňuje používateľom spájať bodky/trojuholníky s čiarami a animovať ich v 3D priestore. Okrem toho vám Plexus 3 umožňuje vytvárať, manipulovať a vizualizovať dáta procedurálnym spôsobom. Zjednodušene to znamená, že častice môžu byť animované a môžu mať medzi sebou vzťah. Boris Fx má 3 hlavné pluginy: Sapphire, Mocha a Continuum. Všetky sú veľmi dobre známe v komerčnom a celovečernom filmovom priemysle. Ak máte chvíľu času, odporúčame pozrieť a vyskúšať skúšobnú verziu. Saber je mimoriadne výkonný nástroj na osvetlenie a efekty pre širokú škálu účelov. Nielenže sa dá použiť na vytváranie lúčov svetla (napríklad svetelné meče), ale prichádza aj so širokou škálou prednastavení a možnosťou pracovať s maskami vrstiev. Záver Dúfame, že ste sa dozvedeli niekoľko zaujímavostí a nových vecí o vyššie uvedených pluginoch pre After Effects. Poznáte a používate zaujímavé pluginy pre After Effects? Podeľte sa o ne v komentároch nižšie. 
5 zdrojov pasívneho príjmu pre dizajnérov
Tipy a triky
02.11.2021
Skillmea

5 zdrojov pasívneho príjmu pre dizajnérov

V tomto článku ti ukážeme možnosti, ako zarábať viac a generovať pasívny príjem. Diverzifikácia zdrojov príjmu je dobrá stratégia. Dnes ti priblížime 5 spôsobov, vďaka ktorým môžeš ako kreatívec popri svojom hlavnom zamestnaní zarábať viac. Každý pasívny príjem zahŕňa úvodnú investíciu. Tou môže byť čas, námaha a úsilie, peniaze alebo kombinácia všetkých prvkov. Začnime pekne poporiadku. 1. Vytváraj a predávaj dizajnové templaty / šablónyJednou z najpopulárnejších stratégií pasívneho príjmu, ktorú dizajnéri radi využívajú, je predaj rôznych hotových dizajnových vzorov online. Ak o tom premýšľaš, veľa nedizajnérov alebo začínajúcich dizajnérov pravidelne hľadá hotové šablóny na rôzne využitie od social media, cez newslettre až po dizajn webstránok. Skús vytvárať šablóny, ktoré sú univerzálne a využiteľné širokospektrálne, napríklad: • vizitky, • rôzne mockupy, • dizajn webstránok s rôznym zameraním, • prezentácie, • fotografie a ilustrácie, • životopisy, • ďalšie. Templaty môžeš predávať na rôznych portáloch (marketplace) ako sú napríklad Shutterstock, Adobe Stock, iStock, ale aj Canva nedávno spustila svoj marketplace.[Image] 2. Zdieľaj svoje znalostiAko dizajnér máš určite mnoho vedomostí a skúseností, o ktoré sa môžeš podeliť. Určite budeš mať dobrý pocit, keď pomôžeš začínajúcim dizajnérom zdieľaním svojich cenných poznatkov a zároveň tým vieš zarobiť peniaze navyše. Ako zdieľať svoje znalosti? Môžeš zorganizovať workshop či školenie, napísať knihu (ebook), vytvoriť online kurz alebo mentorovať dizajnérov začiatočníkov. Samozrejme, budeš musieť investovať čas do prípravy a vytvoreniu týchto vzdelávacích zdrojov, ale keď ich sprístupníš, z dlhodobého hľadiska sa môžu stať zaujímavým zdrojom príjmu.[Image] 3. Predávaj vlastné nástroje a assetyMedzi tieto nástroje a assety môžeme zaradiť napríklad ilustrácie, PSD zdrojáky, fonty, textúry, gridy, UI kity a mnoho ďalšieho. Iní dizajnéri sa môžu zaujímať o tieto zdroje a budú ich chcieť použiť vo svojich vlastných dizajnových výtvoroch. Pre teba pôjde o ideálny pasívny príjem, nakoľko síce vynaložíš čas na vytvorenie digitálnych produktov, ale potom ich budeš predávať znovu a znovu. Začať je jednoduché, existuje viacero stránok, kde môžeš svoje diela predávať, napríklad Envato Market, Vecteezy, Creative Market a ďalšie.[Image] 4. Navrhuj a predávaj merchPredaj vlastného tovaru je zaujímavý zdroj príjmu najmä ak už máš dostatočne veľké publikum, ktoré ťa sleduje. Najskôr sa teda povenuj budovaniu svojho brandu a followerov. Predaj merchu je v súčasnosti pomerne jednoduchý, využi medzinárodnú službu ako Printify alebo lokálny GoMerch. Ak už máš veľa sledovateľov, za zváženie stojí aj rozbehnúť Patreon či iné formy monetizovania obsahu, napríklad cez affiliate marketing alebo rôzne referral programy.[Image] 5. Vytvor členskú webstránkuAk to s budovaním dlhodobého online podnikania myslíš vážne, skvelou možnosťou je vytvorenie členskej webovej stránky. Môže to byť výhodné najmä vtedy, ak už máš napríklad blog a hľadáš spôsob, ako ho speňažiť. Členská webstránka bude účtovať poplatok (zvyčajne je na mesačnej alebo ročnej báze) za prístup k prémiovému obsahu. Obsahom môžu byť čokoľvek od dizajnových návodov, zdroje na stiahnutie alebo iný zaujímavý obsah pre dizajnérov. Prípadne sa zameraj na úplne iný typ používateľov a ponúkni im pridanú hodnotu, za ktorú sú ochotní platiť. Nie je ľahké začať a chvíľu trvá, kým sa stránka rozbehne a vybuduješ ju, ale ak sa tomu budeš venovať dlhodobo, môže to byť skvelá voľba.[Image] Tipy na záverJe dobré vedieť, čo je tvojou motiváciou pri tvorbe týchto vedľajších projektov. Ak sú to len peniaze, pristupuj k tvorbe organizovanejšie a s obchodným myslením, vyber si vedľajší projekt s potenciálom tvorby príjmu.  Mysli aj na časovú stránku veci a snaž sa spraviť si realistický odhad času, ktorý môžeš vedľajším projektom venovať. Máš na to pár hodín každý týždeň, alebo je to skôr sporadický voľný čas? Pred začatím projektu je teda dobré zvážiť množstvo času, ktoré máš k dispozícii.  Určite ber do úvahy aj priebežné požiadavky, ktoré tiež môžu zhltnúť nejakú porciu času a námahy. Vo všeobecnosti by sa dalo povedať, že grafika, tlačoviny či e-knihy sú dobré pre dizajnérov, ktorí neočakávajú, že budú musieť investovať veľa času na priebežnú podporu a servis. A veci ako šablóny, pluginy, blogy, komunitné webové stránky alebo online kurzy majú síce potenciál vysokého príjmu, ale na druhej strane vyžadujú aj potrebu intenzívnejšej podpory.
Zmena oblohy na fotkách vo Photoshope jediným klikom
Tipy a triky
11.03.2021
Ľudovít Nastišin

Zmena oblohy na fotkách vo Photoshope jediným klikom

Štandardný postup pri zmene oblohy na fotkách si vyžaduje istú zručnosť vo výberoch a maskovaní. Avšak s novým Photoshopom je na scéne aj veľmi zaujímavá funkcia, ktorá tieto časovo náročné postupy zlúčila v podstate do jediného kliknutia. Hovoríme o „Sky Replacement Tool“, ktorý nájdeme vo Photoshope 2021.  V tomto článku sa na túto funkciu pozrieme a ukážeme si to aj na príklade.  Sky Replacement nájdeme v edit>Sky Replacement. Ihneď po otvorení tejto funkcie začne softvér automaticky analyzovať obrázok.[Image] Okamžite potom si sám vytvorí na danom obrázku masku oblohy a vymení ju za inú. Jediným klikom. Tento nástroj využíva Adobe Sensei (umelú inteligenciu spoločnosti Adobe). Je to niečo podobné ako funkcia „Select and Mask“, ktorá je v posledných verziách Photoshopu taktiež veľmi kvalitná.   Asi to nebudeš využívať každý deň, no čas od času sa takáto úloha objaví. A vtedy je dobré o tomto nástroji vedieť, lebo si ušetríš čas. Nastavenie nástroja "Sky Replacement"Je to síce výmena oblohy na jeden klik, no väčšinou to treba trošku doladiť. Najprv si zvolíš obrázok oblohy z ponuky nástroja, ktoré sú v troch priečinkoch: Blue Skies, Spectacular a Sunsets. Máš samozrejme možnosť importovať si tam svoju vlastnú oblohu. Stačí kliknúť na ozubené koliesko v pravom hornom rohu a nájsť možnosť „Import Skies“ alebo cez ikonku + a nahrať si oblohu ako .jpeg súbor. [Image]  Máme tu aj ďalšie nastavenie, o ktorých si treba niečo povedať. Shift Edge – cez tento slider si vieš doladiť okraje výberu a zbaviť sa tak prípadných nedotiahnutých miest, ktoré Photoshop až tak dobre nezvládol.  Refine Edge Brush – pre prípad, že si tvoju pozornosť vyžaduje len nejaká malá časť výberu, máš k dispozícii aj známy nástroj z balíka „Select and mask“, ktorým tiež  vieš dotiahnuť prípadné nedokonalosti.  Fade Edge – tento nástroj umožňuje vytvoriť jemnejší prechod pri horizonte obrázka. Photoshop ale väčšinou urobí robotu veľmi dobre a ďalšie úpravy okrajov nie sú zvlášť potrebné.  Temperature, Brightness a Scale – tieto nástroje upravujú už samotnú oblohu. Väčšinou treba doldiť  je farebnosť, prípadne je príliš tmavá či svetlá. Alebo je nutné oblohu zväčšiť aby sedela s horizontom fotky. Všetko to sa dá upraviť v týchto Sky Adjustments  úpravách.  Foreground Adjustments – máme možnosť doladiť farebne aj samotný obrázok mimo oblohy tak, aby sme celú kompozíciu čo najviac zjednotili.[Image] Keď si s výsledkom spokojný, je treba si ešte stanoviť, akým spôsobom sa má táto úprava aplikovať do obrázka. Je tu možnosť duplikovať vrstvu alebo output do nových vrstiev. Skvelé je, že tento nástroj je nedeštruktívny. Ak si vyberieš si vyberieš output do nových vrstiev, celá úprava sa zobrazí vo klasickej vrstve s maskou a spolu s adjustment vrstvami. Takto máš plnú kontrolu nad výsledkom a prípravu pre ďalšie modifikácie tejto kompozície.  Sú však situácie, kedy ti Sky Replacement pomôže len čiastočne. Jednou z takých môže byť situácia, kedy sa snažíš vymeniť oblohu na obrázku s vodnou hladinou. A tá bude stále odrážať pôvodnú oblohu. V takom prípade bude potrebné tento odraz vyriešiť manuálne. Výhodou však je, že väčšinu potrebných masiek vrstiev už z tohto nástroja máš.  Sky replacement tool je podľa nás skvelý nástroj a aj keď ho nebudeš používať každý deň, v tej pravej chvíli ti pomôže. Jeho ukážku si pozri aj na tomto videu, v ktorom sme sa pohrali so známou bratislavskou scenériou. Vymenili sme oblohu a odstránili všetky postavy. A všetko nám to zabralo len pár minút. 
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
Lambda výrazy v Jave - časť III.
Tipy a triky
03.10.2019
Skillmea

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

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

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

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

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

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