Create IT Blog - odborné

 

 

Jak vytvořit jednoduchý ovladač 3D postavy v Unityhttps://www.create-it.cz/Blog/Stranky/unity3D2.aspxJak vytvořit jednoduchý ovladač 3D postavy v Unity<p>Minule jsme si ukázali, jak se animuje 3D model v Unity engine. V tomto díle se podíváme na ovládání stejného modelu z pohledu třetí osoby, ať už na klávesnici nebo gamepadu.<br></p><p>Scéna je založena na té z minulého dílu, který doporučuji alespoň přečíst, protože do této scény je potřeba naimportovat animace pro chůzi a stání. Dnes budeme tvořit tuto scénu s několik herními objekty a kamerou přes rameno:<img src="file:///Users/veronikajandova/Library/Group%20Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image001.gif" alt="" style="margin:5px;" /></p><p> <img src="/Blog/PublishingImages/Stranky/unity3D2/result.gif" alt="result.gif" /> <br> </p><p>Nejprve umístím kameru "přes rameno" objektu postavy a zároveň mu ji přiřadím jako <em>dětský (child)</em><em>  </em>objekt.</p><p> <img src="/Blog/PublishingImages/Stranky/unity3D2/Picture%202.png" alt="" /><br></p><p>Dále vytvořím složku pro skripty a vytvořím v ní skript <em>PlayerController</em>, ve kterém bude veškerá logika ovládání postavy. Kód níže používá vestavěné funkce Unity pro práci se vstupem. Načítám zde horizontální a vertikální osu pohybu - tedy v případě ovládání klávesnicí směrové klávesy (W,A,S,D a šipky) a v případě gamepadu jsou to joysticky. Potom provádím výpočty vektorů pohybu a předávám <em>characterControlleru.</em></p><div style="text-align:center;"> <img src="file:///Users/veronikajandova/Library/Group%20Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image007.jpg" alt="" style="width:690px;margin:5px;" /> <img src="/Blog/PublishingImages/Stranky/unity3D2/Picture%203.png" alt="Picture 3.png" style="margin:5px;width:350px;" /> </div><p>Objektu hráče přidám novou komponentu <em>Character Controller, </em>která se používá pro navigaci hráčovy postavy 3D světem hry. Upravím kolizní hranice, aby co nejpřesněji seděly na model - v tomto případě tvoří hranici kapsle.<br></p> <img src="file:///Users/veronikajandova/Library/Group%20Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image009.jpg" alt="" style="width:690px;margin:5px;" /> <img src="/Blog/PublishingImages/Stranky/unity3D2/Picture%204.png" alt="Picture 4.png" style="margin:5px;width:650px;" /> <p>Jako další věc přiřadím skript <em>PlayerController</em> herními objektu <em>Player </em>a přidám k němu právě vytvořený <em>CharacterController </em>(vše je na sebe napojeno v kódu výše).</p><div style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/unity3D2/Picture%205.png" alt="Picture 5.png" style="margin:5px;width:450px;" /> <img src="file:///Users/veronikajandova/Library/Group%20Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image013.jpg" alt="" style="width:690px;margin:5px;" /> <br> </div><div style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/unity3D2/Picture%206.png" alt="unity" /> <br> </div><p>Do scény přidám ještě pár objektů, aby vypadala trochu zajímavěji a bylo snadnější se v ní orientovat. Všechny modely jsou z bezplatného Polygon balíku použitého také v minulém díle.</p><div style="text-align:center;"> <img src="file:///Users/veronikajandova/Library/Group%20Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image015.jpg" alt="" style="width:690px;margin:5px;" /> <img src="/Blog/PublishingImages/Stranky/unity3D2/Picture%207.png" alt="Picture 7.png" style="margin:5px;width:450px;height:271px;" /> </div><p>Po spuštění vypadá scéna následovně.</p> <img src="file:///Users/veronikajandova/Library/Group%20Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image016.gif" alt="" style="width:690px;margin:5px;" /> <img src="/Blog/PublishingImages/Stranky/unity3D2/1%20cACm-Dcgnc7GHTZl8kkx6A.gif" alt="" /> <p>Hráč se může pohybovat, ale nejsou zde žádné animace, možnost rozhlížení se a rotace těla. Není nastavena gravitace, proto zůstane hráč levitovat ve stejné výšce ve vzduchu, když vyjde po schodech.<br></p> <img src="/Blog/PublishingImages/Stranky/unity3D2/Picture%2010.png" alt="Picture 10.png" style="margin:5px;width:650px;" /> <img src="file:///Users/veronikajandova/Library/Group%20Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image018.jpg" alt="" style="width:690px;margin:5px;" /> <h4 style="text-align:center;">Gravitace<br></h4><p> <img src="/Blog/PublishingImages/Stranky/unity3D2/Picture%2011.png" alt="Picture 11.png" style="margin:5px;width:650px;" /><br></p><h4 style="text-align:center;">Kamera<br></h4><p> <br> </p><p>Hlavní kameru (která je v objektu <em>Player</em>) přiřadím do <em>PlayerController </em>skriptu.</p> <img src="/Blog/PublishingImages/Stranky/unity3D2/Picture%2012.png" alt="Picture 12.png" style="margin:5px;width:400px;height:179px;" /> <img src="file:///Users/veronikajandova/Library/Group%20Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image022.jpg" alt="" style="width:690px;margin:5px;" /> <p> </p><p>Posledním krokem jsou animace. Animation Controller z minulého dílu měl pouze jednu animaci, <em>breakdance</em>. Z webu mixamo.com stahuji animaci pro <em>chůzi</em> a <em>idle </em>a propojím je přechody (pro návod na import animací viz předchozí díl).</p> <img src="/Blog/PublishingImages/Stranky/unity3D2/Picture%2013.png" alt="" /> <img src="file:///Users/veronikajandova/Library/Group%20Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image024.jpg" alt="" style="width:690px;margin:5px;" /> <p>Do Animation Controlleru pak už jen přidám boolean proměnnou isWalking (přes + tlačítko, new Bool).<br></p><div style="text-align:center;"> <img src="file:///Users/veronikajandova/Library/Group%20Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image026.jpg" alt="" style="width:690px;margin:5px;" /> <img src="/Blog/PublishingImages/Stranky/unity3D2/Picture%2014.png" alt="" style="width:400px;" /> </div><p>Nastavím podmínky kliknutím na přechod a úpravou v pravém panelu:</p> <img src="/Blog/PublishingImages/Stranky/unity3D2/Picture%2015.png" alt="" /> <img src="file:///Users/veronikajandova/Library/Group%20Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image028.jpg" alt="" style="width:690px;margin:5px;" /> <p>A vše zavolám v kódu (do <em>isWalking</em> se zasílá stav chůze, buď se pohybuje, nebo ne):<br></p><p> <img src="/Blog/PublishingImages/Stranky/unity3D2/Picture%2016.png" alt="Picture 16.png" style="margin:5px;width:650px;" /> <br> </p><p>Nakonec přiřadím Animator do vytvořené animator proměnné a vše spustím.<br></p><p> <img src="/Blog/PublishingImages/Stranky/unity3D2/Picture%2017.png" alt="" /> <br> </p><div> <img src="/Blog/PublishingImages/Stranky/unity3D2/result.gif" alt="" /> <br> </div>Kód ovladače je k dispozici na mém <a href="https://github.com/janjilecek/unity_tutorial/blob/master/Assets/Scripts/PlayerController.cs" style="text-align:justify;">githubu</a><span style="text-align:justify;">. Výsledná scéna má pouze dva stavy, stání a chůzi vpřed. Pro složitější animace je nutné použít více proměnných a podmínek, to je však nad rámec tohoto článku. Pokud rádi experimentujete, můžete zkusit změnit pohled z třetí osoby na pohled první osoby (FPS) připnutím kamery k hlavě postavy.</span> <p>V příštím díle dáme scéně šťávu a ukážeme si, jak přidat několik nepřátel a zbraně, aby se mohl hráč bránit.<br></p><p><i>Jan Jileček<br></i></p><p> </p><p> </p><p> </p><p> <br> </p>odborné;#
Základy tvorby 3D animované scény v Unityhttps://www.create-it.cz/Blog/Stranky/unity3D.aspxZáklady tvorby 3D animované scény v Unity<p>Podařilo se vám minule napsat <a href="/Blog/Stranky/hra-v-pythonu.aspx" target="_blank">hru v Pythonu </a>a chcete si vyzkoušet regulérní herní vývoj? Dnes vám ukážu, jak si lze snadno vytvořit 3D animovanou scénu v <a href="https://unity.com/" target="_blank">Unity</a> engine (ke stažení <a href="https://store.unity.com/download-nuo" target="_blank">zde</a>). Ten se hlavně používá právě pro herní vývoj (hry jako Inside, Cuphead nebo Hollow Knight jsou právě z Unity), ale běžně s ním pracují i filmová studia pro vytváření <a href="https://en.wikipedia.org/wiki/Computer-generated_imagery" target="_blank">CGI</a> scén a samozřejmě tak vznikají i animované filmy. Animace udělají pro pocit ze hry hodně, jelikož oživují herní objekty a umožňují tak hráči se lépe vžít do hry. <br></p><p> Pojďme se tedy podívat, jak pomocí bezplatných nástrojů a modelů v Unity vytvořit jednoduchou scénu: </p><p> <img src="/Blog/PublishingImages/Stranky/unity3D/unity3D.gif" alt="unity3D.gif" /> <br> </p><p> Nejprve v Unity založím nový 3D projekt. </p><p> <img src="/Blog/PublishingImages/Stranky/unity3D/nejprve3D.png" alt="nejprve3D.png" /> <br> </p><p> Unity má v klasickém rozložení okno pro manipulaci s 3D scénou nalevo a pohled herní kamery na scénu vpravo. V levém panelu je seznam všech herních objektů a v tom úplně napravo se provádí nastavení vybraných objektů a entit. Panel dole pak obsahuje importované zdroje, jako modely, animace, zvuky, atp. </p><p> <img src="/Blog/PublishingImages/Stranky/unity3D/panelobsahuje.png" alt="panelobsahuje.png" /> <br> </p><p> Vytvořím tedy první 3D objekt, tzv. “Plane”, přes menu <i>GameObject - 3D Object - Plane</i>. Ten poslouží jako “podlaha” pro 3D model postavy, aby nepadala nekonečným herním prostorem. Unity má klasické manipulační nástroje s 3D scénou - posun, rotace a škála. </p><p> <img src="/Blog/PublishingImages/Stranky/unity3D/manipulacninastroje.png" alt="manipulacninastroje.png" /> <br> </p><p> Nyní potřebuji 3D model postavy. Použiju bezplatný balík <a href="https://assetstore.unity.com/packages/3d/props/polygon-starter-pack-156819" target="_blank">Polygon starter</a>, který obsahuje základní modely a prostředí. Do Unity ho pak stačí naimportovat přes <i>Package Managera</i> (všechny balíky přidané přes webové rozhraní <i>Unity Asset store </i>se synchronizují přes uživatelský účet přímo do Unity engine). </p><p> <img src="/Blog/PublishingImages/Stranky/unity3D/synchronizace.png" alt="synchronizace.png" /> <br> </p><p> Po importu vytvořím nový prázdný model, který bude sloužit jako “rodič” animovaného 3D modelu (opět přes menu, <i>GameObject - Create Empty</i>). Objekt se vloží na souřadnice (0,0,0), tzn. přímo do středu podlahy <i>Plane</i>. Objekt ještě pro přehlednost přejmenuji na <i>Player</i>. V okně prohlížeče zdrojů najdu herní model postavy z balíku Polygon Starter, vybírám tu s názvem <i>SM_Character_Male_01</i>. </p><p> <img src="/Blog/PublishingImages/Stranky/unity3D/sm_character.png" alt="sm_character.png" /> <br> </p><p> Model přetáhnu do levého okna objektů na předtím vytvořený objekt <i>Player</i> - zobrazí se i ve scéně. </p><p> <img src="/Blog/PublishingImages/Stranky/unity3D/player.png" alt="player.png" /> <br> </p><p> Chybí nám už jen přidat animaci. Ručně animovat model by zabralo hodiny, využiji proto webu <a href="http://mixamo.com/" target="_blank">mixamo.com</a>, kde stahuji <a href="https://www.mixamo.com/#/?page=1&query=breakdance" target="_blank">breakdance animaci</a>. Zdarma tam poskytují rozličné herní animace, pro chůzi, běh, smrt hráče atp. <br></p><p> Animaci naimportuji do Unity (v prohlížeči projektu dole, <i>pravý klik - </i><i>Import New Asset</i>) a stejně tak vytvořím <i>Animator Controller,</i> pro ovládání animace (<i>pravý klik - create - animator controller</i>). Po importu animaci vyberu a změním její parametry, aby s ní bylo možné manipulovat. Její typ nastavuji na Humanoid a ukládám přes <i>Apply</i>. Také měním její jméno na <i>breakdance</i> na záložce <i>Animation</i>. </p><p> <img src="/Blog/PublishingImages/Stranky/unity3D/breakdance.png" alt="breakdance.png" /> <br> </p><p> Pak vyberu vytvořený <i>Animator Controller</i>, a do nově zobrazeného okna <i>Animator</i> přetáhnu animaci <i>breakdance</i>. Automaticky se napojí na vstupní stav <i>Entry</i>. </p><p> <img src="/Blog/PublishingImages/Stranky/unity3D/entry.png" alt="entry.png" /> <br> </p><p> Teď už jen stačí přiřadit tento <i>Animator Controller</i> modelu postavy a animace se spustí! </p><p> <img src="/Blog/PublishingImages/Stranky/unity3D/animacespusti.png" alt="animacespusti.png" /> <br> </p><p> Animace tvoří velkou část hry, takže je dobré si s nimi dát tu práci pro co nejautentičtější pocit při hraní. Jak jsme si ukázali, tak napojení animací na herní modely je vcelku jednoduché, a s online databázemi jako je Mixamo si člověk vystačí i při tvorbě rozsáhlejší hry. Pro specifičtější potřeby už bude samozřejmě nutné vytvořit si animace vlastní, v praxi se humanoidní animace dělají pomocí motion capture, jelikož modelovat je manuálně je velmi časově náročné a nepřesnosti mohou narušit “game feel”.</p><p> V příštím díle tohoto miniseriálu o Unity se můžete těšit na základy ovládání pohybu a to pomocí C# Unity skriptů. </p><p> <i>Jan Jileček</i></p> <br> <br>odborné;#hobby;#vzdělávání;#
Udělejte s námi další krok k digitální identitěhttps://www.create-it.cz/Blog/Stranky/digitalni-identita.aspxUdělejte s námi další krok k digitální identitě<p>Většina byznysu se ještě na začátku letošního jara odehrávala fyzicky. Obchodník na schůzkách a prezentacích přesvědčil zákazníka, že on má pro něj ten nejlepší produkt, a ten pak firma dodala. Elektronická komunikace si hledala svoje místo, vzdálená práce byla spíš výjimkou. </p><p> To všechno se jako lusknutím prstu změnilo s příchodem neviditelného viru. Komunikujeme on-line, kdo může, prodává on-line, do on-linu jsme se jednoduše přestěhovali. A bylo to překvapivě výrazně snazší než stěhovat fyzické kanceláře. Různé ekonomické analýzy ukazují, že právě díky naší relativní vyspělosti v digitálním světě překonáme současnou krizi mnohem snáze. A velká část byznysu pravděpodobně on-line i zůstane. </p><p> V Cleverlance tuto situaci velice dobře chápeme, však ji, jako všichni, zažíváme na vlastní kůži. Zároveň přemýšlíme, jak být v novém světě ještě produktivnější. Jak pomoci každému z nás snadněji vyřídit běžné denní agendy od nákupu zboží, podepisování smluv a možná jednou až po možnost elektronicky volit. Potřebujeme zejména dosavadní fyzickou identitu co nejlépe přestěhovat do digitálního prostoru. V důsledku tak pomůžeme naší zemi k ekonomickému růstu (odhaduje se, že například jednomu z tahounů elektronické identity Estonsku se podařilo díky jejímu zavedení zvýšit roční HDP o 2%). Inspirací jsou pro nás ti nejpokročilejší v této oblasti - v současnosti skandinávské a pobaltské státy. </p><p> Pro spolehlivou digitální agendu ve všech oblastech občanského i obchodního života je stěžejní jednoznačně identifikovat osobu, která ji provádí. A to už mají nějakou dobu velmi dobře zvládnuté banky. Proto jedním z uživatelsky nejbližších a nejpřívětivějších způsobů, jak přenést jednoduchost, rychlost a důvěru fyzického kontaktu a prokazování do digitálního světa, je využití bankovní identity. Jednoduše přihlásit se do svého internetového bankovnictví a jeho prostřednictvím vykonávat úkony, které jsou momentálně omezeny buď na fyzické dokládání vaší identity nebo na technicky složitější ověřování on-line (další certifikáty, fyzické čtečky atd.). Často už bez hesla, jen prostřednictvím elektronického klíče, se přihlásíte do internetového bankovnictví. Pak budete moci přistupovat k řadě dalších služeb, do kterých musíte v současné době hledat svoje přístupové údaje. </p><p> Jinými slovy - když on-line posíláme peníze za nově nabytou nemovitost a banka umí zajistit, že u mobilního či internetového bankovnictví sedí skutečně osoba oprávněná manipulovat s těmito penězi, proč by rovnou nešlo s touto identifikací požádat o připojení plynu, elektřiny, nemovitost si pojistit, přihlásit si auto, změnit trvalé bydliště a rovnou to všem oznámit (včetně státních orgánů a zdravotní pojišťovny) či se dokonce zúčastnit voleb? A to všechno během několika minut z židle na které právě sedíte (nebo z mobilního telefonu v tramvaji). </p><p> Podařilo se nám najít způsob, jak našim zákazníkům cestu do tohoto světa usnadnit. Řada společností z bankovního i nebankovního světa v současné době hledá technické řešení, které jim umožní se připojit k již rozběhnutému projektu bankovní identity. Jedna z nutných podmínek využívání bankovní identity je integrace interních systémů našich zákazníků na Základní registry (ZR), Národní bod pro Identifikaci a Autorizaci (NIA), případně další poskytovatele registrů. Integrací naši zákazníci získají jedinečnou možnost vyčistit klientská data, splnit řadu regulatorních požadavků (AML/KYC) a být technologicky připraveni na očekávané legislativní schválení využívání bankovní identity tak, jak jsme nastínili výše. Toto řešení nasazujeme v řádu týdnů a cestu do plnohodnotného on-line světa tím dokážeme výrazně zjednodušit, zrychlit a zpříjemnit všem uživatelům. My jsme na budoucnost připraveni, jste i vy? </p><p> <i>Michal Šejnoha</i> </p><br>odborné;#projekty;#
Co nás ne/překvapilo na práci z domovahttps://www.create-it.cz/Blog/Stranky/homeoffice.aspxCo nás ne/překvapilo na práci z domova<p>Různých článků na téma jak nejlépe zvládat Home Office je na internetu spousta a asi pro vás nemáme žádný neotřelý tip, který jste nečetli jinde. Aneb jak říká náš grafik a webmaster Vítek, který pracuje z domova už 14 let, a tak se dá spolehnout na to, že o tom něco ví: základ je mít pevný režim a rozvrh. A to píší všude. Zajímalo nás ale, jak vnímají přesun na Home Office naši kolegové, a proto jsme si udělali malý průzkum, kterého se zúčastnilo 15 z nich. </p><p> Abyste rozuměli, v Cleverlance za normálního provozu pracují někteří z nás přímo na našich pobočkách, jiní jsou v kancelářích u klienta, část z nás za určitých podmínek funguje na Home Office, ale opravdu málokdo pracuje z domova stále. Takže v této formě je to pro nás jako pro firmu velká novinka. </p><h2> Vše funguje </h2><p> Můžete mít nastotisíckrát vše nastaveno a otestováno, ale teprve ostrý provoz ukáže, zda to skutečně běží, jak má. Kolegové si to uvědomují, a tak na otázku, co je příjemně překvapilo, nejčastěji odpovídali právě pochvalováním si, jak i na dálku fungujeme. Týmy jedou jako po másle, IT vše briskně zvládá a práce na projektech může pokračovat i na dálku. I zákazníci práci kompletně na dálku akceptovali a dokázali se rychle adaptovat - což je pro nás velmi důležité a opravdu to oceňujeme. Zajímavé je, že si to chválí nejen manažeři, ale i řadoví zaměstnanci. </p> <img alt="Home Office v Cleverlance" src="/Blog/PublishingImages/Stranky/homeoffice/HO4.jpg" /> <br> <h2> Dojíždění </h2><p> Někteří kolegové si až teď naplno uvědomili, kolik času stráví dojížděním. Většina se ho ráda zbavila. Ale jiní kolegové paradoxně na dojíždění vzpomínají s láskou. Některým chybí cesta do a z práce na kole, dalším se stýská po čase na čtení. Možná namítnete, že toho teď přeci mohou mít habaděj, ale kdo je teď doma s dětmi, ví své. No a samozřejmě pokud vaše cesta do práce vede třeba údolím Berounky, může vám chybět i sama o sobě. </p><h2> Čas s rodinou </h2><p> Snad nikdy v životě české děti netrávily tolik času se svými rodiči. A děti svých kolegů jsme dříve poznali jen při firemních rodinných akcích, ať už to bylo na prolézačkách v Mirákulu, při Beat Saber cupu nebo nad programováním ve Scratchi, zato nyní je známe jako vtipné vsuvky do různých videorozhovorů, v některých týmech patří k bontonu jít zamávat kolegům a kolegyním rodičů při každém standupu apod. </p> <table width="100%" class="ms-rteTable-default" cellspacing="0" style="border:hidden;text-align:center;"><tbody><tr><td class="ms-rteTable-default" style="width:50%;">​<a href="https://www.youtube.com/watch?v=Mh4f9AYRCZY" target="_blank"><img alt="on.jpg" src="/Blog/PublishingImages/Stranky/homeoffice/on.jpg" style="margin:5px;width:300px;height:180px;" /></a><br></td><td class="ms-rteTable-default" style="width:50%;">​<a href="https://www.youtube.com/watch?v=-Ojvk-4IcOE" target="_blank"><img alt="ona.jpg" src="/Blog/PublishingImages/Stranky/homeoffice/ona.jpg" style="margin:5px;width:300px;height:180px;" /></a><br></td></tr></tbody></table><h4 style="text-align:center;">A jak vypadá home office s dětmi u vás?<br></h4><p> Pro některé kolegy je provizorní kancelář mezi dětskou kuchyní a sbírkou Hot-Wheels spíš stresující, jiní si doma zavedli pravidla a dokáží koordinovat práci obou rodičů i vzdělávání dětí úplně v pohodě. Důležité je, když všichni vědí, co mají dělat. Sluchátka na uších například znamenají "nerušit". </p><h2> Stýská se nám </h2><p> S výjimkou několika málo ostřílených Home Office veteránů se ode všech kolegů ozývá, že se jim stýská po ostatních z týmu. Po společných obědech. Po deskovkách po práci. Po sdílení know-how v open space. Po společné ranní kávě. </p><p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/homeoffice/homeoffice-.jpg" alt="" style="margin:5px;width:450px;" /> </p><p></p><p></p><h4 style="text-align:center;">Zuzce se stýská tak moc, že si svou kancelář doma vizualizovala. <br></h4><p> Zkrátka analyzovat, programovat, testovat i to celé řídit umíme z domova na jedničku. Ale socializovat se přes videokonference nás prostě neuspokojuje. Ovšem snažíme se - vedle pravidelných projektových schůzek se vyrojila řada dobrovolných audio- či video-konferenčních káviček, snídaní apod. </p><h2> Nové nástroje </h2><p> Nebyli bychom správná IT firma, kdybychom usilovně netestovali nové a potenciálně lepší nástroje pro práci na dálku. Skype a e-mail jsou sice základ, ale různé týmy objevují další kooperativní nástroje, protože jejich potřeby se projekt od projektu liší. Zoom, Slack a Teams patří k nejčastěji zmiňovaným. </p><h2> Umět přestat </h2><p> Důležitost pravidelného režimu, jak už bylo řečeno na začátku, objevujeme všichni. Většina lidí tím podporuje svou produktivitu, neméně důležité je ale i říct si, že máme padla. Protože od některých kolegů zaznívá, že z domova pracují mnohem více než dříve. </p><h2> S / V / N / K </h2><p> Tohle jsou zkratky našich hodnot a i když tu nepublikujeme celý text průzkumu (to by vás nebavilo, vyšlo to na 11 stránek), z výsledných odpovědí je znát, že ty hodnoty nejsou prázdná slova. Zkrátka umíme spolupracovat i ve ztížených podmínkách, vidíme výsledky, máme různé nápady, jak se s tou situací vypořádat a nezapomínáme spolu komunikovat! </p><p><br></p><p><em>Veronika Jandová</em><br></p>odborné;#
Jak vytvořit krátkou hru v Pythonuhttps://www.create-it.cz/Blog/Stranky/hra-v-pythonu.aspxJak vytvořit krátkou hru v Pythonu<p>Pokud jste se někdy chtěli naučit, jak se vlastně dělají hry, nebude k tomu snad vhodnější čas než po večerech, když se v období nynější pandemie stejně moc nikam nedá jít. V tomto článku se podíváme na to, jak v jazyce Python udělat malý klon legendární hry <a href="https://www.youtube.com/watch?v=MU4psw3ccUI" target="_blank">Space Invaders</a>. Postačí nám k tomu <a href="https://www.pygame.org/news">framework PyGame</a>, který zajistí vše od ovládání až po grafické objekty.<br></p><h2>Základní nastavení</h2><p>Nejprve vytvořím třídu Game, ze které budu ovládat celou hru. Pak inicializuji <em>pygame </em>instanci a pole pro alieny (nepřátele),<em> </em>nastavím velikost zobrazované plochy (na ní se budou vykreslovat herní objekty), rychlost překreslování na 60 snímků za sekundu a spustím herní "smyčku", ve které se průběžně budou kontrolovat vstupní klávesy, kliknutí myši a vykreslovat grafika.<br></p><p> <img src="/Blog/PublishingImages/Stranky/hra-v-pythonu/Picture%201.png" alt="" /> <br> </p><h2>Vytvoříme si nepřátele</h2><p>V klasické hře Space Invaders jsou hlavními nepřáteli alieni, které musí hráč všechny pobít. V této hře vytvořím jednoduchý objekt Alien, který použije souřadnice, barvu a velikost a vykreslí objekt ve formě čtverce na herní plochu. Objektu nastavím "klesání" o 5 % velikosti pixelu za jeden herní snímek. Instanci aliena pak vytvořím před herní smyčkou a v herní smyčce volám metodu <em>draw</em> pro vykreslení. <br></p><p>Poznámka: Část kódu se vkládá do již napsané sekce. Pro přesné umístění se můžete podívat do kompletního zdrojáku, který je nalinkovaný na konci článku.<br></p><p> <img src="/Blog/PublishingImages/Stranky/hra-v-pythonu/Picture%202.png" alt="" /> <br> </p> Po spuštění vypadá hra následovně, zatím jen s jedním Alienem - za chvíli jich vytvořím celé pole:  <div> <img src="file:///Users/veronikajandova/Library/Group%20Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image007.gif" alt="" /> <p> <img src="/Blog/PublishingImages/Stranky/hra-v-pythonu/1.gif" alt="1.gif" /><br></p><h2>Hlavní hrdina</h2><p>Hrdina, kterého ovládá hráč, je vytvořen obdobně jako Alien, pouze má jiné rozměry, pozici dole v centru herní plochy, jinou barvu a bude na něj napojeno ovládání klávesami.</p><p> <img src="/Blog/PublishingImages/Stranky/hra-v-pythonu/Picture%204.png" alt="" /> <br> </p> <img src="/Blog/PublishingImages/Stranky/hra-v-pythonu/2.gif" alt="2.gif" /> <br> <p> <br> </p><h2>A teď tomu dodáme šťávu!</h2><p>Nejprve přidám více nepřátel. Pro to postačí jednoduchý generátor Alienů, kterými zaplním horní polovinu plochy (<em>height/2</em>) a v herní smyčce vykreslím.</p><p> <img src="/Blog/PublishingImages/Stranky/hra-v-pythonu/Picture%206.png" alt="" /> <br> <br> </p><p> <img src="/Blog/PublishingImages/Stranky/hra-v-pythonu/3.gif" alt="3.gif" />Dále přidám hrdinovi nějaké útočné prostředky - tedy rakety. Objekt rakety má také vlastní třídu, která je skoro stejná jako Alien a Hero, jen má důležitou vlastnost - a totiž, že po herní ploše "letí" nahoru - a to rychlostí 2 pixely za snímek. Vykreslovací plocha je indexovaná od levého horního rohu (x=0, y=0), proto je nastavena <em>y</em> souřadnice do mínusu (hráč je na cca (x=300, y=380). V herní smyčce pak kontroluji, zda hráč stisknul mezerník a pokud ano, vytvořím raketu na pozici hrdiny.<img src="/Blog/PublishingImages/Stranky/hra-v-pythonu/Picture%208.png" alt="" /><br></p><p>Střela po stisknutí mezerníku letí nahoru:</p><p> <img src="/Blog/PublishingImages/Stranky/hra-v-pythonu/4.gif" alt="4.gif" /> </p><p>Teď už jen stačí přidat kontrolu kolize rakety a aliena (v tom případě jsou alien i raketa zničeny). Otázkou je, zda bude kontrolovat alien, že do něj narazila raketa, nebo jestli raketa bude kontrolovat, zda narazila do aliena. Volím kontrolu z pozice aliena. Každý alien sleduje seznam raket a kontroluje, zda do něj nějaká nenarazila (dívá se na souřadnice x a y). Je to opravdu triviální a neoptimální kontrola, běžně se samozřejmě používají optimalizované přístupy jako kontrola pouze těch objektů v blízkosti atd.<br></p><p> <img src="/Blog/PublishingImages/Stranky/hra-v-pythonu/Picture%2010.png" alt="" /> <br> </p><p></p><div> <img src="/Blog/PublishingImages/Stranky/hra-v-pythonu/5.gif" alt="5.gif" /> <br> </div> <img src="file:///Users/veronikajandova/Library/Group%20Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image019.gif" alt="" /> <p>Nakonec přidám pohyb hrdiny doleva a doprava, nastavím konečné podmínky pro výhru a prohru - když hráč všechny zničí vs. když alien přistane na zemi - a hra je hotova.</p><p> <img src="/Blog/PublishingImages/Stranky/hra-v-pythonu/Picture%2012.png" alt="" /> </p><p> </p><p> <img src="/Blog/PublishingImages/Stranky/hra-v-pythonu/6.gif" alt="6.gif" /> </p><h2>Závěrem</h2><p>Výsledná hra by se ještě dala okořenit efekty jako jsou zvuky, textury a hlavně "game feel" mechaniky, např. třepání obrazu při každém výstřelu, pozastavení hry na 50 ms při každém výbuchu pro umocnění dopadu rakety a jiné běžné používané efekty (více o game feel <a href="https://www.youtube.com/watch?v=Fy0aCDmgnxg">zde</a>). Kompletní kód hry jsem umístil na svůj <a href="https://github.com/janjilecek/pygame-invaders/blob/master/main.py">github</a>.</p><p>Framework PyGame, který jsme si zde ukázali je vhodný pro jednoduché projekty, ale pokud vás herní vývoj více zaujal, doporučuji "dospělé" herní frameworky jako Unity, používající jazyk C#; Game Maker Studio 2 používající jazyk GML; a nebo Unreal Engine 4, stojící na verzi jazyka C++. Nejvhodnější pro začátečníky je však Unity a GMS2. Přeji happy coding!</p><p> </p><p> <i>Jan Jileček</i></p><p> </p><p> </p><p> <br> </p></div>odborné;#vzdělávání;#
Základy Machine learningu v Pythonuhttps://www.create-it.cz/Blog/Stranky/python1.aspxZáklady Machine learningu v Pythonu<p>Machine learning (ML) neboli strojové učení je poslední dobou velmi používané slovní spojení, které v sobě obsahuje vše od zpracování dat až po neuronové sítě. V tomto článku vám představím základní terminologii a na krátkém příkladu ukážu klasifikaci filmových hodnocení a sentimentu v textu.</p><h2>Učení s učitelem a bez učitele</h2><p>Strojové učení se obecně dělí na dvě kategorie, a totiž na Supervised (s učitelem - systém se "učí" funkci z trénovacích dat) a Unsupervised (bez učitele - systém hledá zákonitosti v datech sám).<br></p><p>První kategorie je specifická tím, že vstupní data, která budeme analyzovat, mají dodatečné atributy, které data nějakým způsobem popisují. Příkladem mohou být údaje o teplotě ve městech za nějaký časový úsek, typickým příkladem v ML je však tzv. <a href="https://medium.com/syncedreview/mnist-reborn-restored-and-expanded-additional-50k-training-samples-70c6f8a9e9a9" target="_blank">MNIST dataset</a>. Je to sada psaných číslic, jejichž atributem je právě odpovídající číslo na obrázku.<br></p><p>S daty můžeme dále provádět tzv. klasifikaci, nebo regresi. Klasifikace slouží ke správnému zařazení datových vzorků bez atributů (tedy např. rozpoznání nově napsané číslice a její správné označení, nebo níže v návodu - rozpoznání pozitivního a negativního filmového hodnocení z textu). Regrese slouží k "předpovídání" dalších výsledků, používá se např. pro generování textu - lze tak vygenerovat celou <a href="https://twitter.com/botnikstudios/status/940627812259696643" target="_blank">novou kapitolu Harryho Pottera</a> na základě předchozích 7 knih.<br></p> <img src="/Blog/PublishingImages/Stranky/python1/dataset.png" alt="dataset.png" /> <p style="text-align:center;">Příklad vzorků z datové sady MNIST<br></p><p>Druhou kategorií je učení bez učitele. Používá se pro neoznačená data bez atributů, nejčastěji pro nalezení skrytých vzorců a spojení mezi datovými vzorky nebo pro jejich setřídění do skupin (tzv. clustering).<br></p> <img src="/Blog/PublishingImages/Stranky/python1/bezucitele.png" alt="bezucitele.png" /> <p style="text-align:center;">Učení bez učitele - <a href="https://en.wikipedia.org/wiki/Unsupervised_learning#/media/File:Kernel_Machine.svg">určení hranic mezi rozdílnými body</a>, clustering<br></p><h1>Datové sady, datasety</h1><p>Datová sada (pro učení s učitelem) se dělí na tři části - trénovací, testovací a validační. Trénovací sada obsahuje hlavní data, na kterých se ML bude učit "vzorce chování", konfigurace datových vzorků a určovat váhu jednotlivých rozhodnutí pro konečný výsledek klasifikace/regrese. Validační datová sada je pak část disjunktní s trénovací sadou, avšak ze stejné množiny dat, resp. z dat se stejnou distribucí pravděpodobnosti (jinými slovy: z jedné datové sady psaných číslic vezmu náhodně 70 % vzorků pro trénovací sadu a 30 % pro validační). Poslední částí je ta testovací, která používá podobná data s odlišnou distribucí pravděpodobnosti - v případě datové sady psaných číslic, kde trénovací a validační sada byla psaná mnou, trénovací sada by byla psaná někým jiným - pro výsledný klasifikátor tak mohu určit jeho přesnost správného určování nově napsaných číslic, a jako takový slouží tato přesnost jako hlavní metrika určující kvalitu natrénovaného modelu.<br></p><h1>A teď k praktickému příkladu</h1><p>Jako malý příklad zde uvádím klasifikátor filmových hodnocení. K tomu jsem nejprve získal textová data ze serveru imdb.com, a to hodnocení k novému filmu "1917". Ručně jsem zkopíroval 20 pozitivních hodnocení a 20 negativních hodnocení filmu (v reálném projektu by se samozřejmě použilo IMDB API pro hromadné stažení dat) do jednoduchého textového souboru - prvních 20 řádků pozitivní hodnocení, dalších 20 řádků negativní. Reálná data jsou formátována sofistikovaněji, např. v csv formátu a s explicitně uvedenými třídami, ale pro názornost to zde postačí.</p><p> <img src="/Blog/PublishingImages/Stranky/python1/prikladreview.png" alt="prikladreview.png" /><br></p><p style="text-align:left;">V Pythonu pak tento soubor "dataset.txt" načtu:<br></p><p style="text-align:left;"> <img src="/Blog/PublishingImages/Stranky/python1/nacistdataset.png" alt="nacistdataset.png" /> <br> </p><p>Nyní mám načtené všechny věty do pole hodnot. Dále text musím zpracovat, aby z něj mohl klasifikátor při tréninku úspěšně extrahovat smysluplné informace. Anglický text tedy zbavím apostrofů, znamének apod. a provedu lematizaci - tedy převedení slov do jejich kořenové podoby (movies -> movie, being -> be).<br></p> <img src="/Blog/PublishingImages/Stranky/python1/lematizace.png" alt="lematizace.png" /> <p>Takto zpracované věty teď musím nějakým způsobem převést do formátu zpracovatelného pomocí ML. Provedu proto vektorizaci slov - jejich převedení na číselnou hodnotu (tedy něco přibližně podobného získání počtu nejčastějších pozitivních slov, akorát s mnohem hlubším kontextem). K tomu použiji vektorizační metodu <a href="https://en.wikipedia.org/wiki/Bag-of-words_model" target="_blank">Bag of words</a>. Vektorizér nastavuji tak, aby bral pouze prvních 20 nejčastějších slov jako významných, používal ta slova, která se vyskytují alespoň dvakrát, a jsou nejvýše v 60 % hodnocení (jinak by ztratily svůj význam, kdyby byly používány všude). Navíc vyřazuji anglická "stop" slova, která nenesou žádný význam (and, the, ...).</p> <img src="/Blog/PublishingImages/Stranky/python1/transformace.png" alt="transformace.png" /> <p>Po této transformaci pomocí vektorizace jsou vstupní textová data s hodnoceními filmů reprezentována čísly (každý řádek je jedno celé souvětí/hodnocení):</p> <img src="/Blog/PublishingImages/Stranky/python1/matice.png" alt="matice.png" /> <p>A teď se můžeme vrhnout na samotný trénink klasifikátoru. Používám zde jednoduchý klasifikátor, <a href="https://cs.wikipedia.org/wiki/Algoritmus_k-nejbli%c5%be%c5%a1%c3%adch_soused%c5%af" target="_blank">K-nejbližších sousedů</a>, s K-okolím velikosti 5 (na složitější klasifikátory a jejich hlubší popis se podíváme v příštím článku). Trénovací data jsem rozdělil na trénovací a testovací (beru 30 % datové sady pro testování).<br></p> <img src="/Blog/PublishingImages/Stranky/python1/klasifikatory.png" alt="klasifikatory.png" /> <p>Nakonec probíhá tisk tzv. matice záměn, která ukazuje úspěšnost natrénovaného modelu klasifikátoru, výstupu klasifikace a hodnoty přesnosti našeho modelu.</p><p>Matice záměn ukazuje počet správně uhodnutých hodnocení na jedné diagonále a špatně uhodnutých na diagonále druhé - viz obrázek níže, tedy 2-7 je počet tzv. true positives a true negatives (tzn. správně uhodnutá hodnocení patřící do správné třídy a správně vyloučená hodnocení nepatřící do třídy) a 1-2 je počet false positives a false negatives, tyto chybné false hodnoty chceme udržet na minimu.</p><p>Bohužel zde používám jen extrémně malou datovou sadu, takže přesnost klasifikace je mizerná - jen 75 % hodnocení je zařazeno správně jako pozitivní nebo správně jako negativní, a to po úpravě parametrů pro lepší výsledek (v závislosti na parametrech klasifikátoru přesnost padala i na pouhých 35 %). Při zvětšení datové sady na několik tisíc hodnot a použití inteligentnějšího klasifikátoru by se přesnost značně zvýšila.</p> <img src="/Blog/PublishingImages/Stranky/python1/presnost.png" alt="presnost.png" /> <h1>Analýza sentimentu v textu<br></h1><p>Pro zajímavost ještě ukážu analýzu sentimentu z textových dat. Jedná se o NLP - Natural Language Processing (neplést s Neuro-linguistic programming), analýzu přirozeného jazyka, jejímž cílem je extrakce názorů a emočního zabarvení textu (datové sady bývají vzaty zejména z Twitteru). Sociální sítě jsou tedy přirozeně hlavním polem, kde se NLP využívá v praxi.<br></p><p>Pro příklad použiju VADER (Valence Aware Dictionary and sEntiment Reasoner) na jednom z filmových review. VADER dokáže analyzovat pozitivní nebo negativní sentiment v textu na základě předtrénovaného klasifikačního modelu (pro přesnější klasifikaci lze použít např. Google Cloud Natural Language API).</p> <img src="/Blog/PublishingImages/Stranky/python1/vader.png" alt="vader.png" /> <p>Výstup předchozích 3 řádků nám ukazuje ze 70 % neutrální sentiment a z 22 % pozitivní sentiment (jde o jedno z pozitivních hodnocení).</p><h1> <img src="/Blog/PublishingImages/Stranky/python1/sentiment.png" alt="sentiment.png" />Na závěr</h1><p>Pokud vás datová analýza a strojové učení zaujalo, můžete začít u mého příkladu, který jsem umístil ve svojí celkové podobě na <a href="https://github.com/janjilecek/ML_article" target="_blank">github</a>. Strojové učení má velkou škálu možných použití a nepřeberné množství algoritmů, kde se každý hodí pro jinou oblast. Na tyto algoritmy se podíváme příště, do té doby přeji happy machine learning!<br></p><p><em>Jan Jileček</em><br></p><p> <br> </p>odborné;#vzdělávání;#
Když bakalářka dává smyslhttps://www.create-it.cz/Blog/Stranky/bakalarka.aspxKdyž bakalářka dává smysl <p> <strong><em>Zásadní rozhodnutí je pro někoho otázkou vteřin, pro jiného představuje náročný rozhodovací proces. Vstupu do „velkého světa IT" dnešní doba fandí a podporuje ty, kteří v sobě odvahu najdou a zkusí to. Podobně to máme postavené i my v Cleverlance. </em></strong></p><p> <em>Ať už dostanete dobrou radu od rodičů nebo k rozhodnutí dospějete sami, je potřeba udělat první krok. A zároveň mít dobrou sebereflexi a zvolit správnou cestu rozvoje. Při své praxi se nám bohužel často stává, že jen zkušenosti nestačí a je nezbytné disponovat dalšími ingrediencemi - mít předpoklady, pevnou vůli a motivaci. Správný poměr všech uvedených přísad je klíčovým, pokud chcete úspěšně nastartovat svou pracovní cestu již během studia.</em></p><p> <em>Tato ideální kombinace nastala například u Pavla. Pavel studuje Fakultu informatiky a statistiky na VŠE, aktuálně již v magisterském programu se zaměřením na Informační systémy a technologie. Zajímá se hlavně o předměty business inteligence, ekonomie v účetnictví či programování. Před několika měsíci se na jedné z přednášek se od známého dozvěděl o možnosti zúčastnit se JAVA Clever Akademie. A to byl zjevně ten správný podnět.</em></p><p> <strong>Prošel jsi náročným výběrovým řízením a své místo v akademii sis zasloužil. Co vše ti program přinesl?</strong></p><p> Kromě dobré party lidí, kteří byli na stejné vlně jako já, s podobnou úrovní znalostí a zkušeností, jsem získal příležitost během akademie překlápět teorii rovnou do praxe, což se ve škole ne vždy zadaří. Naučil jsem se s programy pracovat efektivněji a znalosti aplikovat do skutečného prostředí projektu, kde všechny podmínky nejsou zdaleka ideální. Získal jsem praktické zkušenosti s programováním nejen v Javě, ale i v dalších programech - Spring, Maven, Hibernate, jak jednotlivé programy reálně fungují, jak nástroje správně využívat, ale taky jak ne. Ale abych jen nechválil (smích), jednodenní blok na Liferay bych třeba vynechal, reálně jej člověk využije jen na vybraném typu projektu.</p><p> <strong>Po absolvování akademie jsi dostal nabídku na pozici developera v interním vývojovém oddělení Application development.</strong><strong>  </strong> <strong>Jaké byly začátky?</strong></p><p> Znalosti z akademie se mi rozhodně v začátcích hodily. Musím přiznat, že to pro mě nebylo úplně jednoduché skloubit studium a práci na poloviční úvazek, ale na druhou stranu jsem věděl, že chci programovat a byla to pro mě skvělá příležitost. S dalšími dvěma kolegy, Bořkem a Honzou, tvoříme dobrý tým. Dokonce mi pomohli i s bakalářkou.</p><p> <strong>Jaké si měl téma bakalářky a jak jsi se k němu dostal?</strong></p><p> Byla to úplná náhoda, tehdy proběhl v Cleverlance interní email s nabídkou bakalářek/diplomek. A dávalo mi to smysl. Vybral jsem si téma z nabídky- „Analýza a implementace unifikovaného logovacího systému", zní to možná trochu suše, ale řešení, které se mi podařilo navrhnout, má reálnou možnost praktického využití na projektu - a to už je zajímavé. Zároveň mi to přišlo jako velká výhoda spojit psaní bakalářky s prací, vycházet z reálných věcí, které znám, ale hlavně mít u sebe schopného spolehlivého kolegu, s nímž mi diskuze a reálná oponentura dala opravdu hodně.</p><p> <strong>Můžeš nám blíže popsat, v čem tedy tvůj návrh spočívá a jaký byl výstup tvé bakalářské práce?</strong></p><p> Představte si nějaký systém, který když spadne, tak ideálně chcete mít informaci o všem, co se stalo, abyste mohli zjistit, proč se to stalo a chybu napravit. Právě tyhle informace lze uchovat prostřednictvím záznamů, tj. logů. To je ten jednodušší případ. Ale představte si, že systémů či aplikací máte vícero a teď vám spadnou všechny najednou. Aplikace běží na různých serverech, tím pádem záznamy o nich jsou uložené na různých místech, v různých formátech. A nyní to teprve začíná být zajímavé (smích). Musíte se dívat do neskutečně velkého množství složek, abyste zjistili, co se nepovedlo, a to je dost časově náročné.</p><p> <strong>Můžeš uvést příklad?</strong></p><p> Tak například systém nám vyhodí chybu: máme pomalé SMS zprávy. Pro nás to znamená, že musíme vyzkoumat, jak dlouho trvalo zprávu odeslat na našich i na klientských systémech, jinými slovy potřebujeme zjistit, za jak dlouho si tenhle konkrétní uživatel na tohle číslo dobil 100,-Kč kreditu.</p><p> <strong>A jaké řešení jsi navrhl, aby to vývojářům zjednodušilo práci?</strong></p><p> Vymyslet řešení znamenalo najít sadu nástrojů, které umožní dávat záznamy do jednoho místa tak, aby šlo v záznamech jednoduše vyhledávat. Využil jsem tedy částečně stávající řešení a ve spolupráci s Honzou, který mi dělal vedoucího práce, jsem toto řešení modifikoval a vylepšil (smích). Vedli jsme s Honzou dlouhé diskuse, zkoušeli různé varianty, jakou to má mít paměť, kolik to bude zpracovávat požadavků atd. Nakonec nám z toho vypadlo celkem zajímavé řešení, které nabízí kombinace nástrojů Elastic Search, Kibana a upravená verze Logback appenderu.</p><p> <strong>Jaké to je mít hotovou bakalářku? A co plánuješ teď?</strong></p><p> Upřímně jsem si oddechl, že už mám hotovo, i když na stupni vítězů s inženýrským titulem a červeným diplomem v ruce ještě nestojím (smích). Beru to tak, že první meta ve škole je za mnou, bakalářka úspěšně obhájena a v práci se účastním dalšího zajímavého projektu, takže se chci více věnovat koníčkům, na které nebylo teď moc prostoru. Plánuju se naučit nové recepty z vegetariánské kuchyně, abych udělal radost své přítelkyni, dostat se na in-liny a třeba si přečíst něco dalšího od Neila Tysona.</p><p> <strong>Pavle děkuji za rozhovor i za důvěru.</strong></p><p>Zdeňka Sacke<br></p><p> <br> </p>odborné;#vzdělávání;#projekty;#
Konference Fenomén 4.0 ve Zlíněhttps://www.create-it.cz/Blog/Stranky/Fenomen_4_0.aspxKonference Fenomén 4.0 ve Zlíně<p>​Už od roku 2015 s kolegy z oboru, jako je <a href="https://www.youtube.com/watch?v=9jmbIEyvsFQ" target="_blank">nestor Průmyslu 4.0 v ČR prof. Vladimír Mařík </a>a další, evangelizujeme odbornou i laickou veřejnost v oblasti digitální transformace a Průmyslu 4.0. V posledních letech ale mnoho příspěvků sklouzává k nudnému opakování zprofanovaných klišé a buzzwordů. Scénář je většinou zhruba stejný: 1. průmyslová revoluce, 2. průmyslová revoluce, 3. a pozor teď to přijde: 4. průmyslová revoluce! Disruptivní změna, jedeme v tom všichni, srovnání čipu mobilního telefonu a čipu Appola 1, Uber, AirBnB, a následuje vysvětlení, že pokud chcete být 4.0, musíte nutně investovat zaručeně pouze do… (dosaď produkt přednášejícího).</p><p>Rozhodli jsme se, že příspěvek Cleverlance na konferenci Fenomén 4.0 pojmeme trochu jinak. Společně s naším technologickým partnerem, společností PTC reprezentovanou Romanem Šedivým, jsme nahlédli do dnešních fabrik. V mnoha z nich jsou už vidět prvky digitalizace. Mají svá <a href="https://cs.wikipedia.org/wiki/Pl%c3%a1nov%c3%a1n%c3%ad_podnikov%c3%bdch_zdroj%c5%af" target="_blank">ERP</a> (byť to stále v některých firmách znamená Excel Resource Planning), někde už implementovali <a href="https://cs.wikipedia.org/wiki/V%c3%bdrobn%c3%ad_informa%c4%8dn%c3%ad_syst%c3%a9m" target="_blank">MES</a> systémy (byť nejpoužívanějším MES zůstává Microsoft Excel Sheet). Ale tyto systémy jsou vlastně obrovskými izolovanými datovými sily, v nichž bez užitku leží terabyty dat. <br></p><p>Posluchačům jsme proto živou praktickou ukázkou předvedli, jakým způsobem lze v rámci konceptu CleverIndustry implementovat digitální orchestrační platformu ThingWorx a proměnit tak suchá data v cenné analytické informace. Ty umožňují přejít<strong> </strong>k datovému řízení továrny, která tak maximalizuje vytížení výrobních kapacit a zároveň optimalizuje chod všech procesů ve výrobním závodě. A v neposlední řadě pomáhá dosahovat maximální kvality produkce.</p><p>Věděli jste například, že napojení jednoho stroje v rámci nástroje <a href="https://www.kepware.com/en-us/" target="_blank">PTC KEPWARE</a> zabere zhruba 50 vteřin? Po 50 vteřinách začínáte získávat data o jeho vytíženosti, počtu vyrobených kusů, nebo procesní data v rámci výrobního procesu. Ta jsou zase důležitá pro kvalitu výrobku. Jde například o teplotu, tlak, kroutící moment a další klíčové procesní hodnoty. Pokud má stroj v sobě zabudované PLC, jsme schopni ho připojit a to pomocí jakéhokoliv ze 174 protokolů, které na světě existují. KEPWARE totiž mluví plynule všemi těmito 174 „jazyky". I to jsme účastníkům konference ukázali v živé ukázce.<br></p><p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/Fenomen_4_0/fenomen-3.jpg" alt="fenomen-3.jpg" style="width:400px;height:300px;" /> </p><p> </p><p>Velký ohlas měla i přednáška kolegy Mikuláše Müllera v rámci Smart stage. I když bylo po obědě, sál praskal ve švech. Mikyho příspěvek nesl jméno „Digitalizace měření a korekcí, aneb cesta k budoucnosti přesného obrábění" a zaměřil se na představení konkrétní implementace. Ta našemu zákazníkovi přináší hmatatelné výsledky a umožňuje mu dramatickým způsobem zvýšit kvalitu produkce a zároveň zkrátit čas potřebný na výrobu.<br></p><p>Čilý ruch pak mezi jednotlivými bloky přednášek panoval na našem stánku, který byl umístěn ve foyer.<br></p><p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/Fenomen_4_0/fenomen-1.jpg" alt="fenomen-1.jpg" style="width:400px;" /> </p><p> </p><p>Třešničkou na dortu byla návštěva vily Tomáše Bati. V tomto inspirativním prostředí jsme měli možnost více než 2 hodiny čerpat inspiraci z fenoménu, jakým Tomáš Baťa byl. Z přednášky ředitele nadace Tomáše Bati, Pavla Veleva, si odnáším jedno: Je potřeba ještě hodně práce na digitální transformaci českého průmyslu. Pak se možná opět staneme špičkou v celosvětovém měřítku tak, jako tomu bylo na počátku 20. století.</p><p> <i>David Řehoř</i><br></p>odborné;#
Jak jsem ovládal hry vlastní myslíhttps://www.create-it.cz/Blog/Stranky/ovladani-her-mysli.aspxJak jsem ovládal hry vlastní myslí<h1></h1> <span style="text-align:justify;">Neuroinformatika je rozsáhlý obor zabývající se zpracováním dat z oblastí neurověd pomocí výpočetních nástrojů. Tyto nástroje jsou tzv. Brain-Computer Interfaces, jsou však velice drahé, ve vědeckých sférách se cena hardwaru pohybuje cenově mezi 20-50 tisíci dolary. Dobrou alternativou pro nadšence a experimentátory jsou proto nástroje na nižší úrovni - mají menší přesnost snímání, ale pro běžné experimenty postačí. Čtečku mozkových vln si tak můžete koupit i vy za cca 10-20 tisíc korun. Jednu z těchto čteček jsem osobně využil k ovládání her, jak jsem to udělal se dočtete dále.</span> <h2>Trocha teorie</h2><p>Nejprve si ale popíšeme pár důležitých pojmů. <em>Elektroencefalografie</em>, neboli EEG, je metoda pro zaznamenávání elektrické aktivity mozku skrz detekci povrchového napětí na pokožce hlavy, kam probíjí elektrické impulsy probíhající při přenášení informací mezi neurony v mozku. K získání elektrického výstupu jsou použity elektrody, které jsou umístěny na pokožku hlavy (v některých případech se používá vodivý gel, jelikož např. ženy mají menší vodivost kůže než muži). Tyto elektrody pak čtou mozkové impulsy ve formě signálu, který odpovídá části mozku, která jej vysílá.<br></p><p>BCI je zařízení, které nevyžaduje ovládání pomocí fyzické aktivity, ale spoléhá čistě na čtení mozkových vzruchů přes elektrody rozmístěné na hlavě.Toto zařízení lze pak použít pro ovládání široké škály dalšího hardware, jako jsou počítače,vozíky, robotické paže, pro implementaci robotického vidění atp. BCI zařízení jsou často používána pro výzkum, mapování, asistenci, augmentaci nebo opravu kognitivních nebo <a href="https://en.wikipedia.org/wiki/Motor_cortex">sensorimotorických</a> funkcí.<br></p><p>Elektrody jsou podle mezinárodně uznávaného "Systému 10-20" rozmístěny na odpovídající pozice na hlavě. Čísla 10 a 20 v názvu značí vzdálenost 10% a 20% od přední/zadní strany hlavy a levé/pravé strany hlavy. Každá pozice má přiřazenou jinou oblast mozkové kůry, pozice vpředu jsou tak zodpovědné za prefrontální kortex, vzadu zase za vizuální kortex.<br></p><p> <img src="/Blog/PublishingImages/Stranky/ovladani-her-mysli/pozice.png" alt="eeg.png" /> <br> </p><h4 style="text-align:center;"> zdroj: <a href="https://en.wikipedia.org/wiki/10%e2%80%9320_system_%28EEG%29#/media/File:21_electrodes_of_International_10-20_system_for_EEG.svg">https://en.wikipedia.org/wiki/10%E2%80%9320_system_(EEG)#/media/File:21_electrodes_of_International_10-20_system_for_EEG.svg</a><br></h4><p>Mozkové vlny mají různou frekvenci, na základě které můžeme přibližně určit, v jakém stavu se zkoumaný mozek nachází. Pokud jsou v mozku dominantní pomalé mozkové vlny, resp. vlny nízké frekvence, člověk se může cítit pomalý neb unavený. Naopak čím vyšší frekvence, tím je obecně člověk soustředěnější a ve střehu. Mozkové vlny se měří v Herzích (Hz). Většina mozkových vln se vyskytuje ve frekvenčním rozsahu od 0.5 do 100 Hz.</p><p>Každé vlnové spektrum je symptomem jiného stavu mozku a každá mozková oblast má jiné „rozpoložení" těchto vln.<br></p><p> <a href="https://www.youtube.com/watch?v=agV1B2l-QLw"> <img src="/Blog/PublishingImages/Stranky/ovladani-her-mysli/video_BCI.png" alt="video_BCI.png" /></a> <br></p><h4 style="text-align:center;">Podívejte se, jak detekce probíhá v praxi - zde je video o nástroji OpenBCI Ultracortex, který jsem použil pro vlastní výzkum.<br></h4><h2>Ovládání her</h2><p>Pro ovládání her jsem použil detekci úmyslu zvednout jednu z končetin. Tento "úmysl" lze detekovat v sensorimotorickém kortexu na frekvenci Mu rytmů. Sensorimotorický kortex je na vrcholu hlavy a signál jeho neuronů měří elektrody C1, Cz a C2 (obrázek výše). Díky tomuto kortexu můžeme pohybovat končetinami. Je zodpovědný za jemnou (prsty) i hrubou motoriku, a také za synchronizaci pohybu (chůze).<br></p><p>Na frekvenci 7.5-12.5 Hz lze detekovat už i jen samotný úmysl zvednout jednu z končetin. K ovládání her samozřejmě postačí i jednodušší detekce - např. v prefrontálním kortexu (za čelem, umožňuje plánovat, držet pozornost, rozhodovat se a dokončovat úlohy) lze snadno detekovat pokles napětí při zavření očí. Lze tak detekovat otevřené a zavřené oči pomocí EEG vln - ale mnohem snazší metoda by v tomto případě byla samozřejmě kamera s detektorem. Výstup pak stačí namapovat na herní příkazy.</p><p> <img src="/Blog/PublishingImages/Stranky/ovladani-her-mysli/graf.png" alt="graf.png" /><br></p><h4 style="text-align:center;">příklad poklesu napětí (mV) v mém mozku při zavření očí a krátké meditaci (10-65 sekund)<br></h4><p>Podobně tomu je i u detekce úmyslu zvednout končetinu. Samozřejmě, že to není snadný úkol. Musel jsem použít několik testovacích subjektů, u kterých jsem nasbíral potřebná data - nechal jsem je koukat na vcelku nudný program, prezentující jim příkazy jako "Mysli na to, jak zvedáš levou ruku" zároveň s vizuálním stimulusem v podobě GIF obrázků z filmů, vyobrazující daný pohyb. Nasbíral jsem tak data (signál, hodnoty mV), ve kterých jsem se snažil naleznout nějaký vzor, který by spolehlivě dokázal rozlišit mezi myšlením na zvednutí pravé ruky/levé ruky atp. K tomu jsem použil strojového učení - pro člověka je to na takovém množství zdánlivě náhodných dat nemožný úkol. Velkou roli hraje také mozkový šum, ruchy vyslané pohyby čelisti nebo těla uživatele a v mysli se odehrávající myšlenky, které mohou proces narušit. Při sbírání dat bylo nutné, aby byl uživatel v klidu a soustředěn.</p><p> </p><p>Na nasbíraná a předzpracovaná EEG data jsem použil klasifikační metody jako <a href="https://cs.wikipedia.org/wiki/Support_vector_machines">Support Vector Machines</a>, <a href="https://en.wikipedia.org/wiki/Gradient_boosting">Gradient Boosting</a> a <a href="https://cs.wikipedia.org/wiki/N%c3%a1hodn%c3%bd_les">Random Forests</a> (v oboru Data Science vcelku běžné metody - nejsou tak silné jako neuronové sítě, ty však při experimentech v jiných výzkumech ukazují podobnou úspěšnost při klasifikaci dat). Určil jsem tak, zda nositel myslí na pravou/levou nohu/ruku - tzn. může použít 4 příkazy nebo namapovat svoje myšlenky na klávesy ve hře.<br></p><p>Metoda je však velice nepřesná, díky již tak nízké přesnosti BCI zařízení. Použil jsem tedy další metodu, a to tzv. <strong>detekci soustředěné pozornosti.</strong></p><h2>Detekce soustředění</h2><p>U dětí s poškozeným prefrontálním kortexem se vyskytuje ADHD a jedna z alternativních léčebných terapií je tzv. neurofeedback - biofeedback terapie využívající BCI zařízení a vizuální hry. Uživatelův mozek se tak díky zpětné vazbě naučí, jak správně držet pozornost.<br></p><p>Pro neurofeedback se v prefrontálním kortexu detekuje poměr alfa (8-13 Hz) a beta vln (>13 Hz) - někdy se používá i poměr mezi alfa a theta (3.5 - 7.5 Hz) vlnami.<br></p><p>Tato detekce se řadí mezi ty snadnější, na vstupním signálu se provede frekvenční analýza a pokud poměr vln spadá pod nějakou hranici, člověk se pravděpodobně nesoustředí. Jinak se soustředí. Na základě toho jsem vytvořil jednoduchou hru, kde je cílem hráče zvednout sochu Buddhy vlastní soustředěnou pozornosti. Prezentoval jsem ji na ExcelFIT konferenci, kde si příchozí mohli vyzkoušet, jak dlouho vydrží. Nejdelší čas byl 38 sekund.<br></p><h4 style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/ovladani-her-mysli/budha.png" alt="budha.png" style="margin:5px;width:650px;" />Hra vytvořena v Unity - pojmenoval jsem ji NeuroBuddha</h4><p>Pokud vás ovládání počítače myslí zaujalo, budete potřebovat vhodný BCI hardware. Já použil OpenBCI Ultracortex IV, který není přiliš vhodný na běžné používání, např. pro analýzu statistik vlastní meditace - z elektrod, které jsou pevně zabodnuté do pokožky hlavy bolí po 30 minutách hlava.<br></p><p>Doporučuji proto alternativní (a pohodlnější) BCI nástroje jako jsou např. Neurosky MindWave, Muse, Emotiv EPOC nebo Neuroelectrics Enobio.<br></p><p> <i>Jan Jileček​</i><br></p>odborné;#vzdělávání;#
5 programovacích jazyků pro začátečníky https://www.create-it.cz/Blog/Stranky/5-jazyku-pro-2020.aspx5 programovacích jazyků pro začátečníky <p>Na sklonku roku si řada lidí dává předsevzetí a často mezi ně patří naučit se něco nového. Je i na vašem seznamu kolonka "naučit se programovat", ale nevíte, který programovací jazyk si vybrat a jak vlastně začít? Připravili jsme pro vás malý přehled pěti nejpoužívanějších jazyků na GitHubu včetně tipů, jak na to.<br></p><h1>Python</h1><p>Je obecně vnímán jako vstupní jazyk pro začátečníky, jelikož je rychlý, jednoduchý a má rozsáhlou komunitu vývojářů. Byl vytvořen s důrazem na čitelnost kódu, který se velice podobá angličtině (tedy vysokoúrovňový jazyk, je daleko od strojového kódu). Obsahuje velké množství knihoven, které slouží pro rozšíření funkcionality skriptů - protože se jedná o skriptovací jazyk, nejsou vytvářeny přímo spustitelné (tzv. kompilované) programy, ale skripty, které Python interpretuje. </p><p>V praxi se hodí například pro psaní skriptů pro urychlení repetitivní činnosti, ať už mezi vědci, výzkumníky nebo běžnými programátory. Využívá se hojně pro analýzu dat, zpracování obrazu, zvuku, jako webový backend (framework Django, Flask) a ve strojovém učení je jeho síla znatelná při rychlém návrhu a používání neuronových sítí, pro které existuje také mnoho Python frameworků (Caffe, TensorFlow, Keras). Pro oblasti, kde se musí dbát na bezpečnost (banky, letectví) se Python nehodí, pracují s ním zejména vědci a výzkumníci - využít se ale může takřka pro cokoliv, co vás napadne - od skriptů pro váš smart home, přes posílání stovek požadavků na server za účelem vyhrát nějakou soutěž, programování 2D her, až po detekci aut ve video stopě kamerového provozu v reálném čase. O novinkách (určených pro pokročilejší) v jeho poslední verzi se dočtete v článku "<a href="/Blog/Stranky/python-novinky.aspx">Novinky v Pythonu 3.8</a>".</p><p>Pokud chcete Python vyzkoušet, stačí si stáhnout jeho interpreter na oficiálním <a href="https://www.python.org/downloads/">webu</a> (který obsahuje rozsáhlou dokumentaci a návody), nebo můžete využít nesčetně kurzů na webech jako jsou Udemy a Coursera. Možností je také online interaktivní iPython - <a href="https://mybinder.org/v2/gh/ipython/ipython-in-depth/master?filepath=binder/Index.ipynb">Jupyter Notebook</a>. Malá zajímavost - tvůrce jazyka, Nizozemec Guido Van Rossum, pojmenoval jazyk podle britské skupiny komiků, Monty Python (Monty Pythonův létající cirkus). Ve srovnání s jinými jazyky pro mě i po letech Python zůstává nejzábavnějším jazykem.</p><img src="/Blog/PublishingImages/Stranky/5-jazyku-pro-2020/Python.png" alt="Python.png" style="margin:5px;width:650px;" /><br><h1>Javascript</h1><p>Javascript je programovací jazyk, který přidává interaktivitu webové stránce (například hry, reakce na stisknutá tlačítka, upozornění při špatně zadaných datech do formulářů, dynamické stylování a animace). Zajišťuje generování obsahu předtím, než je stránka vykreslena v prohlížeči, ale také pro dynamickou změnu obsahu stránky za běhu. Javascript má všestranné použití a je relativně přátelský pro začátečníky. Ve svojí původní podobě se ale dnes skoro nevyskytuje, v praxi ho nahradily nesčetné frameworky, které pro něj vývojáři po celém světě vytvořili. Mezi ty hlavní patří NodeJS, VueJS, ReactJS (vytvořen korporací Facebook) a podobné. </p><p>Rozšiřuje se i díky multiplatformním frameworkům jako je např. <a href="https://facebook.github.io/react-native/">ReactNative</a> - ten umožňuje psát aplikace za použití ReactJS, které budou vypadat stejně jak v prohlížeči, tak i jako aplikace na mobilu (Android, iOS). </p><p>Jeho hlavními výhodami je široká použitelnost, pravidelné aktualizace díky ECMA specifikaci a rychlost, jeho hlavní nevýhodou je zneužitelnost pro webové exploity.</p><p>Pokud ho chcete zkusit, zmáčkněte v prohlížeči F12, klikněte na kartu Console a zkuste napsat console.log ("Hello Javascript") a stiskněte Enter. První Javascript příkaz máte za sebou! Zbytek se naučíte v online <a href="https://javascript.info/">kurzech</a> a pro otestování, jak Javascript funguje v online formulářích poslouží tento interaktivní <a href="https://jsfiddle.net/surveyjs/khsf8rdg/">příklad</a>. Pokročilejší ReactJS se zase můžete naučit na Codeacademy.</p><p><img src="/Blog/PublishingImages/Stranky/5-jazyku-pro-2020/Javascript.png" alt="Javascript.png" style="margin:5px;width:650px;" /><br></p><span style="color:#7d3cbe;font-family:source-sans-pro-light, open-sans, sans-serif;font-size:40px;">Java</span><p>Java je tzv. univerzální programovací jazyk, je navržen pro co nejširší škálu využití, podobně jako Python nebo Javascript. Je multiplatformní a její kód se kompiluje do <a href="https://techterms.com/definition/bytecode">byte kódu</a>, který je spuštěn na Java Virtual Machine (JVM). Javu potkáte dnes hlavně v bankovnictví, pro stavbu podnikových aplikací, v mobilních aplikacích (Android, <a href="/Blog/Stranky/Kotlin1.aspx">Kotlin</a>) a při práci s velkými objemy dat. Banky mají Javu v oblibě kvůli její bezpečnosti a stabilitě, a to zejména ve verzi Java Enterprise Edition. Její bezpečnost a stabilita je ale vykoupena relativní paměťovou náročností a pomalostí. Osobně byla Java můj první jazyk na škole, napsal jsem v ní i první 2D hru (použil jsem framework LWJGL, ve kterém vývojář Notch vytvořil slavnou hru Minecraft), ale v praxi jsem ji shledal spíše nudnou - díky zaměření na podnikové aplikace a bankovní sektor se obvykle jedná o projekty orientované hlavně na vydělávání peněz a maximalizaci zisku. Takže pokud chcete programováním vydělat překvapivě vysoké částky, je Java ideální. Z mojí zkušenosti ale není Java pro lidi, kteří potřebují mít v práci jiný smysl, než jen peníze. Vždy samozřejmě záleží na typu projektu.</p><p>S Javou můžete začít stažením vývojového studia <a href="https://www.jetbrains.com/idea/">IntelliJ IDEA</a>, které se za vás postará o instalaci vývojového prostředí a balíků Java Development Kit a Java Runtime Environment.</p><p>Zajímavost - navzdory tomu, že v Javě byla napsána jedna z nejúspěšnějších her všech dob, Minecraft, není Java vhodná pro vývoj her (nedostatky výše). Herní vývojář Notch ji zvolil proto,  že ji slušně ovládal, ale nepovažoval se v té době za dobrého programátora, proto první verze hry nebyly příliš optimalizované pro plynulý běh.<br></p><p><img src="/Blog/PublishingImages/Stranky/5-jazyku-pro-2020/java.png" alt="java.png" style="margin:5px;width:650px;" /><br></p><h1>Go</h1><p>Go, také známý jako Golang je programovací jazyk vytvořený korporací Google. Poskytuje výbornou podporu pro vícejádrové aplikace a proto ho využívají zejména společnosti, které závisí na distribuovaných systémech (startupy v Silicon Valley). Jinými slovy: pokud se chystáte zapojit do startup kultury, Go je ten správný jazyk.</p><p>Je <a href="https://cs.wikipedia.org/wiki/Typov%c3%a1_kontrola">staticky typovaný</a> (stejně jako Java) a  tudíž je bezpečnější při vývoji a ne tak náchylný k bugům - ideální pro stavění Single Page Aplikací a programů pro vícejádrové procesory. Jedná se o relativně nový jazyk, proto zatím nepodporuje mnoho knihoven a je spíše jednostranný. Podobá se nízkoúrovňovému jazyku C. Hlavní předností jazyka Go je jeho vyjadřovací síla, čistota a efektivita. Začít můžete stažením <a href="https://golang.org/dl/">kompilátoru</a> jazyka a vyzkoušením návodů v dokumentaci.<br></p><p><img src="/Blog/PublishingImages/Stranky/5-jazyku-pro-2020/go.png" alt="go.png" style="margin:5px;width:650px;" /><br></p><h1>R</h1><p>R je jedním z nejčastěji používaných jazyků pro analýzu dat a strojové učení (ML). Součástí jazyka R je vynikající framework a vestavěné knihovny pro vývoj ML algoritmů. Hodí se také pro statistické výpočty, analýzy a pro tvorbu grafů. Ti, co hledají pozici jako datoví analytici, nešlápnou s jazykem R vedle.</p><p>Hlavní výhodou R je jeho schopnost běžet na různých operačních systémech, masivní komunita vývojářů, vysoká rozšiřitelnost a silná podpora dalších knihoven a balíků. Nevýhodou pak je jeho relativní nebezpečnost a špatná správa paměti. Jedná se o open-source, a kvalita některých balíků je podprůměrná. Začít s R můžete stažením vývojového studia <a href="https://rstudio.com/products/rstudio/download/">RStudio</a> a jako tutoriál poslouží skvělé <a href="https://www.youtube.com/watch?v=s3FozVfd7q4">video</a> od Dereka Banase.</p><p><img src="/Blog/PublishingImages/Stranky/5-jazyku-pro-2020/R.png" alt="R.png" style="margin:5px;width:650px;" /></p><p>Ať už si pro rok 2020 vyberete jakýkoliv jazyk, volte pečlivě podle oboru, do kterého se chcete dostat. Tyto jazyky již existují mnoho let a v praxi se stabilně používají. Každý rok se také řadí mezi nejpoužívanější jazyky, takže s nimi nešlápnete vedle. Závisí už jen na vás, jaké dílo s nimi vytvoříte a jakým projektům přispějete svojí kreativitou.</p><p><em>Jan Jileček </em></p>odborné;#vzdělávání;#