Náš blog

Digitální svět v G-Suitu
Vzdělávání
13.10.2020
Skillmea

Digitální svět v G-Suitu

Žijeme v době, kdy jsou technologie již povinnou součástí našich životů. Postupně jak jsme do tohoto světa vstupovali, tak jsme si nebyli ani vědomi, do jakých rozměrů to naroste a stane se to naší součástí. Pro naše pohodlí jsme zkoušeli různé technologie, které nám usnadňují život a pomáhají řešit problémy. Dostali jsme se do stavu, že využíváme řady programů, které jsou online nebo offline a odebíráme různé novinky či newslettery od různých firem. Najednou jsme se ocitli ve stavu, kdy nás začaly tyto technologie a informace zahlcovat a vyžaduje to z naší strany více času na jejich organizaci. Není důležité, jak to bylo, ale je důležité, co bude a jak s tím naložíme dnes. Z tohoto důvodu vám chci představit G-Suite, mix nejlepších aplikací od Google, který vytvořil léty tvrdé práce s lidmi. Představení G SuiteG Suite nám nabízí řadu nástrojů pod jednou střechou, pod jedním přístupem, vše krásné pohromadě. Usnadňuje organizaci dat, souborů, mailů a ostatních věcí. Kdo G Suite nezná, tady je krátké představení: G Suite je předplatné cloudových služeb a kancelářských aplikací. K tomuto musím zmínit samozřejmě samotný Gmail, který nabízí základní služby G Suite. G-suite je vhodný jak pro jednotlivce, tak pro malé, střední a velké firmy. Gmail a G Suite obsahuje: • Gmail - Mailový server, mailová pošta • Hangouts / Meet - Videokonference • Kalendář • Google Disk • Google Dokumenty • Google Tabulky • Google Formuláře • Google Prezentace Toto vše je v základním balíčku pro Gmail a G Suite. Hlavní rozdíl je v tom, že v G Suite můžete mít vlastní doménu emailu, v Gmailu máte příponu @gmail.com[Image] Přednosti G Suite se objevují při nasazení ve firemním prostředí. Obsahuje: • Archivace emailů a konverzací • Google Sejf  Vault • Google Cloud Search • Správa prostředí • Správa mobilních zařízení Jednoduše vše, co je zapotřebí ve firemním prostředí, ve kterém pracuje více lidí a je důležité mít společné kalendáře, nastavení přístupů do pracovních složek, sdílení jednotlivých dokumentů, plánování, kontrola. Největší výhody G SuiteSpolupracování v reálném čase V dokumentech či tabulkách může pracovat najednou více lidí a to zároveň upravovat dokument, psát k němu komentáře, opravovat jej, editovat. Ukládat a sdílet soubory Ukládáte soubory na Google Disk, který je zálohován a zabezpečen a sdílíte soubory pouze s tím, kým potřebujete, vše máte přesně pod kontrolou. Zabezpečení dat Obsahuje bezpečnostní opatření, dvoufázové ověření, jednotné přihlášení. Při ztrátě zařízení nepřijdete o data. Archivace emailů. a mnoho dalšího. Implementace G SuiteG Suite je ideální řešení pro každého, kdo má rád jednoduchost a potřebuje pracovat v digitálním světě. Vytvářet dokumenty, být propojen s kolegy a sdílet soubory a to vše je možné z jakéhokoli místa na světě, kde máte připojení k internetu. Pokud byste si chtěli takové řešení vybudovat sami, stálo by Vás to mnohem více peněz, než platíte měsíčně Google produktem G Suite. G Suite posouvá své hranice dál a vždy se snaží dodat to, co je zapotřebí. Vzniká mnoho dalších nástrojů jako například: • Apps Script, což je vytváření vlastních příkazů, které se mají zpracovávat či na úrovni makra v tabulkách nebo jiných částí, • Weby, • Google Cloud Platform, který se postará o chod aplikací napojených na mobilní zařízení nebo webové stránky, Google AI, který pomáhá automatizaci, technologie budoucnosti, a mnoho dalšího. Podívejte se na naše videotutoriály a naučte se základy práce s G Suite, pokud máte dotazy napište nám. Pokud uvažujete o implementaci G Suite, oslovte nás a jsme schopni vám pomoci od začátku po úplnou implementaci G Suite do vašeho prostředí. Vyškolíme vás, jak s G Suite nejlépe pracovat.
Rozhovor s novou lektorkou Lindou
Rozhovory
20.09.2020
Skillmea

Rozhovor s novou lektorkou Lindou

Linda Lukačková je profesionální recruiter, který získal řadu projektů za pomoci nástrojů jako barevná typologie a komunikační skills. Své zkušenosti se odrazily na založení vlastní firmy, která je zaměřena na IT-recruitment a odborné školení právě v této oblasti. Rozhovor s Lindou ti přinášíme právě teď. Na začátek nejprve začněme tvou prací. Co děláš?Věnuji se prakticky více profesím současně. Kromě vedení oddělení IT recruitingu, protože jako jeden ze společníků zodpovídám právě za tuto část se věnuji i přípravě školení, lektorství, business coachingu a terapiím. Dá se říci, že moje žlutá osobnost potřebuje mít a zvládá více pobídek, tehdy mě práce baví. A jak ses k recruitingu dostala?Z ministerstva financí jsem přešla do sales v oblasti financí, ale tam si všimli mého talentu pro HR takže jsem začala školit obchodní dovednosti a dělat nábory. Po pár letech jsem přešla do IT recruitingu, kde jsem za 9 měsíců překonala čísla seniorních recruiterů. Rozdíl byl vlastně jen v tom, že jsem využívala zkušeností a techniky z přímého obchodu a z obchodních setkání. Naučit se správně vyhledávat je první krok, ale pak přichází to umění prodeje, protože je naprosto jedno zda člověk nabízí službu nebo pracovní pozici. IT recruiter je vlastně také sales. Co tě nejvíc baví na tvé práci?V podstatě mě na této opravdu náročné práci baví právě to, že vytváříme nejen dlouhodobé spolupráce, ale stávají se z toho dokonce businessová i osobní přátelství. Poznávám zajímavé lidi. Pamatuji se, jak jsme na jedné oficiální akci vedli dluhový rozhovor s fanouškem neuronových sítí a vyměňovali jsme si poznatky jak funguje a učí se neuronová síť a jako například se mozek posiluje o neuronová vlákna tak, že často podvědomě jednáme automaticky, neboť jdeme po tomto vlákně. Pro mě jsou tato lidská spojení opravdu obohacující.[Image] Určitě zažíváš při své práci i vtipné situace. Vypíchni nějaké nejzajímavější.Neustále se mi něco děje. Nejčastěji se mi stane, že si popletu křestní jména, ale to se stává i opačně. Ale mám ráda, když na mé zábavné úvody kandidáti odepíší zábavně zpět. Například jsem nabízela home-office s tím, že člověk může celé dny trávit v zimě v pyžamu. A přišla mi odpověď, že zůstat několik dní v jednom pyžamu přece jen není zdravé pro tělo a pachy ani pro okolí, takže je třeba se alespoň převlékat :D vznikla z toho milá debata. Proč ses rozhodla spolupracovat s Learn2Code?Protože i za svého působení v agenturách ještě jako zaměstnanec mám pocit, že se veškeré vzdělávání v této oblasti soustředí pouze na zvládnutí tzv. zaměstnance. hard-skills, naučit se správně dělat search, naučit se technologie a následně se očekává výkon, ale to kouzlo úspěchu tkví v komunikaci a personal brandingu. Snažím se právě v této oblasti poskytnout ty znalosti, zkušenosti a nástroje, které jsou potřebné pro dlouhodobý úspěch v této oblasti. Learn2Code mi k tomu poskytl skvělý nástroj a opravdu svižnou spolupráci. Já věřím, že ještě spolu vytvoříme několik projektů a toto je jen velmi povedený začátek. Co všechno se člověk naučí ve tvém online kurzu?Tento online kurz se zaměřuje na to, čemu se nevěnuje dostatečná pozornost a to je soft-skills nebo umění prodeje a umění prezentace pozice. A ukazuje jeden z nejefektivnějších nástrojů v komunikaci v sales již od dob antiky. Aristoteles to věděl, Platón to věděl, a my bychom toho měli umět využít. Barevná typologie je nástroj, který využijete nejen v sales, ale i doma u dětí, partnerů, přátel a kdekoli se komunikuje. Pokud se to jednou naučíte využívat budete to umět aplikovat kdekoli. Po jednom mém školení mi jednou přišel feedback, že celý svět je najednou barevnější. Jaké máš plány do budoucna?Neustále zdokonalujeme školení pro sales i IT recruit, neboť vždy přicházejí zajímavé nové příklady, ukázky a zkušenosti. Takže pořád doplňuji a upravuji Hanbook. Chtěla bych připravit školení i na Linkedin Recruiter a dále na budování Personal Brandu právě na Linkedinu s použitím Barevné typologie. Těch plánů je ve vzelávání a coachingu opravdu přede mnou dost a v IT recruitungu právě rozvíjet a budovat to oddělení dál. Krátký odkaz všem čtenářům na závěr.Asi to bude atypický závěr, ale vzpomínám si na jeden příběh z knihy „Báje a pověsti: Egypt, Řecko a Galie“ jmenoval se Čaroděj se slovy. Tento příběh stál za mým uvědoměním si toho, jakou sílu má způsob komunikace pro člověka. Ono je to těch 20% z procesu, ale dokáže vyvolat doslova synergický efekt kde 1+1 je rovné 3. Pokud umíte lidi nejen najít a oslovit, ale také se přizpůsobit jejich stylu komunikace, ten člověk Vám možná nenastoupí na hned první projekt, ale získali jste potenciálního kandidáta do budoucnosti.
Java Files, Path, čtení ze souboru
Vzdělávání
17.09.2020
Skillmea

Java Files, Path, čtení ze souboru

