Create IT Blog - vzdělávání

 

 

SEO pro začátečníky: co to je a jak fungujehttps://www.create-it.cz/Blog/Stranky/SEO-pro-zacatecniky.aspxSEO pro začátečníky: co to je a jak funguje<p>​​Optimalizace pro vyhledávače zní jako strašidelné technické zaklínadlo, přitom nejde o žádnou raketovou vědu. Pokud pochopíte, jak internetové vyhledávače přemýšlí, máte z poloviny vyhráno. V oboru si navíc přijdou na své jak kreativci, tak analytici.<br></p><h2>Co je to ​​SEO?</h2><p>Anglická zkratka v sobě skrývá slova search engine optimization. Jedná se o soubor různých metod, které mají za cíl přivést na vaše webové stránky co největší množství relevantních návštěvníků z organického vyhledávání. Lidsky řečeno, snažíte se svému webu zajistit co nejlepší pozici v neplaceném vyhledávání.</p><p>Podívejte se např. na výsledky vyhledávání pro dotaz „samsung galaxy s20“. Nejprve nám Google nabízí čtyři placené odkazy (zdravím kolegy PPCčkaře), teprve pod nimi vidíme organické výsledky.  A právě ty jsou náš cíl.</p><p> <img src="/Blog/PublishingImages/Stranky/SEO-pro-zacatecniky/serp.png" alt="serp" data-themekey="#" style="max-width:690px;height:444px;" /> <br> </p><p style="text-align:right;"> <em>Stránka s výsledky vyhledávání, zkráceně SERP (search engine results page)</em></p><h2>Proč je SEO ​​důležité</h2><p>Vyhledávače na první stránku výsledků umisťují weby, které pro daný vyhledávací dotaz považují za vhodný a důvěryhodný zdroj informací. SEO nám takovou pozici pomáhá vybudovat. „Vybudovat“ píšu záměrně – stojí to čas a úsilí. Jde o dlouhodobou promyšlenou strategii, jejíž výsledky uvidíte nejdříve za několik měsíců. Jako spousta dobrých a kvalitních věcí to chce zkrátka trpělivost.</p><h2>5 důvodů, proč SEO věnovat pozorn​​ost</h2><p> <b>1. Organické vyhledávání je často největším zdrojem webové návštěvnosti</b></p><p>Většina návštěvníků webu přichází právě z výsledků vyhledávání. Tuto návštěvnost můžete dočasně podpořit PPC kampaní, obvykle ji ale nejde platit věčně. Budujte postupně svou organickou návštěvnost, abyste nebyli závislí na svých reklamách.</p><p> <b>2. Své značce budujete důvěryhodnost a autoritu</b></p><p>Umělá inteligence vyhledávačů posuzuje např. odkazový profil stránky (počet a kvalitu zpětných odkazů vašeho webu) nebo optimalizaci obsahu, dokáže si také ověřit správnost uvedených informací. Pokud budete na svých stránkách tvrdit, že Microsoft založil Steve Jobs, můžete urputně optimalizovat klíčová slova dnem i nocí, ale na první místa vyhledávání se zkrátka nedostanete.</p><p> <b>3. Dobré SEO znamená lepší uživatelskou zkušenost</b></p><p>Vyhledávače posuzují nejen obsah, ale i technickou stránku webu. Poznají, zda se na mobilech pomalu načítá, kolik času na ní uživatelé tráví anebo zda z ní ihned odcházejí. Cílem je nabídnout uživatelům stránky, na kterých se snadno zorientují a najdou informace, které hledají.</p><p> <b>4. Vycházíte vstříc zájmům svých zákazníků</b></p><p>SEO pracuje s pojmem search intent (záměr vyhledávání). Vyhledávač se snaží pochopit, co uživatel hledá, a nabídnout mu tak odpovídající výsledky. Lidem hledajícím dotaz „jak uvázat kravatu“ nenabídne e-shop, ale videonávod. Při zadání „pizza žižkov“ nebudou mezi výsledky recepty, ale mapa s žižkovskými provozovnami nabízejícími pizzu a s recenzemi návštěvníků. Přizpůsobte proto svůj obsah záměru svých zákazníků.</p><p> <b>5. SEO můžete měřit</b></p><p>Oproti PPC kampaním nemáte sice k dispozici jednoduché metriky jako třeba ROI, se správně nastavenými cíli ale můžete sledovat takřka cokoliv. Důležité je umět si spojit všechny střípky dohromady a zjistit, jak spolu souvisí. Mezi nejčastěji sledované metriky patří vývoj organické návštěvnosti v čase, bounce rate, pozice webu v organickém vyhledávání nebo počet indexovaných stránek.</p><p> <span style="color:#333333;font-family:farnham-web-medium, open-sans, sans-serif;font-size:1.46em;">Jak funguje vyhle​​​dávání?</span><br></p><p>Vyhledávač funguje jako knihovna. Sbírá informace, tvoří si z nich katalog a na požádání nabídne relevantní zdroje k danému tématu. Pravidelně vysílá své roboty (též boty nebo crawlery), aby stránky procházely a shromáždily informace o jejich obsahu. Informace o stránkách si ukládá (indexuje) a postupně si tak buduje svou znalostní bázi (index). Když zadáte do vyhledávání svůj dotaz, vyhledávač se ve svém indexu snaží najít pomocí algoritmu co nejrelevantnější odpověď.<br></p><p> <img src="/Blog/PublishingImages/Stranky/SEO-pro-zacatecniky/crawl%20bez%20textu.PNG" alt="crawl bez textu" data-themekey="#" style="max-width:690px;" /> <br> </p><p>Relevanci stránek vyhledávače posuzují na základě mnoha faktorů, jejichž seznam a popis vydá na samostatný článek. SEO faktory rozdělujeme na tzv. on-page a off-page.</p><p>Mezi on-page faktory patří vše, co jako autor webu můžete přímo ovlivnit. Patří sem veškerý obsah, jeho kvalita, zpracování nebo použití klíčových slov a nejčastěji vyhledávaných frází. Důležitá je také rychlost webu, struktura url adres a navigace, přizpůsobení webu pro mobilní vyhledávání a jeho přístupnost pro roboty.</p><p>Off-page faktory naopak zahrnují prvky, které nemáte plně pod kontrolou a ovlivňují je návštěvníci a další stránky. Typicky se jedná o počet a kvalitu zpětných odkazů nebo sdílení obsahu uživateli na sociálních sítích.</p><h2>Pro které weby má SEO s​mysl?</h2><p>Pro všechny, bez debat. Každý web nicméně potřebuje jiný přístup. E-shopy nebo srovnávače zboží nesmí opomíjet technickou stránku SEO, pravidelně kontrolovat indexaci a hlídat si např. správné fungování filtrace. Využijí např. možnost propisovat do výsledků vyhledávání cenu produktu, jeho dostupnost a hodnocení. Jinak se bude chovat zpravodajský portál, který je závislý na přístupnosti a rychlosti webu na mobilních zařízeních, a jinak zase blog o vaření, pro který je klíčový především líbivý obsah.</p><p>Osobně mě na SEO nejvíc baví jeho oborový přesah. Pro práci s obsahem čerpám ze svých zkušeností z copywritingu, v technickém SEO mi pomáhá znalost HTML a alespoň základní povědomí o Javascriptu. Díky SEO si postupně rozšiřuji znalosti o základy UX, psychologie, programování nebo business analýzy. V příštím článku vám představím 10 nejdůležitějších SEO faktorů a moc ráda se s vámi uvidím na některém z dalších školení.</p><p>​ <i>Kateřina Martínková</i><br></p><p> <i>úvodní foto: <a href="https://unsplash.com/%40merakist" target="_blank">Merakist​</a>, Unsplash<br></i></p><p> <br> </p>odborné;#vzdělávání;#
Vytvoř noční hororovou atmosféru v Unityhttps://www.create-it.cz/Blog/Stranky/Unity3Dzaver.aspxVytvoř noční hororovou atmosféru v Unity<p>​​​​​V poslední části tohoto Unity tutoriálu vylepšíme vzhled původní scény. Přidáme lepší modely, pohrajeme si s celkovou atmosférou a vytuníme “game feel".<br></p><p>​​V podstatě vytvoříme toto:<br></p><p> <img src="/Blog/PublishingImages/Stranky/unity3D6/horor_unity.gif" data-themekey="#" alt="unity horror" style="max-width:600px;" /> <br> </p><p>...z tohoto:<br></p><p> <img src="/Blog/PublishingImages/Stranky/unity3D6/original.png" data-themekey="#" alt="basic unity style" style="max-width:600px;" /> <br> </p><p>Nejprve změníme barevný prostor na Lineární přes <em>Edit | Project settings</em>. Barvy budou vypadat přirozeněji.<br></p><p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/unity3D6/barvy.png" data-themekey="#" alt="barevny prostor v unity" style="max-width:500px;" />  </p><p></p><p>Objekt <em>Plane </em>odstraníme a nahradíme ho novým terénem. Ten přidáme jako nový 3D objekt.<br></p><p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/unity3D6/3DSettings.png" data-themekey="#" alt="unity 3D settings" style="max-width:500px;" /> <br></p><h2>Tvorba terénu</h2><p>Vybereme objekt <em>Terrain</em> a přepneme se na kartu <em>Paint terrain</em>. Zvolíme možnost <em>Paint texture</em>.<br></p><p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/unity3D6/painttexture.png" data-themekey="#" alt="unity paint texture" style="max-width:500px;" />  </p><p> ​ ​<span style="text-align:justify;">Vytvoříme novou vrstvu:</span> </p><p style="text-align:center;"> ​<img src="/Blog/PublishingImages/Stranky/unity3D6/layer.png" data-themekey="#" alt="unity new layer" style="max-width:400px;" /><br></p><p>Pro textury hlíny si stáhneme a importujeme balík <em>Outdoor Ground Textures</em> z <em>Asset store</em>.<br></p><p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/unity3D6/importbaliku.png" data-themekey="#" alt="unity import textury" style="max-width:500px;" />  </p><p></p><p>Poté vybereme nově staženou texturu přes <em>Create layer</em> menu.<br></p><div style="text-align:center;"> ​ <img src="/Blog/PublishingImages/Stranky/unity3D6/7vybertextury.png" data-themekey="#" alt="create layer menu" style="max-width:500px;" /> ​<br><br></div><p>Do nové vrstvy také importujeme tzv. <em>normal map</em> - ta určuje, jak se bude na texturovaném povrchu zalamovat světlo, aby tvořilo iluzi plastického objektu (pro představu např. povrch cihlové zdi, co je 2D, ale zdá se 3D díky normálové mapě).<br></p><div style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/unity3D6/normalmap.png" data-themekey="#" alt="terrain layer unity" style="max-width:500px;" />​ </div><div style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/unity3D6/7vybertextury.png" data-themekey="#" alt="unity select texture" style="max-width:600px;" /> <br> </div><p>Po přidání textury hlíny scéna vypadá následovně:<br></p> <img src="/Blog/PublishingImages/Stranky/unity3D6/10shlinou.png" data-themekey="#" alt="unity scrn" style="max-width:600px;" /> ​ <h2>Nové mod​​ely</h2><p>Doposud jsme používali základní modely ze Synty Polygon balíku. Ty teď nahradíme. Já použiju placené modely, co mám k dispozici, vy můžete použít jakékoliv modely máte. Vybírám další ze série Polygon modelů, tentokrát Polygon adventure.<br></p>​ <p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/unity3D6/11polygonadventure.png" data-themekey="#" alt="import unity package" style="max-width:500px;" /><br><br></p><p>Nahrazuji většinu modelů ve scéně - místo auta přidám studnu, dům nahradím chatkou a pro model nepřátel importuji <a href="https://assetstore.unity.com/packages/3d/characters/humanoids/zombie-30232">zombie model</a> z Unity Asset Store (jak použít jeho animace si můžete přečíst v <a href="/Blog/Stranky/unity3D.aspx">prvním dílu</a> tohoto seriálu).</p><h2>Atmos​féra</h2><p>Projekt můžeme <a href="https://learn.unity.com/tutorial/upgrading-an-existing-project-to-use-hdrp-2019-2">snadno převést</a> do HDRP (High definition pipeline) pro rozsáhlejší možnosti nastavení grafiky. Po převodu do HDRP můžeme importovat tzv. <em>volume</em>s. Ty jsou zodpovědné za lokální i globální nastavení post-processingu (aplikování filtrů na grafický výstup), osvětlení a atmosféry.<br></p><p>Importujeme novou <em>Sky and Fog volume</em>.<br></p><p> <img src="/Blog/PublishingImages/Stranky/unity3D6/fogvolume.png" data-themekey="#" alt="fog unity" style="max-width:400px;" /> <br> </p><p>Ta ihned změní vzhled scény k lepšímu. Po chvíli hraní si s nastavením (dokumentace <a href="https://docs.unity3d.com/Packages/com.unity.render-pipelines.high-definition%407.1/manual/Override-Physically-Based-Sky.html">Fyzikálně založené oblohy</a>) dociluji tohoto vzhledu:<br></p><p> <img src="/Blog/PublishingImages/Stranky/unity3D6/svetlo.png" data-themekey="#" alt="light in unity" style="max-width:600px;" /> <br> </p><p>Objektu osvětlení <em>Directional Light </em>nastavíme intenzitu na 0.07 a scéně tak dáme noční nádech.<br></p> <img src="/Blog/PublishingImages/Stranky/unity3D6/nocninadech.png" data-themekey="#" alt="nocni nadech" style="max-width:600px;" /> <p>Nakonec přidáme mlhu a stromy.​</p><h2>Další úpravy te​​rénu, trávy a stromů<br></h2><p>Z <em>Asset store</em> si stáhneme <em>Grass and Flowers Pack 1:</em></p><p style="text-align:center;"> <em> <img src="/Blog/PublishingImages/Stranky/unity3D6/flowerspack.png" data-themekey="#" alt="unity flowerspack" style="max-width:500px;" /> </em></p> <em></em> <p>Ačkoliv nám HDRP propůjčuje rozšířenou funkcionalitu, v některých ohledech stále zaostává - proto nemůžeme použít klasickou metodu “kreslení" trávy na terén jako detail shader, ale musíme kreslit trávu jako stromy. K tomu využijeme modely trávy z balíku volně dostupného na Asset store jménem <i>Book of the Dead</i> (jedná se o demo scénu poskytovanou přímo Unity).</p><div style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/unity3D6/bookofdead.png" data-themekey="#" alt="book of dead" style="max-width:500px;" /> </div><p>Balík přidáme do projektu a importujeme pouze složku <i></i><em>Art.</em></p><div style="text-align:center;"> ​<img src="/Blog/PublishingImages/Stranky/unity3D6/art.png" data-themekey="#" alt="unity art" style="max-width:500px;" /></div><p> <br></p><p>V objektu <i>Terrain</i> se přepneme na kartu <i>Paint trees</i>. Vybrat objekt stromu lze přes <i>Edit trees</i>a <i>Select prefab</i>.<br></p><p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/unity3D6/prefab.png" data-themekey="#" alt="unity select prefab" style="max-width:500px;" />  </p><p></p> <i></i>Vybírám <i></i><em>GrassGreen</em> z importované složky <i></i><em>Art:</em><div><i>​<br></i><em></em> <div><div style="text-align:center;"> <i> <img src="/Blog/PublishingImages/Stranky/unity3D6/grassgreen.png" data-themekey="#" alt="unity grass green" style="max-width:500px;" /> <br></i> </div><p></p><div style="text-align:left;"> A můž​eme malovat na terén! </div><p></p> <img src="/Blog/PublishingImages/Stranky/unity3D6/malovatnateren.gif" data-themekey="#" alt="unity terrain painting" style="max-width:600px;" /> <p> Stejnou metodu použijeme pro její původní účel, a totiž malování stromů na terén. Vybereme model stromu a můžeme malovat.<i></i></p><div style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/unity3D6/muzememalovat.png" data-themekey="#" alt="unity paint" style="max-width:600px;" /> </div><div style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/unity3D6/muzememalovat2.png" data-themekey="#" alt="paint in unity" style="max-width:600px;" /> <br> </div><p> Teď už jen stačí spustit hru a máme noční hororovu scénu s hordou zombie!<br></p> <img src="/Blog/PublishingImages/Stranky/unity3D6/spustit.png" data-themekey="#" alt="unity play" style="max-width:600px;" /> <p> Nyní je vše hotovo, hra je zakončena a tím i tento seriál Unity tutoriálů. Tento díl nemohu sdílet na githubu, jelikož obsahuje placené modely, které podléhají licenci. Pro scénu použijte modely z Unity asset store nebo Sketchfabu, jsou zde dostupné tisíce bezplatných modelů s otevřenou licencí. A to je vše! Doufám, že jste si mé návody užili a něco nového se přiučili.<br></p><p> <i>Jan Jileček</i></p><p> <em></em></p></div></div>odborné;#hobby;#vzdělávání;#
Testing Clever Academyhttps://www.create-it.cz/Blog/Stranky/testing-akademie-2020.aspxTesting Clever Academy<p style="display:none;">​​​​​​​​​​​​Vstup s námi do světa IT a pojď se naučit testovat software!​ Naši průvodci tě provedou cestami a stezkami až na tvou pomyslnou K2 – získáš svou příležitost v jiném oboru, ve kterém zúročíš své analytické a kritické myšlení.</p> ​<div class="ms-rtestate-read ms-rte-wpbox" unselectable="on"><div class="ms-rtestate-notify ms-rtestate-read 7011e392-79f3-4920-88bc-448b0e5808ac" id="div_7011e392-79f3-4920-88bc-448b0e5808ac" unselectable="on"></div><div id="vid_7011e392-79f3-4920-88bc-448b0e5808ac" unselectable="on" style="display:none;"></div></div><p>​​<br><br></p>vzdělávání;#
Unity 3D: obrana proti hordám nepřátel a částicové efektyhttps://www.create-it.cz/Blog/Stranky/unity3D5.aspxUnity 3D: obrana proti hordám nepřátel a částicové efekty<p>V této části Unity tutoriálu si ukážeme, jak se lze bránit proti hordám nepřátel pomocí telekineze, kterou jsme si naprogramovali <a href="/Blog/Stranky/telekineze.aspx">minule</a>, a vyzkoušíme si částicové efekty.<br></p><p> <img src="/Blog/PublishingImages/Stranky/unity3D5/unity_obrana.gif" alt="unity obrana" data-themekey="#" /> <br> </p><p>Nejprve musíme přidat kolizní box na nepřátelský model, abychom mohli detekovat kolize s hozenou kostkou. Na prefab "Enemy" tedy přidáme Capsule Collider a nastavíme ho jako Trigger (<em>Is Trigger</em>). To zajistí, že hráč ani hozený projektil nebude používat fyziku při kolizi. Kolizní box tak bude sloužit čistě pro detekci nárazu. A jelikož ho vkládáme do tzv. prefabu, aplikuje se následně na všechny vygenerované nepřátele. <br></p><p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/unity3D5/2capsule.png" alt="capsule unity" data-themekey="#" style="width:400px;" /><br></p><p>Pro efekt "smrti" nepřítele vytvoříme nový <em>Particle Effect</em>. Parametry jsem nastavil přibližně tak, aby efekt evokoval výbuch krve v rámci low-poly grafiky. Na obrázku níže je přesné nastavení, particle efekty často vyžadují chvilku nastavování, než se přiblížíme ke kýženému výsledku. V tomto efektu jde hlavně o <em>Start Color</em> (nastavení barvy), <em>Emission </em>(ovládání generátoru), <em>Shape </em>(tvar vysílání částic) a <em>Collision </em>(nastavení fyzikální kolize s okolím). <br></p><p> <img src="/Blog/PublishingImages/Stranky/unity3D5/kolize.gif" alt="kolize" data-themekey="#" /><br></p><p>A nastavení generátoru:<br></p><p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/unity3D5/4deathboom.png" alt="deathboom" data-themekey="#" style="margin:5px;width:400px;height:643px;" /> <br></p><p>Po jeho vytvoření ho opět přetáhneme do <em>Assets</em>, stejně jako předchozí objekty, aby se z něj také stal <em>prefab</em>. Bude ho pak možné hromadně generovat a dále používat bez nutnosti hledat objekt ve scéně.<br></p><p>Ve skriptu Enemy.cs, který jsme tvořili v předminulém dílu, vytvoříme novou proměnnou <em>deathSplash</em>, která bude držet referenci na <em>prefab</em> s výbuchem krve. Přidáme metodu <em>OnTriggerEnter</em>, která se používá pro detekci začátku kolize s jiným objektem. V moment kolize detekujeme, zda objekt, který s nepřítelem koliduje, má dostatečnou rychlost (tzn. zda hráč hodil krabici s dostatečnou silou, aby mohl "zranit" nepřítele). Pokud tomu tak je, zničíme objekt nepřítele a na jeho pozici vytvoříme instanci objektu <em>deathSplash</em>.</p><p> <img src="/Blog/PublishingImages/Stranky/unity3D5/5deathsplash.png" alt="5deathsplash.png" data-themekey="#" style="margin:5px;max-width:640px;" /></p>Teď už jen přiřadíme prefab s efektem výbuchu do proměnné deathSplash, spustíme, a je hotovo! <div> <br> <p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/unity3D5/6enemy.png" alt="6enemy.png" data-themekey="#" style="width:400px;" /><br></p><p> </p><p>Doufám, že jste si ničení nepřátel užili. Pro kompletní kód této části tutoriálu navštivte můj <a href="https://github.com/janjilecek/unity_tutorial/blob/d5e91e566c2ca574d6e2a90226fe4a0b16669516/Assets/Scripts/Enemy.cs" target="_blank">github</a>. V dalším díle vylepšíme grafiku hry.<br></p><p> <br> </p><p> <i>Jan Jileček</i><br></p><p> <br> </p></div>hobby;#vzdělávání;#
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í;#
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;#
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í;#
Příběh Testing Clever Akademiehttps://www.create-it.cz/Blog/Stranky/TCA.aspxPříběh Testing Clever Akademie<p>​​​Představte si zábavnou práci, která má budoucnost, potenciál, je každodenní výzvou a budete se do práce těšit. Pak si představte, že se na ní můžete připravit během jediného týdne a nemusíte studovat roky. To není jen iluze, to vám umožní Testing Clever Akademie!</p><h2>O co vlastně jde? </h2><p>​Celé odvětví IT neuvěřitelně roste a vzhledem k nezbytnosti technologií pro dnešní svět a každodenní život bude vývoj neustále pokračovat. A všichni víme, že se veškeré technologie rozvíjí raketovou rychlostí. A že ten, kdo zaspí, bude konkurenci dohánět jen velmi těžko. Aplikace a systémy, které nám usnadňují naprosto běžné činnosti našeho života, se musí jako každý jiný výrobek náležitě testovat, než jsou představeny veřejnosti, a to jak z důvodu kvality, tak z důvodu vysokých požadavků. </p><p>Práce profesionálních testerů spočívá v navrhování, spouštění a organizování manuálních i automatických testů. To se můžete naučit pouze jako součást několika málo inženýrských programů na vysokých školách. Tam nebude ale věnován studiu testování takový prostor, jako u nás. <strong>Během jediného týdne se v našem kurzu naučíte vše potřebné, abyste se mohli začít živit jako tester/ka. </strong>Co si přát víc? Co třeba tohle: úspěšným absolventům rovnou nabízíme pozici u nás v <a href="http://www.cleverlance.cz/?utm_source=blog&utm_medium=banner&utm_campaign=Recruitment">Cleverlance </a>a následně se pečlivě staráme o jejich profesní rozvoj. <strong>S ohledem na budoucnost jde o skvělou kariéru, která otvírá neustále nové a nové možnosti, protože IT business opravdu jen tak neskončí</strong>.</p><h2>Příští Testing Clever Akademie se koná 24. - 28. 2. 2020 </h2><p>Můžete se hlásit na první akademii v roce 2020! <br></p><p> <img src="/Blog/PublishingImages/Stranky/TCA/Letak-TAC-2019-02.png" alt="Letak-TAC-2019-02.png" /> <br> </p><h2>Chcete vědět, jestli máte nadání stát se testerem? </h2><p> <strong>Zkuste najít co nejvíce chyb v následujícím screenshotu a v případě zájmu o účast napište na e-mail <a href="mailto:%20justyna.neuhortova@cleverlance.com">justyna.neuhortova@cleverlance.com</a>, kolik a jakých chyb jste našli. A nezapomeňte přiložit své CV!  </strong></p><p> <strong> <img alt="tca.png" src="/Blog/PublishingImages/Stranky/TCA/tca.png" /> <br></strong></p><h2>Jak to začalo?</h2><p>Na jaře roku 2015 jsme uspořádali 1. ročník Testing Clever Akademie ("TCA"). Vymysleli jsme koncept, vybrali kandidáty, vytvořili plán školících dnů a zajistili následné začlenění budoucích kolegů a kolegyň do celého týmu. Hledali jsme a hledáme hlavně nadšené a zvídavé mladé lidi, kteří se o testing, programování ale i kompletní IT odvětví zajímají. </p><p>Společně s největšími specialisty v oboru jsme vybrali ty podstatné body, které musí každý tester ovládat. Koncept a obsah upravujeme po každé další akademii tak, aby byla vždy zajištěna aktuálnost. Pouze vyzkoušením a testováním může být ověřena funkcionalita daného systému. <br></p><p> <img alt="TCA_class.jpg" src="/Blog/PublishingImages/Stranky/TCA/TCA_class.jpg" /> <br> </p><h2>Jak to probíhá?</h2><p>Pokud vás možnost zúčastnit se akademie zaujala, není nic jednoduššího, než číst dál. </p><p>První kontakt s námi proběhne přes HR. Motivace a předpoklady jsou velice podstatné pro další bod a tím je <b>závazná pozvánka</b> na Testing Clever Akademii. Tak se stanete účastníkem a my vás pod vedením expertů – našich zkušených kolegů a kolegyň – naučíme vše, co potřebujete k profesi testera či testerky. </p><p>Během týdenního kurzu se seznámíte s metodikou, SQL a databázemi, analýzami a základními testovacími technologiemi. V poslední den si vaše nově nabyté znalosti vyzkoušíme. Pro ty nejúspěšnější máme připravenou pracovní pozici na HPP v Praze a navíc naši tři nejlepší absolventi získají jako bonus finanční odměnu v hodnotě 4, 6 a 10 tisíc korun. Pracovní nabídky nejsou omezené počtem, ale odvíjejí se od vaší pracovitosti a schopností.</p><p> <br> </p><h2>Naše akademie má téměř 50​procentní úspěšnost absolventů. </h2><p>Budoucí absolvent by měl být především <strong>bystrý, pečlivý a pohotový, mít povědomí o IT </strong>- zdravý rozum a analytické myšlení jsou důležitější, než notoricky naučené poučky či citace. Týmový duch, ale zároveň schopnost samostatné práce, perfektní čeština či slovenština, trocha angličtiny a možnost pracovat na HPP po absolvování, jsou veškeré požadavky! <br></p><p>V další části se můžete podívat na pár krátkých příběhů našich úspěšných účastníků!</p><h2>Medailonky</h2><p>   <img alt="Klara.png" src="/Blog/PublishingImages/Stranky/TCA/Klara.png" style="margin:5px;width:120px;height:120px;float:right;" /></p><p>Po ukončení VŠE jsem zvažovala, kde najít uplatnění. Testování SW mi přišlo jako vhodný způsob, a když jsem vyhrála TCA, už jsem se mohla jen těšit na projekt. </p><p style="text-align:right;">Klára</p><p style="text-align:right;"> </p><p> <img alt="Martin_OK.png" src="/Blog/PublishingImages/Stranky/TCA/Martin_OK.png" style="margin:5px 20px;width:120px;height:120px;float:left;" /> </p><p>Mám vystudovanou střední průmyslovku se zaměřením na IT a TCA mi přinesla hlavně možnost získat pracovní uplatnění jako tester bez předchozí praxe. Mám za sebou několik projektů v telekomunikacích a pořád se mám co učit. </p><p style="text-align:left;">Martin</p><p> <img alt="Petra_ok.png" src="/Blog/PublishingImages/Stranky/TCA/Petra_ok.png" style="margin:0px 20px 30px 15px;width:120px;height:120px;float:right;" /> </p><p style="text-align:right;"> </p><p>Vždycky jsem byla nadšená pro IT, ale nevěděla jsem, jak začít. TCA mi pomohla naučit se základům testování, které nyní můžu využít na projektu. </p><p style="text-align:right;">Petra</p><p style="text-align:right;"> </p><p> <img alt="Run.png" src="/Blog/PublishingImages/Stranky/TCA/Run.png" style="margin:5px 20px;width:120px;float:left;" /> </p><p> Díky TCA jsem se dostal na zajímavé projekty nejdřív v telekomunikacích a nyní i v bankovnictví. Rád se učím novým technologiím a nástrojům, v čemž mi Cleverlance dává prostor. Možná i proto jsem se v TCA umístil na prvním místě v závěrečné soutěži. </p><p>Run</p><p> </p><p> <img alt="Martina.png" src="/Blog/PublishingImages/Stranky/TCA/Martina.png" style="margin:5px 20px;width:120px;float:right;" /> </p><p>O TCA jsem se dozvěděla od kamarádky a přišla mi jako fajn způsob, jak si „nanečisto“ vyzkoušet svou budoucí práci. Z testerky jsem se po půl roce stala databázovou vývojářkou a práce mě zkrátka baví. </p><p style="text-align:right;">Martina</p><p style="text-align:right;"> </p><p> <img alt="Pavel_ok.png" src="/Blog/PublishingImages/Stranky/TCA/Pavel_ok.png" style="margin:5px 20px;width:120px;height:120px;float:left;" /> </p><p style="text-align:left;">Od tej doby, čo som sa zúčastnil I. ročníku TCA, pracujem v Cleverlance ako Test analytik. Mám za sebou už veľa práce na niekoľkých projektoch v telekomunikáciách a stále sa mám čo učiť. TCA mi priblížila podstatu reálnych projektov a vďaka mojim analytických schopnostiam som sa po jej absolvovaní stal Test analytikom. </p><p style="text-align:right;">Pavel</p><p style="text-align:left;"> </p><p> <img alt="Simona_OK.png" src="/Blog/PublishingImages/Stranky/TCA/Simona_OK.png" style="margin:5px 20px;width:120px;float:right;" /> </p><p>Jsem absolventkou VŠE, při které jsem pracovala na administrativní pozici. TCA mi dala možnost začít pracovat v IT. Hodně mě při jejím průběhu zajímala analýza, a jelikož jsem v ní byla dobrá, našla jsem v ní i uplatnění a působím na telco projektu jako Test analytička. </p><p style="text-align:right;">Simona </p><p> </p><h2>A kdo za to všechno může?</h2><table width="100%" cellspacing="0" style="border:0px;"><tbody><tr><td style="width:25%;vertical-align:top;">​<img alt="MiCakrt.png" src="/Blog/PublishingImages/Stranky/TCA/MiCakrt.png" style="width:200px;" /></td><td style="width:75%;padding-bottom:40px;"><p>​V Cleverlance jsem začínal zhruba před 16 lety na pozici Testera na projektu v bance. Za tu dobu jsem vystřídal mnoho projektů, což je i důvod, proč mi práce přijde stále dynamická a mám možnost získávat neustále nové zkušenosti. Dnes zastávám funkci Competence Leadera pro oblast testingu a stojí za mnou tým více než 200 QA specialistů. Předloni jsem se stal i garantem programu pro začínající testery - Testing Clever Akademie, která mi přijde jako skvělý způsob, jak si najít a vychovat vlastní testery a začínající analytiky. Všichni noví kolegové a kolegyně se zapracovali, stali se platnými členy týmu a pracují na reálných projektech v bankovnictví a telekomunikacích. </p><p style="text-align:right;">Michael Čakrt<br> QA Competence Leader a garant TCA</p></td></tr></tbody></table><table width="100%" cellspacing="0" style="border:0px;"><tbody><tr></tr></tbody></table><p style="text-align:justify;"> </p><p style="text-align:justify;"> A pokud chcete vědět, jak vypadá velký testerský projekt v praxi, přečtěte si tento článek: <br> <a href="/Blog/Stranky/TaaS-na-O2.aspx">http://www.create-it.cz/Blog/Stranky/TaaS-na-O2.aspx</a> </p><p style="text-align:justify;"> <em>Článek původně z 6.1.2016 byl aktualizován ke dni   7. 10. 2019.</em></p>vzdělávání;#