File I/O (Featuring NIO.2)Ve verzi 7 přišel nový balík java.nio, ve kterém je nově uděláno to, co bylo v java.io. Chceš vědět, jak číst soubory (java read file)? Tak musíš vědět, co je to Path a Files. Můžeš používat oba balíčky. Musíš si ale dávat pozor na to, že pokud pracuješ na projektu, kde se používá java 6 a případně níže, tak ti nepůjdou tyto nové věci. Ale uvažujme, že na takových starých projektech nepracujeme a budeme si vysvětlovat věci s použitím tohoto nového balíčku. Budeme si mluvit o základních třídách Path a Files, budeme manipulovat se soubory a složkami a tak podobně. Zde je zajímavý link porovnání funkcionality zmíněných balíků a jaké chyby měla java.io: https://docs.oracle.com/javase/tutorial/essential/io/legacy.html#mapping PathJednoduše řečeno je to linka na soubor nebo na složku v daném operačním systému. Soubory jsou hierarchicky uloženy. Ve windowsu je na vrchu označení disku například C:\home\skuska. V linuxových systémech je root začínající lomítkem / například /home/skuska. Zde můžeme vidět, že ve windowsu a v linuxu se používají úplně jiné oddělovače. Na to je třeba pamatovat. Relativní a absolutní cestaAbsolutní cestu můžeme chápat jako úplnou celkovou adresu nebo cestu na soubor nebo složku. C:\home\skuska je absolutní cesta, která vždy obsahuje root, tedy v tomto případě označení disku C:. Pokud bych ale napsal jen home\skuska\text.txt - tak vidím, že se snažím přistoupit na soubor text.txt, který je umístěn ve složce home a skuska. Ale kde se nachází složka home? Bez dalších informací to nevím a to je relativní cesta. Třída PathZákladní třída v tomto balíčku – používá se aby uchovávala informace o názvu souboru, složkách které jsou použity ke zkonstruování cesty aby bylo možné lokalizovat dané dokumenty nebo složky. Path na windowse je bude odlišná od Path na unixu. Pokud mluvíme o třídě Path, tak můžeme v jednoduchosti říci, že můžeme manipulovat s cestou, která vede ke složkám nebo souborům. Třída FilesTato třída slouží k manipulaci se složkami a soubory. Používá třídu Path. Když přistupujeme k souborům nebo celkově ke zdrojům na disku – tak jsou „otevřené“. Potom s nimi pracujeme a když už s nimi nepracujeme tak musíme zavolat „uzavření“ práce s těmito zdroji, aby je mohl používat někdo jiný. K automatickému uzavření můžeme použít try-with-resources. Práce se souboryMáš Path instanci, která reprezentuje soubor nebo složku. Teď ale stále nevíš, jestli reálně tento soubor nebo složku existuje, jestli se dá z něj číst, zda se do něj dá zapisovat a podobně. Existuje soubor nebo neexistuje, můžu k němu přistoupit? Path path = Paths.get("C:\work\tools\Apache Software Foundation\Tomcat6\logs\service-install.log"); System.out.println(Files.exists(path)); System.out.println(Files.notExists(path)); isReadable(Path) isWritable(Path) isExecutable(Path) Jsou to stejné soubory? isSameFile(Path, Path) mazání souboru Files.delete(path); Vyhodí to výjimku proč se to nepodařilo, pokud se to nepodařilo. Metoda deleteIfExists(Path) také smaže soubor ale pokud soubor neexistuje tak se nevyhodí výjimka.   kopírování souboru Files.copy(source, target, REPLACE_EXISTING);Do metody lze dát varargs options. StandardCopyOption a LinkOption enums jsou podporovány. Všimni si, že pokud dáš ctrl a click na copy metodu, tak je tam CopyOption... options. Potom klikni ctrl na copy option a zjistíš, že je to jen interface, ale v popisu máš napsáno, že umíš použít StandartCopyOption, což implementuje CopyOption.[Image] Tady si můžeš prohlédnout implementace CopyOption rozhraní. Pokud kopíruješ soubor na místo kde se takový soubor již nachází, tak se soubor nepřepíše pokud nezadáš option REPLACE_EXISTING. Složky lze také kopírovat ale zkopírují se prázdné i když v nich byl nějaký soubor. Čtení jsou souboru (read from file)Konečně jsme přišli na kus kódu, díky kterému můžeš číst ze souboru (read from file): Path path = Paths.get("C:\\work\\tools\\Apache Software Foundation\\Tomcat6\\logs\\service-install.log"); List<String> lines = Files.readAllLines(path);
Příběh úspěchu: front-end vývojář na volné noze Patrik
Success stories
12.08.2020
Skillmea

Příběh úspěchu: front-end vývojář na volné noze Patrik

V tomto článku ti představíme dalšího úspěšného absolventa našich online kurzů. Patrik Stodola se aktuálně věnuje frontendu jako freelancer a také rozjíždí vlastní firmu. V rozhovoru se dozvíš, jak se Patrik k webům dostal, jaká byla jeho cesta vzdělávání a co doporučuje začátečníkům v oblasti tvorby webů a programování. Čti dál. Začněme tvou aktuální prací. Co přesně děláš, jaká je tvá pozice?Momentálně pracuji jako externí front-end developer pro více firem, a také vedle toho řeším i své vlastní zakázky. Ještě jako student jsem měl myšlenku vlastní firmy, která by se zabývala kompletní tvorbou webstránek - digitalnydesign.sk, můj vlastní projekt, který také rozbíhám. Jak ses k této pozici dostal?Na střední škole. Dodnes si pamatuji, jak jsme na praxi začali přebírat tvorbu obyčejných, statických HTML stránek. Nevěděl jsem ani „ň“. Vůbec jsem tomu nerozuměl – ale to bylo TO, co mě k tomu přitáhlo. Vždy, když si nevím s něčím rady, dělám to do té doby, dokud se mi to nepodaří. Přišel jsem domů, otevřel youtube a začal jsem se učit pracovat s HTML a CSS podle indických tutoriálů. To byly mé začátky. Později jsem objevil stránku Learn2Code - kurzy Webrebel od autora Yablko, které mi neskutečně pomohly a díky nim jsem si začal přivydělávat už jako student SŠ. Máš nějaký vzor, který tě inspiruje? Osobu, která je pro tebe motivátorem?Ano, mám. Lektor Yablko, jeden z nejlepších programátorů - co se týká znalostí a podání myšlenky divákovi. Kde bereš inspiraci pro svou práci? Máš nějaké tipy, které zaručeně fungují?Když potřebuji načerpat inspiraci, otevírám Instagram nebo Dribble. Pravidelně tam sleduji novinky z oblasti designu a webdesignu, moderní grafické prvky či různé vychytávky, tipy a zajímavé kombinace. V této oblasti je třeba sledovat aktuální trendy, inovace. Jak jsi na tom ty? Stíháš to všechno při práci?Snažím se vzdělávat dennodenně. Za necelý rok a půl jsem se naučil pracovat s HTML, CSS, SCSS, PHP, JS, jQuery. Nedávno jsem si doma dokonce udělal vlastní webhosting, který běží na NUC (miniPC), se kterým mi také pomohl návod na Learn2Code. Čili teď místo webhostingových služeb využívám vlastní hosting. V IT sféře je se vždy co učit .. :-) Čím vším sis musel projít, pokud ses vypracoval na tuto pozici?Ze začátku bylo docela náročné, než jsem se naučil přemýšlet jako programátor. Také si pamatuji na mé první zakázky, které ještě tehdy nebyly tak kvalitně přepracovány jako dnes. Hodně jsem studoval, četl, získával nové informace, ale to nejhlavnější - kódoval a programoval. Co tě nejvíc baví na tvé práci? Máš nějaký oblíbený task, který děláš nejraději?Jen ten pocit že otevírám kód, případně píšu nový mi přináší pocit štěstí. Rovněž mě Velmi baví setkávat se s klienty, komunikovat ohledně práce nebo zakázek. Práce s počítači byla od měla moje záliba a od té doby co jsem se naučil programovat se to jen stupňuje. Dnes je obrovská poptávka po programátorech. Co bys poradil všem, kdo nemají žádné zkušenosti, ale chtěli by nějak začít?Nejprve bych doporučoval naučit se pracovat s HTML a CSS, to je základ všech webových stránek. Později bych jistě doporučil Bootstrap nebo Bulma, to je dnes dost žádané. A pak bych doporučil rozhodnout se, zda se zaměřit na webové stránky, webové aplikace, iOS / Android aplikace nebo různé systémy. (PHP, JS, Python, Java, Swift a mnoho dalších pro různé účely..) Co je podle tebe největší výhodou práce v IT odvětví?Velká výhoda je to, že při práci v IT odvětví můžete pracovat prakticky odkudkoli. Stačí vám notebook, internet a vaše znalosti. Měl jsi někdy pocit, že to nezvládneš? Bylo období, kdy jsi chtěl skončit a dělat něco úplně jiného?Zatím ne, když cítím že je toho dost, vypnu PC, jdu se projít, vyventilovat. Když řeším nějaký programátorský problém, dost účinná je „Duck Duck“ metoda. Jaké jsou tvé plány do budoucna?Moje plány do budoucna jsou takové, že bych chtěl ve větším rozjet projekt digitalnydesign.sk. Vedle toho se soustředím i na další projekty, ale tohle je jeden z těch nejhlavnějších. V případě zájmu o spolupráci mě může leckdo kontaktovat.  Máš nějakou radu, kterou bys chtěl sdílet se studenty, kteří teprve začínají s tvorbou web stránek a programováním nebo se svým vzděláváním v IT oblasti?Doporučuji se pravidelně vzdělávat v jazyce, ve kterém pracuješ. Jistě není naškodu se naučit i něco pomimo, nikdy nevíš, kdy se Ti tvé znalosti sejdou. A hlavně se nikým a ničím nenechat odradit. Patrikovi děkujeme za rozhovor a přejeme mnoho úspěchů v dalším programátorském životě. Pokud máš na Patrika nebo tento rozhovor nějaké dotazy či připomínky, neváhej napsat do komentářů 👇👇
Vyzkoušej si Skillmea na měsíc zdarma 😲
Novinky
04.08.2020
Skillmea

Vyzkoušej si Skillmea na měsíc zdarma 😲

Připravili jsme si pro tebe parádní akci - vyzkoušej si naše online kurzy na 30 dní zdarma. Žádné triky, skryté podmínky. Jednoduše se přihlásíš do předplatného na měsíc a můžeš studovat to, na co máš chuť. Postup aktivace kurzů na 30 dní zdarmaJe třeba jít na stránku https://skillmea.sk/akcia a potom klepnout na OBJEDNAT.[Akcia od Learn2Code]Pokud nejsi u nás zaregistrován, vytvoříš si registraci se svým emailem. Pokud již zaregistrovaný jsi, jednoduše se přihlásíš do svého účtu. Následně se dostaneš na objednávkový formulář a musíš zaškrtnout políčko 'Mám slevový kupón'. A do tohoto políčka vložíš kód “yablko  [V políčku zľavový kód zadaj: yablko]” Voilà, už jen klikneš Vstoupit do kurzu a předplatné máš aktivované. Pak už si jen vybereš kurzy, které chceš studovat. Například půjdeš na stránku https://skillmea.sk/kurzy/online-kurz-javascript-es6 a klikneš Zapsat kurz. Platnost tvého předplatného se zobrazuje ve tvém profilu, můžete si to hezky zkontrolovat. Kód je platný pouze do 31.8.2020. Co všechno na tebe čekáAbsoluj tolik kurzů, kolik jen chceš! Ať už se zaměřuješ na grafiku, weby, video či marketing, vybrat si můžeš z více než 140 online kurzů zahrnujících stovky hodin videa. Tvorba stránek, programování, Excel, ale ani fotografování či střih videa ti už nebudou dělat sebemenší problém 💪 Pojď na to a aktivuj si své předplatné na měsíc ještě dnes, kód je platný do 31.8.2020 👇
Matematické operace v Excelu
Vzdělávání
28.07.2020
Skillmea

Matematické operace v Excelu

Funkce a vzorce jsou možná nejvyužívanější částí Excelu a v tomto blogovém příspěvku se podíváme na nejdůležitější matematické operace. Pomocí matematických operací umíme vypočítat například průměr, maximální či minimální hodnoty, součty. Funkce SUM (Součet)Je to pravděpodobně nejpoužívanější matematická funkce, která jednoduše spočítá hodnoty ve vybraných buňkách, viz obrázek níže. Funkci SUM můžeme použít i pro sčítání normálních čísel. =SUM(9;2;8)funkcia nám dá výsledok 19.[Image] Funkce SUMIF (Součet na základě podmínky)Zajímavou součtovou matematickou funkcí je SUMIF, která spočítá hodnoty s nějakou podmínkou. Například z tabulky níže chceme spočítat „Cenu po slevě“ spolu za všechny objednávky z města Martin. V argumentech funkce SUMIF nás samotný Excel navádí na to, co máme zadat. Boldem jsou zvýrazněny argumenty Kritéria a Rozsah, které spolu souvisí. Kritériem je to, co je naší podmínkou - tedy konkrétně Martin. Rozsah jsou ty buňky, ve kterých umíte najít svá kritéria. Čili označíme sloupec Město. Rozsah souhrnu je to, co chci spočítat - označíme tedy sloupec 'Cena po slevě'. Klepneme OK a dostaneme výsledný součet.[Image] Funkce ROUND (Zaokrouhlování)Funkce Round zaokrouhluje matematicky. Argumenty funkce je číslo, které chceme zaokrouhlit a druhý argument je na kolik desetinných míst chceme dané číslo zaokrouhlit.[Image] Funkce SUBTOTAL (Součtová řádka)Tato funkce se využívá při tvorbě součtových řádků v tabulkách. Jedná se o praktickou funkci, která dokáže nahradit několik dalších funkcí. SUM, COUNT, MIN, MAX a podobně. Její velkou výhodou je, že pokud použijete např. filtr, umožní ti rozhodnout se, co se skrytými řádky. Prohlédněte si obrázky níže, v prvním nemáme použito žádné filtrování a výsledky funkcí SUM i SUBTOTAL jsou shodné. Když se však podíváme na obrázek číslo dvě, ve kterém jsou již použita filtrování, výsledky funkcí SUM a SUBTOTAL jsou rozdílné a správný výsledek nám dává právě funkce SUBTOTAL. Je to právě kvůli tomu, že spočítává jen viditelné hodnoty v buňkách, nikoli hodnoty v buňkách, které jsou skryty.[Image][Image] Funkci subotal si vyvoláme jako každou jinou funkci a její argumenty jsou následující: • Číslo funkce: pokud neznáte přesné číslo funkce, je vhodné si otevřít pomocníka a vyhledat si tu správnou funkci. V našem případě je to číslo funkce 109, protože se jedná o funkci SUM a ignorujeme skryté hodnoty. • Odk1: rozsah, se kterým má naše funkce pracovat, tedy označíme všechny buňky, které má funkce spočítat nebo provést jinou matematickou operaci. Čísla funkcí pro funkci SUBTOTAL: Číslo funkce (zahrnuje skryté hodnoty)Číslo funkce (ignoruje skryté hodnoty)Funkce1101AVERAGE 2102COUNT3103COUNTA4104MAX5105MIN6106PRODUCT7107STDEV8108STDEVP9109SUM10110VAR11111VARP  Average (Průměr)Matematická funkPrůměrce Average (Průměr) vypočítá průměrnou hodnotu z rozsahu buněk. Vyvoláme si funkci a do syntaxe označíme všechny hodnoty, ze kterých chceme vypočítat průměr.[Image] I tuto funkci můžeme modifikovat pomocí IF a tedy použít funkci s podmínkou AVERAGEIF. OdmocninaV Excelu umíte velmi rychle a jednoduše odmocňovat. Existuje k tomu matematická funkce SQRT, která má jen jeden argument a tedy číslo, ze kterého chceme druhou odmocninu vypočítat. Funkci SQRT lze použít pouze pro druhou odmocninu. Chcete-li vypočítat jinou, je třeba použít matematický vzorec Y(1/x) případně funkci POWER(). Pokud se chceš zdokonalit v Excelu, podívejte se na některý z našich Excel online kurzov pro začátečníky alebo pokročilé. Pokud se chceš naučit používat Excel ještě efektivněji, přečti si i náš článek o klávesových zkratkách v Excelu. V dalším blogovém příspěvku se podíváme na dalí zajímavosti z Excelu, zaměříme se na vyhledávací funkce VLOOKUP a HLOOKUP.
Co je nového v Bootstrap 5
Novinky
02.07.2020
Lubo Herkoo

Co je nového v Bootstrap 5

Od poloviny června máme přístup k první alpha verzi Bootstrap 5. Kromě nové verze loga v sexy závorkách {B} se dočkáme i obrovského množství vylepšení na všech frontách. Už samotná dokumentace je ukázkou vylepšeného vzhledu a funkcionalit. Pokud se neumíš dočkat a chceš nový Bootstrap vyzkoušet ASAP, začni tady. Je to stále Alpha verze, nedoporučuji ji proto nasadit do žádného projektu. Než dostaneme první betaverzi, může projít změnami, které Ti vyrobí více práce než pomoci. Toto je "sestřih" nejvýraznějších změn, které jsme popsali přesně pro Tebe. Na míru. [Image] JavaScriptUž žádná podpora pro jQuery, i když..Pro některé killer feature, pro jiné nic podstatného. Nový Bootstrap 5 nebude již obsahovat jQuery jako jednu ze svých závislostí (i přesto, že jQuery „asi“ stále žije a v dubnu letošního roku jsme dostali novou verzi jQuery – 3.5). Víme to už dávno, už jsme se na to jen těšili. Ještě nemáme oficiální konečná čísla, ale očekáváme, že Bootstrap díky této zásadní změně ztratí jak na kilobajtech, tak na milisekundách. Pokud si rozumíme 😉 Pokud však stále jQuery ve svém projektu potřebuješ, Bootstrap o tom bude vědět a všechny komponenty přidá k modulům jQuery. V zásadě to znamená, že stále bude možné inicializovat například Tooltip komponent takovým (starým) způsobem (v případě, že Bootstrap detekuje přítomnost jQuery): $('[data-toggle="tooltip"]').tooltip(); Button pluginZměnami projde i state-management tlačítek. Ty využíváme například i jako indikátory ZAP/VYP při různých funkcionalitách našich aplikací. Ve starších verzích Bootstrap stav tlačítka řešil JavaScript. Bootstrap 5 se snaží state-management řešit v co nejvyšší míře dostupnými funkcionalitami a elementy HTML a CSS. Výsledkem tak je manažování stavu tlačítka pomocí checkbox a radio elementů. Naše ZAP/VYP tlačítka tak budou o něco spolehlivější mezi různými platformami. CSSCSS proměnnéS koncem podpory pro Internet Explorer přicházejí i nové možnosti. Jednou z nich jsou i CSS proměnné. Ty jsme spatřili již v předchozí verzi (root variables), avšak ne v takovém rozsahu jako ve verzi 5 – kde se css proměnné dostaly už i do jednotlivých komponent. Například do tabulek: .table { --bs-table-bg: #{$table-bg}; --bs-table-accent-bg: transparent; --bs-table-striped-color: #{$table-striped-color}; --bs-table-striped-bg: #{$table-striped-bg}; --bs-table-active-color: #{$table-active-color}; --bs-table-active-bg: #{$table-active-bg}; --bs-table-hover-color: #{$table-hover-color}; --bs-table-hover-bg: #{$table-hover-bg}; // Styles here... } Výhodou CSS proměnných je jejich používání bez nutnosti zkompilování SASS kódu do CSS. Takto bude možné hodnoty některých proměnných měnit v přímo Inspectoru prohlížeče, což urychlí práci například při prototypování. V Bootstrap 5 stále zůstane možnost definice proměnných v SASS (_variables.scss) souborech, tak, jak jsme to dělali dosud. Osobně bych neočekával kompletní přechod ze SASS proměnných do CSS proměnných. SASS má stále svou nenahraditelnou roli při vytváření proměnných pomocí mapování, proto očekávám, že budeme mít k dispozici kombinaci SASS proměnných s CSS proměnnými iv budoucnosti. Vylepšený gridZískáme nový grid-tier pro obrazovky o šířce větší než 1400px - .col-xxl-. Rovněž mezery mezi jednotlivými sloupci gridu budou nově "ohebnější". Získáme novou css utilitu g pro naše .row. S gutter hodnotami takto bude možné pracovat podobně jako s margin a padding hodnotami, na co jsme si již zvykli: .g-2 .gx-2 .gy-2 .g-lg-2 .g-0 FormulářeOd verze 4 jsme mohli ve svých aplikacích používat checkbox, radio a file elementy dvěma způsoby: 1. Buď jsme použili původní, systémový vzhled (poskytnutý browserem), 2. nebo jsme použili nový vzhled (custom-checkbox, custom-radio). Verze 5 bude obsahovat už jen nový vzhled těchto prvků. Formuláře tak budou vypadat rovněž v každém prohlížeči a operačním systému a přizpůsobení vzhledu těchto komponentů bude stejně jednodušší. Rovněž bude odstraněn i potřebný .form-group wrapper. Nové formuláře již budou obsahovat jen jednotlivé form elementy, bez tohoto DIV elementu. Hurá! Méně kódu! 🙂 <form> <div class="mb-3"> <label for="exampleInputPassword1" class="form-label">Password</label> <input type="password" class="form-control" id="exampleInputPassword1"> </div> ... </form> Wrapper bude potřebný pouze pro custom elementy (.form-select, .form-check, .form-file) a také .form-group. Utilities APIUtility jsou velmi užitečné CSS třídy, kterými obvykle měníme parametry rámování, barev, způsobů zobrazení, stínování a různých velikostí (width, height, padding, margin,...). V praxi se občas stává, že se nevejdeme do předdefinovaných utilit, které jsou součástí Bootstrap-u. Proto jsme někdy vytvářeli vlastní třídy. Například pokud nastavujeme šířku nějakého elementu, máme k dispozici takové css třídy: .w-25 /* 25% */ .w-50 /* 50% */ .w-75 /* 75% */ .w-100 /* 100% */ .w-auto /* auto */ Pokud jsme potřebovali 33% width, 90% width, nebo jiné hodnoty, vytvořili jsme vlastní CSS třídy, udělali override na $sizes mapu v nějakém vlastním souboru, nebo jsme nebodaj editovali přímo $sizes mapu v souboru proměnných _variables.scss. Ve verzi Bootstrap 5 máme k dispozici čistší a užitečnější SASS nástroj, jak modifikovat stávající, nebo přidat nové utility do našeho projektu, tématu nebo pluginu pro Bootstrap - utilities API: $utilities: map-merge( ( "width": ( property: width, class: w, values: ( 33: 33%, 90: 90% ) ), "input-padding": ( property: padding, class: ip, values: ( 0: 0, 1: .3rem, 2: .5rem, 3: .7rem, 4: .9rem, 5: 1rem, ) ) ), $utilities); Výsledkem takového kódu budou nové css třídy utilit: .w-33 /* nastaví width na 33% */ .w-99 /* nastaví width na 90% */ .ip-1 /* nastaví padding na .3rem */ .ip-2 /* nastaví padding na .5rem */ .ip-3 /* nastaví padding na .7rem */ .ip-4 /* nastaví padding na .9rem */ .ip-5 /* nastaví padding na 1rem */ Ostatní vylepšeníIkonyS alpha verzí Bootstrap 5 přichází také pátá alpha verze Bootstrap Icons. Je to sada více než 1000 ikon, které jsou nadesignovány tak, aby parádně ladily s Bootstrapem. Nifty funkcionalita je také SVG sprite, která nám umožňuje vytvořit vlastní mapu SVG ikon a efektně ji používat v projektu, aniž bychom kód špinili samotným SVG zdrojovým kódem. <svg class="bi" width="32" height="32" fill="currentColor"> <use xlink:href="bootstrap-icons.svg#heart-fill"/> </svg> Osobně jsem velkým fanouškem Fontawesome ikon, které obsahují kromě enormně většího množství ikon a jejich variant i velmi užitečné způsoby integrace do projektů. Fontawesome nejsou však dostupné zdarma, proto možná v dalším projektu i my v learn2code zvážíme integraci s Bootstrap ikonami. DokumentaceUž na první pohled je vidět, že dokumentace prošla změnami. Ty však nejsou jen vizuální, ale vylepšen je i samotný obsah. Orientace mezi sekcemi je díky novému postrannímu jménu rychlejší. Jednotlivé sekce obsahují také jakési "overview", které postupně přibývají do každé hlavní sekce dokumentace. I tyto změny urychlují navigaci v dokumentaci a hledání požadované informace je takto rychlejší. BarvyPřibyly také nové barevné odstíny a vylepšen bude také jejich kontrastní poměr. ZávěrTento text není a ani nechtěl být kompletním diffem verze 4 s novou verzí 5. Mnohem více novinek najdeš ve stále rostoucí dokumentaci k Bootstrap 5. Pokud jsem na něco důležitého zapomněl, klidně se ozvi v komentáři.
Již 4 000 dětí se zúčastnilo webinářů STEM Kindloteka
Vzdělávání
30.06.2020
Skillmea

Již 4 000 dětí se zúčastnilo webinářů STEM Kindloteka

Společnost Amazon začala ve spolupráci se sdružením Learn2Code v dubnu, během pandemie a povinné karantény, bezplatné online webináře STEM Kindloteka pro děti. Tato iniciativa probíhala současně v Česku i na Slovensku. Amazon chtěl touto iniciativou pomoci dětem, jejich rodičům a učitelům v náročném období, během kterého byly školy zavřené. Od konce dubna až do konce června sdružení Learn2Code s podporou společnosti Amazon připravilo 39 bezplatných webinářů, kterých se v obou zemích zúčastnilo 4 000 dětí v přímém přenosu. Dodatečně měli webináře na kanálu YouTube téměř 6 500 vidění. Odezva od rodičů i dětí byla velmi pozitivní. „Syn je nadšený, Scratch-u se věnuje každý den a vaše webináře jsou super. Nestíhá je sice dívat živě ale druhý den je dívá na youtube a moc ho to baví!“ Říká paní Lenka, máma 9 letého účastníka. Vyjádření syna bylo velmi stručné ale výstižné: "Je to zábava a chci se přihlásit i na další kurz." Webináře probíhaly dvakrát týdně až do konce června. Během webinářů se děti učily programovat v programovacím jazyce Scratch i velké hry. Flappy Bird, Pacman, Super Mario a další. Děti se na nich učily vše od začátku až po složitější příkazy. Po každém webináři obdrželi účastníci jeho videozáznam, zdrojové kódy, obrázky i řešení. Naše webináře sledovali i učitelé, pro které se staly pomůckou. „Já jsem byla velmi spokojená s webináři, hodně jsem se naučila a účastí na nich jsem získala nové dovednosti a cenné metodické materiály,“ hodnotí webináře Mária Vitikáčová, učitelka ze ZŠ Bukovecká v Košicích. „Super je archiv a videonahrávky, ke kterým se můžeme kdykoli vrátit,“ dodává. Účastníci měli možnost připojit se přes nástroj Zoom, v případě, že se chtěli aktivně zapojovat, nebo přes YouTube, pokud chtěli webinář jen online sledovat. Všechny webináře si mohou i nadále prohlédnout na YouTube kanálu Learn2Code. „Spolu bylo zrealizováno téměř 40 webinářů, které si děti hned oblíbily. Aktivně se do našich online setkání zapojovali. Kladli spoustu zvědavých otázek,“ řekl Marián Kristeľ marketing & operations z Learn2Code. „Každé lekce se zúčastnilo průměrně přes 100 dětí.” Spolupráce mezi Learn2Code a společností Amazon zahrnovala také poskytnutí všech online kurzů pro děti od Learn2Code od poloviny dubna do konce června bezplatně. I tato aktivita zaznamenala velký úspěch. Na tyto kurzy se od spuštění spolupráce přihlásilo více než 2000 uživatelů. Jelikož spolupráce mezi Learn2Code a Amazonem zaznamenala úspěch, připravili společně i další formát, tentokrát pro rodiče a učitele. V speciálním videu s Lucií Šickovou, spoluzakladatelkou světově úspěšné slovenské firmy Pixel Federation, která tvoří počítačové hry vysvětlili, jaký význam může mít programování ve výchově a rozvoji dětí. Lucie Šicková je zároveň mámou tří malých dětí. Zabývali se tedy i tématy, jakou školu a proč navštěvují její děti, zda a kolik se s dětmi učí a jak se to změnilo během domácí karantény, zda ověřené tipy, co ve výchově funguje. „Jelikož koronakrize odhalila různé nečekané otázky ohledně vzdělávání a výchovy dětí, rozhodli jsme se podpořit i takový formát pro rodiče a učitele. Věříme, že to bude pro rodiče užitečné,“ řekla Miroslava Jozová, PR manažerka Amazon pro ČR a Slovensko.
Studijní plán pro budoucího Java programátora
Vzdělávání
19.06.2020
Skillmea

Studijní plán pro budoucího Java programátora

Rozhodl ses, že se staneš Java programátorem. Dobrá volba. V následujících řádcích si přečti, kde začít, co budeš potřebovat a jak dosáhnout své vysněné mety. V tomto článku se nebudeme věnovat definici programování ani tomu, který programovací jazyk si zvolit. Budeme předpokládat, že ses z jistých důvodů rozhodl právě pro Javu. Těmi důvody může být například: • popularita Javy v programátorském světě • poptávka po Java programátorech na trhu práce • chceš naprogramovat Javovskou webovou nebo desktopovou aplikaci slyšel jsi, že Java je vhodná pro začátečníky v programování Popularita jazyka JavaPodle indexu PYPL je Java druhým nejpopulárnějším jazykem na světě. Žebříček PYPL je sestavován podle toho, jak často jsou tutoriály daného programovacího jazyka vyhledávány na Googlu. I podle jiného indexu, TIOBE je Java druhá v žebříčku popularity, takže vybral sis správně.[Image] Poptávka po Java programátorechPoptávku po Java programátorech zjistíš z pracovních portálů, například. na Profesia.cz, robime.it nebo dalších. V době psaní tohoto článku bylo na Profesi více než 120 nabídek při zadání pozice "Java programátor" (z celkových 480 programátorských pozic). Když si tedy vybíráš programovací jazyk, je důležité, aby i firmy v něm dělaly své projekty, abys měl z dlouhodobého hlediska dostatek příležitostí. Java tuto podmínku bez problémů splňuje. Co chceš programovat?V Javě lze programovat desktopové i serverové aplikace, vytvářet dynamické webové stránky, lze je používat pro přístup k datům, umožňuje realizovat složité distribuované výpočty a mnoho dalšího. Jevu využiješ i při programování Android aplikací, takže její využití je téměř neomezené. Jazyk vhodný pro začátečníky?Java je tady s námi už pěkně dlouho, takže existuje mnoho zdrojů ke studiu, ať už ve formě online kurzů, knih nebo jiných možností. Java programátorů je také dostatek, takže pravděpodobně nebudeš mít problém sehnat někoho na mentoring, rozhodnete-li se jít touto cestou. Java odvozuje svou syntaxi z jazyka C a mnoho dalších jazyků také odvozuje svou syntaxi z jazyka C. Takže když se naučíš Javu, ovládnout jazyky jako C#, C++ nebo JavaScript bude jednodušší. Java je objektově orientovaný jazyk, tyto základní koncepty tedy umíš přenést i do jiných jazyků. V Javě existuje spousta různých knihoven - grafika, sockety, a mnoho dalšího. Naučit se Javu je relativně jednoduché, umíš ji využívat ve světě desktopových nebo webových Java aplikací, ale také ve světě mobilních Android aplikací. Jevovský kód jednou zkompiluješ a běží všude (díky JVM!). Java má i své nevýhody, jako například. to, že píšeš velmi mnoho kódu. Příklad, když chceš něco vypsat, v Javě to zapíšeš: System.out.println(“Hello”); V Pythonu by stačilo napsat jen print(“Hello”). PeniazeKolik vydělávají Java programátoři? Podle portálu platy.sk je to v rozmezí 1350 až 2765 Eur. Záleží na tvých znalostí, let praxe, projektů za sebou, regionu a dalších proměnných. Studijní Java plánJava základyNejprve se nauč úplné základy jazyka Java. Potřebuješ vědět, co je to třída, co je to metoda, co je proměnná, jak se píší příkazy, co je terminál, výpis, podmínka, cyklus, jak pracuje Java s pamětí a jiné základní znalosti. S těmito základy umíš psát jednoduché příkazy a trénovat. Doporučujeme ti vyzkoušet náš online kurz Java pro začátečníky, který máš k dispozici zdarma. Java pokročilýPo zvládnutí základů přistoupíš k pokročilým částem jazyka jako jsou výjimky, OOP (objektově orientované programování), práce s Java třídami, rozhraní, rekurze, funkcionální programování pomocí Lambda výrazů, stream API, anotace, reflexe, kolekce, generické programování a podobně. Je toho dost, pro úspěšné zvládnutí zákoutí Javy si namixuj tento koktejl našich kurzů: 1. Java a OOP pro začátečníky 2. Java pro pokročilé SQLVelké množství aplikací pracuje se databázemi. Abys i ty v aplikacích uměl správně používat databázi, musíš se naučit základy jazyka SQL. Pomocí SQL příkazů umíme z databáze číst data, zapisovat data, měnit data, nebo je mazat. Když budeš studovat jak pracovat v aplikacích s databázemi, setkáš se s pojmem CRUD. To není nic jiného než create, read, update a delete. Tedy základní operace. Yablko udělal online kurz na SQL databázy MySQL a SQLite, jsou v něm vysvětlovány i základy samotného SQL-ka, tak si to nastuduj. GitPři práci na projektech musíš mít přehled o změnách ve tvém nebo kolegovém kódu. V průběhu času budeš mít určitě spoustu verzí svého programu. Jako programátor budeš pracovat v týmu. Každý bude pracovat na své části programu a poté si tyto své verze sloučíte dohromady. Nejen pro tyto úkoly budeš používat Git. Git je nejrozšířenější verzionovací nástroj a určitě stojí za to naučit se jej používat. Každý programátor musí umět pracovat s Gitem, nauč se to i ty pomocí tohto online kurzu. Java junior programátorNa závěr tvého vzdělávání v Javě nesmíš vynechat témata jako Maven, Servlety a ORM - JPA (Hibernate). Když se ti do hlavy dostanou i tyto pojmy, je z tebe junior programátor. Online kurz pro aspirující Java junior programátory najdeš zde. Bonus: Spring framework + Spring BootAby se ti se vším pracovalo snadněji a chceš přeskočit pár kroků v přípravě aplikace, chceš mít po ruce spoustu pomocných technologií, tak určitě sáhneš po Spring frameworku. Spring je nejpoužívanější javovský vývojářský framework současnosti. Pokud si otevřeš pracovní nabídky zaměřené na Javu, tak tam téměř určitě najdeš požadavek, abys ovládal Spring. Spring usnadňuje enterprise java vývoj, což jej činí první volbou u projektů libovolné velikosti. Vývoj Springu začal, když bylo velmi komplikované začít vyvíjet enterprise aplikace v enterprise edici jevy. Tvůrci Springu toto využili a vytvořili nástroj, který je vysoce používaný a usnadňuje spoustu věcí. Tento blog měl za cíl představit ti jazyk Java a ukázat, co všechno potřebuješ jako příští Java programátor vědět. Kromě Javy je to SQL, Git a ideální také Spring framework. Stát se Java programátorem se ti může jevit jako nedosažitelná meta, opak je ale pravdou. Java od začátku navrhovaná tak, aby tvá křivka učení byla pokud možno co nejstrmější.
Eratostenovo síto
Vzdělávání
30.05.2020
Skillmea

Eratostenovo síto

V předchozím blogujsme se zabývali prvočísly. Ukázali jsme si ukázku programu, který rozeznal, zda zadané číslo je prvočíslem nebo ne. Dnes bych vám chtěl na konkrétním příkladu ukázat, jak řeší podtitulek tohoto blogu a tedy zjistit prvočísla na definovaném intervalu přirozených čísel, přičemž horní hranici intervalu bude zadávat uživatel. Spodní hranicí intervalu bude 0, která samozřejmě není prvočíslem a to z toho důvodu, že prvočíslo je dělitelné číslem 1 a sebou samým. Z toho vyplývá, že 0, i když je dělitelná číslem 1, není dělitelná 0, protože výraz 0/0 není definován. Přestože by si někdo myslel, že výsledek by mohl být roven číslu 1, není tomu tak. Nula prostě nemůže dělit žádný výraz. Pojďme teď trochu dál. Už v minulém blogu jsem vyvodil závěr, že ani 1 není prvočíslo a to proto, že je dělitelné 1 a sebou samým, což je opět číslo 1. A 1 a 1, nejsou dva různé faktory. Podmínka, která vylučuje, že 0 a 1 nejsou prvočísla, je samozřejmě v mém programu ošetřena. Co ale ostatní čísla, která se nacházejí na intervalu, jehož horní hranici zadal uživatel. Na tuto otázku nám přímo dá odpověď jednoduchý algoritmus, který nese název Eratostenovo síto. Eratostenes z Kyrény byl mimo jiné řeckým matematikem, který působil v dávné Alexandrii přibližně 280 let. před Kristem. Kromě toho, že vypočítal obvod země, definoval také algoritmus, který jsem pro vás implementoval ve vyšším programovacím jazyce C++. Předtím, než si detailně rozebereme program napsaný v jazyce C++, si algoritmus ukážeme na následujících přirozených číslech: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19. Máme tedy posloupnost, která je na začátku definována číslem 0 včetně a na konci číslem 20, které se nachází již mimo intervalu posloupnosti. A to je právě ta horní hranice, která byla výše zmíněna. Umístíme tuto posloupnost do jednořádkové tabulky, která v mém programu bude reprezentována vektorem celých čísel (vektor typu int). Jako poznámku chci dodat, že budeme tedy používat třídu knihovny STL, kterou je vektor. Vektor je entita, z níž se lépe manipuluje než s polem. Právě proto je tento článek určen těm čtenářům, kterým je alespoň poněkud známá problematika vektorů. Těm, kteří nejsou obeznámeni s problematikou vektorů, doporučuji nejprve prostudovat typ size_t, třídu vector a členskou metodu třídy vector push_back(). Potom se s elánem mohou tito čtenáři pustit do tohoto blogu. Ale zpět k našemu definovanému problému. Mějme tedy zmiňovanou posloupnost:[Image] V této tabulce vyznačme modrou barvou skutečnost, že 0 a 1 nejsou prvočísla:[Image]K indexům, na kterých se nacházejí čísla 0 a 1 se už tedy nebudeme vracet. Pojďme se podívat na číslo 2. O tomto čísle víme, že je nejmenší prvočíslo na tomto intervalu, což je prvotní podmínkou k tomu, abychom vyřešili podtitulek tohoto blogu. Ostatní prvky (čísla) posloupnosti budeme testovat Eratostenovým sítem – to znamená, že budeme nyní odstraňovat násobky čísla 2. Jelikož číslo 3 není násobkem čísla 2, projde Eratostenovým sítem. Zaznačme tedy do tabulky násobky čísla 2 červenou barvou.[Image]Vidíme, že v jednom kroku odstranil algoritmus (Eratostenovo síto) čísla 4, 6, 8, 10, 12, 14, 16 a 18. Zároveň se již nebudeme žádným způsobem vracet k indexu čísla 2. S předchozí tabulky je také očividné, že číslo 3 je prvočíslem. Pojďme nyní odstranit z tabulky jeho násobky a zaznačme tuto skutečnost zelenou barvou.[Image] V dalším kroku nám algoritmus odstranil číslo 6, 9, 12, 15, 18, které prvočísly nejsou. Ano, zelenou barvou jsme označili i některá čísla, která byla v předchozím kroku odstraněna násobkem čísla 2. To však nemění nic na skutečnosti, že tento krok nám odstranil z posloupnosti další čísla, kterými jsou čísla: 9 a 15. Po provedení zmiňovaného kroku vidíme , že číslo 5 zůstalo vyznačeno žlutou barvou. Číslo 5 je tedy prvočíslo, protože prošlo Eratostenovým sítem. Když bychom v následujícím kroku odstranili násobky čísla 5. zjistíme, že již byla čísla 10 a 15 odstraněna násobkem jiného čísla. Kdy tedy algoritmus skončí? Bude to tehdy, dokud se skutečně nedostaneme k číslu 19. Číslo 19 už nemá za úkol odstraňovat žádný násobek, protože se za ním v naší tabulce nic nenachází. Dosažení jeho indexu určitou interační proměnnou je podmínkou pro skončení algoritmu, ačkoli se již ve stavu prvočísel nebo odstraněných čísel nic nemění. Vyberme nyní všechna čísla označená žlutou barvou z naší tabulky:[Image] Zůstanou nám čísla, která jsou zajisté prvočísly. A tak jsme se dostali k výsledku našeho algoritmu, kterými jsou čísla 2, 3, 5, 7, 11, 13, 17 a 19. Pro kontrolu si můžete porovnat tato čísla s prvočísly uvedenými v jiných zdrojích, ale určitě dostanete tentýž výsledek. Pojďme nyní do detailu rozebrat následující zdrojový kód napsaný v jazyce C++, který je implementací verbálního vysvětlení algoritmu uvedeného výše. Jazyk C++ nám nabízí další možnosti, jak zefektivnit výpočet. Jsou to například. skoky v programu, které můžeme provést pomocí klíčových slov break a continue. Ale k tomu později. Pojďme pěkně popořadě od prvního řádku. Na řádku 1 máme direktivou preprocesoru přidaný hlavičkový soubor iostream.h. To znamená, že do tohoto řádku se vloží obsah souboru iostream.h. Podobně máme na řádku 2 a 3 vloženy stejnou direktivou hlavičkové soubory vector.h a string.h. Na řádku 4 je deklarováno, že budeme v celém zdrojovém kódu, který tvoří jeden soubor používat jmenný prostor std a tudíž jej nemusíme explicitně ve funkci main volat, když budeme z něj potřebovat nějakou třídu nebo objekt. Příkladem mohou být objekt cin nebo cout. Na řádku 6 definujeme funkci main a následně na řádku 7 začíná její tělo. Na řádku 8 deklarujeme proměnnou integrálního typu a to konkrétně char s identifikátorem proměnné c_end. Tato proměnná reprezentuje jeden znak, který rozhodne o tom, zda se vnější smyčka po provedení vlastního algoritmu Eratostenova síta ukončí nebo ne. Právě proto je na řádku 89 vyzván uživatel, aby stiskl klávesu a nebo n. Pokud potlačí n, program pokračuje dalším cyklem while smyčky. Pokud potlačí jinou klávesu program skončí. Na řádku 9 je definována nová instance třídy string s identifikátorem sz, která je inicializována na prázdnou hodnotu. Za touto inicializací je na řádku 10 uvedena deklarace proměnné iSZ na typ int bez další inicializace. Na řádku 11 deklarujeme proměnnou typu bool, která bude v programu uchovávat informaci, zda uživatel na výzvu programu odpověděl zadáním validní hodnoty (tedy hodnoty integer), která se bude uchovávat v proměnné iSZ. Pokud uživatel zadá platnou vstupní informaci z okna konzolové aplikace, proměnná is_size_t se nastaví na true, v opačném případě (pokud tedy uživatel nezadá platnou hodnotu z rozsahu integer) proměnná is_size_t se nastaví na hodnotu false. Proměnná is_size_t je na řádku prvotně inicializována na hodnotu false. To reprezentuje stav, že proměnná iSZ nebyla ještě inicializována a to je ve skutečnosti pravda. Na řádku 13 je uvedeno klíčové slovo do. To znamená, že začíná tělo smyčky do while, ve které je jako podmínka uvedena komparace obsahu proměnné c_end se znakem n (viz. řádek 95). Když program přejde dál, dostane se na řádek 14, které otevírá tělo zmíněné smyčky do while, za kterou na řádku 15 začíná smyčka while, což znamená smyčka s podmínkou na začátku každého cyklu. Právě zde se program ptá (srovnává), zda je v proměnné uložena hodnota false. Pokud ano, program pokračuje kladnou větví a vyzve na řádku 17, aby uživatel zadal horní hranici Eratostenova síta. Tato hodnota nebude brána v úvahu při testování čísla na prvočíslo. Na řádku 18 se vstup zadaný uživatelem načte do proměnné (objektu) sz, která je novou instancí třídy string. Načtení proběhne pomocí metody getline(), která má dva parametry a to objekt cin a objekt sz. Na řádku 20 následuje blog kódu try a catch, které slouží k rozpoznání validity hodnoty zadané uživatelem do objektu sz. Ve větvi try se program pokouší konvertovat hodnotu v objektu sz na hodnotu celého čísla, které reprezentuje délku intervalu, na kterém hledáme Eratostenovým sítem všechna prvočísla. Pro tuto konverzi se použije funkce stoi, což ve zkratce znamená string to integer (v českém jazyce string na integer). Po konverzi se na řádku 24 ještě testuje, zda uživatel nezadal na vstupu číslo 0. Pokud ano program nastaví proměnnou is_size_t na hodnotu false a skočí pomocí příkazu continue na opětovně vyhodnocené podmínky dalšího cyklu smyčky while. Jelikož v proměnné is_size_t je opět false program pokračuje ve smyčce while, kdy na řádku 17 je uživatel znovu vyzván k zadání horní hranice intervalu Eratostenova síta. Takto může být program zacyklen, dokud uživatel nezadá platnou hodnotu na vstupu konzolové aplikace. Pojďme se podívat nyní na to, když uživatel nezadá hodnotu z rozsahu integrálního typu (např. neplatnou hodnotu „hsfu“). Již asi tušíte, že se nejedná o hodnotu integrálního typu, ale o nesmyslné znaky, které sice může uživatel zadat, protože tyto hodnoty lze přiřadit typu string, ale konverze této hodnoty na hodnotu typu integer se nezdaří. Právě proto je v našem programu umístěn na řádku 34 blok catch, kteří tuto výjimku zachytí. A co se vlastně stane dál? No totéž, co v případě zadání 0, to znamená, že se nastaví hodnota false do proměnné is_size_t a program skočí pomocí příkazu continue na začátek smyčky while, kde sa znovu v podmínce vyhodnotí, zda má pokračovat výzvou uživatele k zadání validní hodnoty horní hranice Eratostenova síta, a jelikož je negace hodnoty v proměnné is_size_t true, program i tak učiní. A takto bude program dokola vyzývat uživatele k zadání platné hodnoty. V případě, že uživatel zadá platnou hodnotu, program skočí do větve try, kde pak skočí do záporné větve příkazu if (klauzule else na řádku 29), kde se již hodnota is_size_t nastaví na true. Tím pádem program v tomto cyklu vyskočí ze smyčky while, protože již nesplňuje podmínku pro další provedení cyklu. Když uživatel zadal platnou horní hranici Eratostenova síta, může se tato informace použít k alokaci vektoru o délce iSZ (alokace vektoru s identifikátorem vNumberVektor), což je implementováno na řádku 41. Na řádku 42 je alokován vektor o délce 0 (vektor s identifikátorem) . Do tohoto vektoru budeme ukládat prvočísla, která projdou Eratostenovým sítem. Délku 0 má vektor proto, že je možné do něj přidávat prvočíslo po prvočísle, až když část algoritmu učiní rozhodnutí, zda číslo, které se vybírá z vektoru vNumberVektor je prvočíslem nebo ne. Na řádku 44 začíná for smyčka, která je ve svých jednotlivých cyklech řízena iterační proměnnou i, která se v každém cyklu inkrementuje, dokud nedosáhne hodnoty iSZ. Tato for smyčka ve svém těle naplňuje vektor vNumberVektor čísly od 0 po 19 (protože horní hranice, kterou jsme vymezili v ukázce je 20). Vlastní algoritmus Eratostenova síta začíná na řádku 49, kde je iterační proměnná na začátku cyklu inicializována na hodnotu 2. Proč je tomu tak? Protože na prvních dvou indexech vektoru (index 0 a 1) jsou uložena čísla 0 a 1 a ta nepatří do množiny prvočísel. Toto je základní idioma, kterou je třeba si uvědomit. Kdybychom totiž dělili nulou, program by vyhlásil chybu. Kdybychom dělili jedničkou, nedostali bychom nic jiného než původní číslo. Právě proto se testují pouze čísla od hodnoty 3. Proč od 3, když iterujeme od 2? Jedná se o prvotní podmínku, kterou jsem zmiňoval. Pokud tedy číslo na indexu 2 se bude rovnat 2, přidáme toto číslo do vektoru vPrimeVektor, protože o něm víme, že je nejmenší prvočíslo. Ostatní čísla už budeme testovat, to znamená, že pokud bude index větší nebo roven 3, program testuje konkrétní číslo tak, že dělí toto číslo čísly uloženými ve vektoru vPrimeVektor (což jsou prvočísla) se zbytkem. To znamená, že bere v úvahu zbytek po dělení čísla prvočíslem. Pokud je tento zbytek po dělení různý od nuly, našli jsme další prvočíslo a to uložíme za vnitřním cyklem řízeným iterační proměnnou j (k tomu nám poslouží proměnná typu bool, do které při nalezení prvočísla uložíme hodnotu true, která indikuje tento stav), do vektoru vPrimeVektor, který reprezentuje hledaná prvočísla. Uložíme jej na poslední index pomocí metody push_back, což nám zároveň zaručuje uspořádání hledaných prvočísel od nejmenšího po největší. Pokud by byl zbytek po dělení roven nule, testované číslo není prvočíslem a to znamená, že nastavíme proměnnou flag na false, skočíme pomocí klíčového slova break na konec for smyčky (iterační proměnná j). Do vektoru vPrimeVektor se v tomto případě nic neuloží, protože v proměnné flag je uložena hodnota false. vnější smyčka for se ukončí, když jsou otestována všechna čísla uložená ve vektoru vNumberVektor. Posledním testovaným číslem je tedy číslo 19. Po otestování všech čísel následuje zápis prvočísel do okna konzolové aplikace (viz. řádek 78 až 83), k čemuž využijeme objekt cout a smyčku for. K zápisu samozřejmě patří také přechod kurzoru na nový řádek na řádku 85. Potom se do okna konzolové aplikace zapíše výzva, kterou se program uživatele ptá, zda chce program ukončit nebo ne. Pokud uživatel stiskne klávesu n, program pokračuje a uživatel je vyzván k opětovnému zadání horní hranice Eratostenova síta s tím, že do proměnné is_size_t se opět uloží hodnota false. Pokud by uživatel potlačil jinou klávesu (což znamená ukončení programu), program skočí za vnější smyčku while na řádek 97, funkce main vrátí operačnímu systému 0 a celý program končí. Připomínám, že na řádku 98 je pravá programová závorka, která uzavírá tělo funkce main. Výpis programu main.cpp 1: #include <iostream> 2: #include <vector> 3: #include <string> 4: using namespace std; 5: 6: int main() 7: { 8: char c_end; 9: string sz = ""; 10: int iSZ; 11: bool is_size_t = false; 12: 13: do 14: { 15: while (!is_size_t) 16: { 17: cout << "Nacitaj hornu hranicu Eratostenovho sita: "; 18: getline(cin, sz); 19: 20: try 21: { 22: iSZ = stoi(sz); 23: 24: if (iSZ == 0) 25: { 26: is_size_t = false; 27: continue; 28: } 29: else 30: { 31: is_size_t = true; 32: } 33: } 34: catch (const std::exception&) 35: { 36: is_size_t = false; 37: continue; 38: } 39: } 40: 41: vector<int> vNumberVector(iSZ); 42: vector<int> vPrimeVector(0); 43: 44: for (int i = 0; i < (int)vNumberVector.size(); i++) 45: { 46: vNumberVector.at(i) = i; 47: } 48: 49: for (int i = 2; i < (int)vNumberVector.size(); i++) 50: { 51: if (i == 2) 52: { 53: vPrimeVector.push_back(vNumberVector.at(i)); 54: } 55: else 56: { 57: bool flag = false; 58: for (int j = 0; j < (int)vPrimeVector.size(); j++) 59: { 60: if (vNumberVector.at(i) % vPrimeVector.at(j) != 0) 61: { 62: flag = true; 63: } 64: else 65: { 66: flag = false; 67: break; 68: } 69: } 70: 71: if (flag) 72: { 73: vPrimeVector.push_back(vNumberVector.at(i)); 74: } 75: } 76: } 77: 78: cout << "Vypis prvocisel:" << endl; 79: cout << "----------------" << endl; 80: for (int i = 0; i < (int)vPrimeVector.size(); i++) 81: { 82: cout << vPrimeVector.at(i) << " "; 83: } 84: 85: cout << endl; 86: 87: cout << "Chces skoncit [a/n]: "; 88: 89: cin >> c_end; 90: cout << endl << endl; 91: 92: cin.ignore(); 93: is_size_t = false; 94: 95: } while (c_end == 'n'); 96: 97: return 0; 98: }Okno konzolové aplikace u horní hranice Eratostenova síta 20[Image]Na obrázku lze vidět, že výsledná prvočísla se ztotožňují s prvočísly, které jsme vypočítali analytickým způsobem (viz. poslední tabulka v textu). Doufám, že vás příklad a program s Eratostenovým sítem zaujal, stačí už jen, abyste si to implementovali na svém počítači. Tento blog napsal lektor C++ kurzů Marek ŠURKA. Pokud máš nějaké dotazy, napiš je do komentářů.
Rozhovor s Andrejem, lektorem kurzu SketchUp
Rozhovory
18.05.2020
Skillmea

Rozhovor s Andrejem, lektorem kurzu SketchUp

Andrej Bryndza je macher na 3D a modelování. Dělá s CAD softwary a 3D modelováním všemožného druhu. Už na střední škole jej fascinovaly počítače a to nejen na hraní her. Chodil na stavební průmyslovku a tak měl k výkresům a technice velmi blízko. Když se k němu dostala první verze AutoCADu, od té doby se nezastavil. Přečti si rozhovor s Andrejem ⤵ Na začátek nejprve začněme tvou prací. Co přesně děláš?Jelikož to nelze pojmenovat jedním slovem, vedu ti raději konkrétní příklad. Snáze si to představíš. Pokud chceš například rekonstruovat dům* (*nahraď čímkoli například altán, prodejna, bar, kancelář,...), a neumíš si představit, jak by to mohlo následně vypadat, tak já ti umím pomoci. Všechno zakreslím, zpracuji projekt, 3D model a vizualizaci, takže uvidíš všechny plánované změny ještě před tím, než bys vůbec začal něco bourat. Což je nesporná výhoda, protože změny návrhu se vždy dělají snadněji v předstihu na počítači, než když už máš rozbombarovaný dům a uprostřed zjistíš, že to není úplně tak, jak jsi chtěl. Takto ti ušetřím čas, nervy a peníze. Ale pokud to řekneme více obecně, tak zpracovávám projekty, výkresovou dokumentaci, tvořím 3D modely a bavím se se vším, co má něco společného s CAD, 3D a grafikou. Na jakých projektech jsi pracoval? Jaké jsou tvé pracovní aktivity?Mám zkušenosti s prací na projektech všech velikostí. Od modelování malého nábytku, přes altány, rodinné domy, restaurace, administrativní budovy až po velké technologické celky a budovy v průmyslu. Drtivou většinu mého pracovního času však trávím nad kreslením výkresů převážně stavebního a architektonického zaměření. Většina z toho se zpracuje také jako 3D model a následně i vizualizace. Moje služby využívají nejrůznější firmy, architekti, designéři, ale také v podstatě kdokoliv, kdo chce něco zpracovat, nakreslit nebo vymodelovat na počítači. Když zrovna nekreslím, tak se věnuji výuce AutoCADu, SketchUPu a konzultacím zaměřeným na problematiku CAD a kreslení.[Image] Jak ses dostal k 3D modelování?To je také těžko říct. Zřejmě neexistuje konkrétní moment, že kdy. Mě to vžy neskutečně fascinovalo. Někde už na střední škole jsem zjistil, že počítače lze využít i jinak než jen na hry. Chodil jsem na stavební průmyslovku, takže k výkresům a technice mám velmi blízko. Tehdy jsme kreslili všechno ručně. Ke mně se však dostala stará verze AutoCADu a tehdy to nějak začalo. Začaly první pokusy. Jako samouk jsem zkoušel, co AutoCAD dokáže. Protože internet jsem neměl, byl to systém pokus/omyl, mnoho pokusů a omylů. Začal jsem dělat školní projekty, první 3D modely a už se to nedalo zastavit. Tehdy mě to tak chytlo, že sice jsem nevěděl co a už vůbec ne jak to udělám, ale věděl jsem, že tohle je přesně to čím se chci jednou živit. A tak to nějak také vyšlo 😊    Proč ses rozhodl spolupracovat s Learn2Code?Learn2Code mi dává příležitost odprezentovat to, co vím. Dává mi možnost ukázat, že není tak složité kreslit a modelovat ve 3D, jak se možná na první pohled zdá a že se to dokáže naučit každý, kdo má zájem. Na druhé straně mi tato spolupráce dala hodně iz opačné strany. Přestože se věnuji kurzům a vzdělávání již delší dobu, musel jsem se naučit mnoho věcí i já sám. A stále se je učit musím protože prezentovat něco formou videa na živě jsou dvě diametrálně rozdílné věci. Možnost spolupráce s Learn2Code nelituji a šel bych do toho znovu. Co všechno se člověk naučí ve tvých online kurzech SketchUp a AutoCAD?Tyto dva kurzy jsou sice odděleny a na první pohled se může zdát, že namají nic společného, opak je však pravdou. V AutoCADu se člověk naučí kreslit přesně a připravit si výkresy pro stavbu, výrobu nebo jako podklad pro jiné programy. Jedná se o celosvětově nejrozšířenější program na kreslení výkresů a považuje se za jakýsi standard, základ, který by měl ovládat každý, kdo má zájem v budoucnosti projektovat a kreslit. Bez ohledu na to v jaké oblasti. Po zvládnutí pochopení principů a ovládání dokonce není problém přejít ani na jiný podobně zaměřený program, protože všechny vycházejí a porovnávají se přímo s AutoCADem. AutoCAD má řadu variant a různých nástaveb v závislosti na specializaci a jde skutečně o silný nástroj pro 2D a 3D projektování. SketchUP je na druhé straně mnohem jednodušší a nemá ani zdaleka tak široké možnosti práce jako AutoCAD. Jedná se však o velmi dobrý a skutečně povedený program pro modelování a tvorbu ve 3D. Je široce využíván napříč různými oblastmi a po kombinaci s dalším softwarem jako například V-Ray nebo Lumion, dokážete produkovat velmi pěkné vizualizace. Takže pokud to řekneme v jedné větě, tak člověk se naučí nakreslit výkresy například domu v AutoCADu, přenést je do SketchUPu a tam z nich zpracovat pěkný 3D model a následně i vizualizaci. Kromě toho získá základ pro práci v jiných programech.  [Image] Je v této oblasti třeba sledovat aktuální trendy a inovace? Jak jsi na tom ty?Tak asi jako ve všem, i tady se neustále něco mění, vylepšuje, pořád jsou novinky a je dobré pokud se v tom člověk trochu orientuje. Já se v oblasti kreslení a modelování pohybuji už trochu déle a vidím obrovský pokrok jak v softwaru, tak v postupech projektování a modelování. Určitě je třeba sledovat trendy a neustále zkoušet nové věci, nebát se mnohdy i improvizovat. Jelikož já se o tuto problematiku zajímám a baví mě, tak to ani neberu jako práci nebo jako povinnost. Rád sleduji trendy, zkouším nové postupy, nechám se inspirovat a samozřejmě i já se musím stále učit, abych držel krok.    Co tě nejvíc baví na tvé práci?Určitě se nedá mluvit o stereotypní práci. Nejvíce mě baví právě ta různorodost. Baví mě komunikace s klientem, ačkoli, co si budeme říkat není to vždy snadné 😊. Do každého projektu se snažím dát co nejvíce tak, aby zanechala dobrý dojem a aby se ke mně klienti vrátili, případně aby mě doporučili i dále. Jaké máš plány do budoucna?Plánuji pokračovat v tom co dělám a co nejlépe jak jen vím 😊. Někdy je obtížné naplánovat si věci dopředu a často je třeba improvizovat, není to jednoduché, ale stojí to za to, takže já se budu snažit posouvat vpřed. Krátký odkaz všem čtenářům na závěr 😊Zaměřte se na věci, které vás baví. Najděte si něco, v čem jste lepší než ostatní a rozvíjejte to. Každý má něco. A zkoušejte, neustále hledejte nové možnosti. Určitě se vyskytnou problémy, ale bez nich by to bylo velmi lehké, takže hlavně není třeba přestávat. Pokud vás zajímá 3D a kreslení, pořiďte si všechny dostupné programy, internet je plný návodů a lidí ochotných pomoci. Jeden program nestačí, dokonce ani dva, ani tři. Netřeba vědět všechno jako profík, dost pomohou i základy. Třeba vědět co nejvíce a následně to budete umět vše kombinovat A překvapivě zjistíte, že ty programy mají hodně společného. A mnohdy jsou to šílené kombinace a vymýšlení. Takže tomu dost pomůže když vás to bude také bavit. Takže jaký je odkaz? Jestli něco chceš, tak se do toho pusti. A nepřestávej se učit 😊 Andreji děkujeme za rozhovor a pokud ta něco zajímá, zeptej se otázky v komentářích. 👇👇
Jak se tvoří JavaScript
Vzdělávání
02.05.2020
Lubo Herkoo

Jak se tvoří JavaScript

Letos nám frajeři z TC-39 (nevíš-li co TC-39 je, čti dále) naservírují novou verzi ECMAScript specifikace - novinky, které můžeme jako vývojáři používat při programování v JavaScriptu. BigInt, optional chaining, Promise.allSettled, String.matchAll, globalThis a další. O tom, jaké problémy řeší tyto nové funkcionality, si povíme v dalším blogu. Tento text je věnován specifikaci ECMAScript a mimo jiné se dočteš: • proč potřebujeme specifikaci na to, jak implementovat JavaScript Engine v prohlížeči • proč se specifikace nevolá JavaScript, ale ECMAScript a co je to vlastně ta ECMA • jak dlouho trvá, než se nápad nové funkcionality jazyka JavaScript stane jeho součástí ECMAScript?V roce 1995 vyhrál oscar Tom Hanks s filmem Forrest Gump, v rádiích fičel Gansta's Paradise od Coolia a web BBC vypadal takto:[Image] 80% uživatelů internetu surfovalo v prohlížeči Netscape Navigator a Microsoft teprve končil vývoj Internet Exploreru. Pokud ho vůbec někdy dokončili. Ne všichni byli spokojeni s tím, jak web tehdy fungoval: statický obsah, sdílení dokumentů a žádný pohyb. Softwarový inženýr z Netscape - Mark Andreessen - chtěl vytvořit jazyk, který by s lehkostí používali nejen vývojáři, ale také designéři a do webů přinesli špetku interaktivity. Buttony a tak. Brendan Eich (jméno je třeba si zapamatovat - je to frajer) je člověk, který tento programovací jazyk začal tvořit. Prvním pokusem byla implementace jazyka SCHEME do prohlížeče Netscape. Mimochodem - jevisté v SUN Microsystems přemýšleli nad způsobem, jak spouštět Java kód v prohlížeči, čímž také přinesli interaktivitu do webových stránek. Tato implementace však nebyla jednoduchá na používání, a proto zůstala volbou korporátních mastičů. Mocha (takto se jmenovala první verze dnešního JavaScriptu) byla vytvořena jako alternativa pro designéry a vývojáře. Mocha » LiveScript » JavaScript vs JScriptVytvoření první verze Mocha trvalo jen 10 dní. Později byl tento jazyk přejmenován na LiveScript a poté na finální JavaScript. Fun fact: slovo „Java“ se tam nedostalo náhodou – byl to však jen marketingový způsob, jak se svést na popularitě jazyka Java. Internet Explorer chtěl také držet krok s dobou, a proto začali iv MS pracovat na implementaci čehosi, což bylo velmi podobné JavaScriptu. Finální jazyk se jmenoval JScript. Implementace však byla natolik odlišná od JavaScriptu, že tyto implementace nebyly navzájem kompatibilní! Výsledkem byla skutečnost, že nebylo možné vytvořit jeden web, který by fungoval v obou prohlížečích. Tak vznikly tehdy slavné nálepky do footerů: „Best viewed in Internet Explorer“ a „Best viewed in Netscape Navigator“.[Image]Tvořit weby v té době nebyla žádná legrace, vývojáři volali po standardu, který sjednotí implementace JavaScriptu a JScriptu. Proto byl vytvořen standard ECMAScript, který zastřešila organizace ECMA International. Ta fungovala už dávno předtím a jejím úkolem bylo právě vytvářet standardy pro informační a komunikační systémy. Od listopadu 1996 existuje tedy standard ECMAScript, který popisuje, jak má být implementován JavaScript Engine. Fun fact: standard nemůže nést ikonický název JavaScript, neboť na toto slovo až do dnešního dne vlastní copyright firma Oracle. ECMA-262 a TC-39 - whaaat?ECMA International zastřešuje mnoho standardů, ten, který se týká implementace JavaScriptu obdržel číslo 262. ECMA-262 je tedy název standardu, který popisuje implementaci JavaScriptu. Není to žádné příjemné čtení, aha. Komise (rozuměj: živé bytosti, lidé), která rozhoduje o tom, jaké nové funkce bude nová verze JavaScriptu obsahovat, dostala zase název TC-39. Členem této komise není leckdo. Jsou to frajeři – vybraní lidé, kteří zastupují velké firmy působící na online trhu (Facebook, PayPal, Google, Amazon, Mozilla...)[Image] Nová funkcionalita v JS - schvalovací procesČlenové TC-39 organizují meetingy (většinou online) každé dva měsíce. Cílem těchto meetingů je dopodrobna rozkecat a zanalyzovat, které funkce bude obsahovat nová verze ECMAScript, nebo jaké opravy budou v této verzi provedeny. Zajímavé je, že tato komise funguje na principu shody – téměř všichni členové komise musí souhlasit s návrhem, aby se jím byť jen začali zabývat. Zcela zajímavé je například sledovat, jak se dostala do JavaScriptu podpora pro BigInt – brutálně velká čísla. Protože v JavaScriptu jsme dosud mohli používat jen strašně velká čísla. Stage 0Každý návrh začíná na takzvané nulté úrovni – Stage 0. Některý z členů TC-39 vytvoří dokument, který popisuje danou funkcionalitu a jaký problém řeší. Na meetingu členů TC-39 tento problém přednese a členové rozhodli, že např. BigInt je super věc a posunul ho do dalšího Stage-u. Stage 1Stage 1 je parádní úspěch a zároveň to znamená, že někdy v budoucnu bude pravděpodobně dána funkcionalita součástí JavaScriptu. Všem (nebo téměř všem) členům TC-39 se tento nápad líbí a souhlasí s ním. Může to však trvat roky. BigInt funkcionalita musí být ještě podrobněji popsána, musí obsahovat příklady, jak se bude používat a analýzu, zda to nepřinese i nějaké problémy. Stage 2Takzvaný Draft. V této fázi je víceméně jisté, že funkcionalita bude součástí JavaScriptu a proto musí být ještě podrobněji popsána. Toto je také stage, kdy se přemýšlí nad vhodnou syntaxí a různými detaily používání nové funkcionality. V případě BigInt funkcionality např. členové rozhodli, že bude vhodné, pokud BigInt číslo bude obsahovat na konci znak n - aby prohlížeč (engine) věděl, že pracuje s brutálně velkým číslem, a ne jen strašně velkým číslem. const bigIntCislo = 12345n; const obycajneCislo = 12345; Stage 3Funkcionalita je téměř hotová a potřebuje feedback od vývojářů a vnějšího světa. Všichni testují BigInt ve svých programech. Tvůrci internetových prohlížečů se předbíhají, kdo z nich bude podporovat BigInt jako první – protože implementovat BigInt už má smysl. Stage 4Vše je otestováno a BigInt je součástí specifikace ECMAScript. Hotovo. ZáverCelý proces např. v případě BigInt trval 2 roky. Umím si představit, že schvalování některých ještě komplexnějších funkcionalit může trvat ještě déle. Frajerům z TC-39 ale můžeme děkovat za to, že do JavaScriptu se dostávají opravdu jen věci, které dávají smysl.