Create IT Blog - odborné

 

 

Slavíme 20 let Cleverlance!https://www.create-it.cz/Blog/Stranky/slavime20let.aspxSlavíme 20 let Cleverlance!<p>​Samotáři. Gladiátor. X-Men. Tyto filmy měly premiéru v roce 2000. Stejně jako první část počítačové hry The Sims. Mohli jste si koupit první flash disk s kapacitou 8 MB, stál 1131 Kč.</p><h2>A světlo světa v tomto roce poprvé spatřila také Cleverlance.<br></h2><p>20 let v IT firmě by mohlo vzbuzovat i pocit neklidu. Není to v tak rychlém oboru moc? Jak se dá držet krok s vývojem, když jako firma zrajete? V Cleverlance odpovídáme: 20 let je v klidu, když „nedržíte krok". Když ten krok udáváte.</p><h2>Vyvíjíme se a vyvíjíme software<br></h2><p>Věděli jste, že první zakázku jsme měli v Německu a šlo o projekt v jazyce Java? Dnes máme projekty, zakázky a produkty v řadě programovacích jazyků a odvětví. V Cleverlance se stále vyvíjíme a když je potřeba, adaptujeme se na měnící se podmínky - nové technologie, požadavky zákazníků, styl řízení projektů. Neustále vše testujeme, jednak aby bylo chyb co nejméně a také abychom se z nich poučili. Rozmanitost je u nás tedy zaručena. Aby ne, je nás k tisícovce a každý v našem týmu je jiný a má své superschopnosti: někdo je víc stratég, někdo analytik, někdo mluví kódem a někdo projektuje v obrazech. Důležité je, že se umíme domluvit a ctíme společné <a href="/Blog/Stranky/hodnoty.aspx">hodnoty</a>.<br></p><h2>Různé živočišné druhy, jeden společný cíl</h2><p>Proč mluvíme o evoluci, adaptaci a diverzitě? Rozhodli jsme se, že oslavu 20. narozenin si nenecháme ujít ani v podmínkách, které hromadným oslavám právě nepřejí. V příštích týdnech vám představíme téma <strong>20 let evoluce druhů.</strong> Seznámíme vás s tím, kde v přírodě byste našli paralely s naším týmovým uspořádáním a způsobem fungování a jaké naše superskills můžete využívat. To, jací jsme, je evoluční výhodou i pro vás, ať už jste našimi kolegy, klienty či partnery.<br><br>Sledujte naše sítě: <a href="https://www.facebook.com/Cleverlance/" target="_blank">Facebook</a>, <a href="https://www.instagram.com/cleverlance_com/">Instagram</a> a <a href="https://www.linkedin.com/company/17441">LinkedIn</a><br></p><p><br>#20letcleverlance #20letevolucedruhu #slavime20let #WeCreateIT<br></p>odborné;#
Vytvořte si nepřátele. V Unityhttps://www.create-it.cz/Blog/Stranky/unity3D3.aspxVytvořte si nepřátele. V Unity<p>​V této části seriálu o herním vývoji si ukážeme jak vygenerovat nepřátelskou hordu. Ta nás bude pronásledovat a bude schopna fyzicky interagovat s herním světem. Pro základní nastavení scény a animace se podívejte na <a href="/Blog/Stranky/unity3D.aspx">první část seriálu</a> a pro ovládání postavy hráče na <a href="/Blog/Stranky/unity3D2.aspx">část druhou</a>. Pokud máte vše nastaveno, můžeme se do toho pustit!<br></p><h2>Veřejný nepřítel #1</h2><p>Nejprve si vytvoříme nový herní objekt, který pojmenujeme Enemy. <br></p><div style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/unity3D3/Picture%201.png" alt="Picture 1.png" style="margin:5px;width:400px;height:195px;" /> <img src="file:///Users/veronikajandova/Library/Group%20Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image002.jpg" alt="" style="width:690px;margin:5px;" /> </div><p style="text-align:justify;">Balík 3D modelů <em>Synty</em>, který jsme použili minule, obsahuje i herní charaktery. Jsou zde 4 "fazole" a normální muž a žena. Mít hordu modelů stejných jako používáme pro hráče, by byla nuda, takže volím "policejní fazoli". Model přetáhnu do scény.<br></p><p style="text-align:left;"> <img src="/Blog/PublishingImages/Stranky/unity3D3/Picture%202.png" alt="Picture 2.png" style="margin:5px;width:650px;" />Model přiřadíme pod objekt <em>Enemy.</em><img src="file:///Users/veronikajandova/Library/Group%20Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image006.jpg" alt="" style="margin:5px;" /><img src="/Blog/PublishingImages/Stranky/unity3D3/Picture%203.png" alt="" /></p><p>Nyní vytvoříme skript, co bude nepřítele ovládat. Pojmenujeme ho taktéž <i>Enemy</i> a přiřadíme <i>Enemy</i> objektu.  <img src="file:///Users/veronikajandova/Library/Group%20Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image008.jpg" alt="" style="margin:5px;" /><br></p><p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/unity3D3/Picture%20x.png" alt="Picture x.png" style="width:690px;height:260px;" /> </p><p> </p><h2>Hledání cesty a pronásledování</h2><p>Pro ovládání navigace nepřítele budeme potřebovat Navigační panel:</p><p> <img src="/Blog/PublishingImages/Stranky/unity3D3/Picture%204.png" alt="" /><br></p><p>Po otevření panelu <em>Navigation </em>zvolíme objekt <em>Plane, </em>nastavíme <em>Navigation static</em> a označíme celý Plane jako <em>Walkable</em> - to zajistí, zjednodušeně řečeno, že ho nepřátelé budou chápat jako objekt, po kterém mohou chodit.</p><p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/unity3D3/Picture%205.png" alt="Picture 5.png" style="width:400px;" /><img src="file:///Users/veronikajandova/Library/Group%20Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image012.jpg" alt="" /><br></p><p>Navigaci také musíme tzv. "zapéct" (tlačítko <em>Bake</em>).<br></p><p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/unity3D3/Picture%206.png" alt="Picture 6.png" style="width:400px;" /><br></p><p>Po zapečení vypadá herní plocha následovně:</p> <img src="/Blog/PublishingImages/Stranky/unity3D3/Picture%207.png" alt="Picture 7.png" /> <div><p>Všechno označené modře je <em>"vkročitelné"</em>. Objekty domu a auto tedy označím jako <em>"Not-walkable" </em>a zapeču změny ještě jednou.<br></p><p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/unity3D3/Picture%208.png" alt="Picture 8.png" style="margin:5px;width:400px;height:260px;" /><br></p><p>Po zapečení vypadá scéna takto. Nepřátelé nebudou schopni vejít do domu, projít autem ani krabicí. Znají pouze "vkročitelné" oblasti.<br></p><p> <img src="/Blog/PublishingImages/Stranky/unity3D3/Picture%209.png" alt="Picture 9.png" /> <br> </p><p>Nepřítel také potřebuje základní inteligenci pro pronásledování hráče. Aby se mohl pohybovat na navigačním poli potřebuje tzv. <em>NavMeshAgent </em>- navigačního agenta. Objektu <em>Enemy </em>tedy přidáme novou komponentu <em>NavMeshAgent</em>. Pokud bude ohraničující box agenta vyčnívat z modelu, upravte ho (sekce Obstacle Avoidance níže na obrázku).</p><p> <img src="/Blog/PublishingImages/Stranky/unity3D3/Picture%2010.png" alt="" /> <br> </p><p>Ve skriptu <em>Enemy.cs </em>implementujeme jednoduchou logiku. V <em>pathfinder </em>proměnné budeme držet referenci na komponentu navigačního agenta a jako target nastavíme hráčovu pozici. Jelikož se jedná o referenci na <em>transform</em> hráče, jeho pozice bude automaticky updatována každý snímek hry a nepřítel tak bude schopen dynamicky měnit cestu podle toho, jak se hráč bude hýbat.</p> <img src="file:///Users/veronikajandova/Library/Group%20Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image024.jpg" alt="" style="width:690px;margin:5px;" /> <img src="/Blog/PublishingImages/Stranky/unity3D3/Picture%2011.png" alt="Picture 11.png" style="margin:5px;width:650px;" /> <p>Po spuštění nás bude pronásledovat policejní fazole.</p><p> <img src="/Blog/PublishingImages/Stranky/unity3D3/unity3D.gif" alt="unity3D.gif" /><br></p> <img src="file:///Users/veronikajandova/Library/Group%20Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image025.gif" alt="" style="width:690px;margin:5px;" /> <h2> Spawner nepřátel</h2><p>Spawner vytvoříme tak, aby vytvářel nepřátele na náhodných pozicích navigačního pole.</p><p>Nejprve vytvoříme tzv. prefab, což je "uložený" model se všemi jeho skripty a nastaveními. Lze ho pak přesně ve stejném nastavení používat znovu a znovu. Vytvoříme ho tak, že přetáhneme objekt <em>Enemy</em> z <em>Hierarchy</em> prohlížeče do <em>Assets.</em></p><p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/unity3D3/Picture%2012.png" alt="Picture 12.png" style="width:400px;" /> </p><p>Ve scéně dále vytvoříme nový objekt pro <em>Spawner</em>. Přiřadíme mu nový stejnojmenný skript. Ten vytvoří jednoho nepřítele na souřadnicích (0,0,0).</p> <img src="/Blog/PublishingImages/Stranky/unity3D3/Picture%2013.png" alt="Picture 13.png" style="margin:5px;width:650px;" /> <p>Do skriptu přiřadíme referenci na<em> Enemy prefab </em> (ne model z Hierarchy, prefab z Assets). Teď už můžeme smazat původní <em>Enemy objekt</em> ve scéně, protože se bude spawnovat přes <em>Spawner.</em></p><p style="text-align:center;"> <em><img src="/Blog/PublishingImages/Stranky/unity3D3/Picture%2014.png" alt="" style="width:400px;" /></em><img src="file:///Users/veronikajandova/Library/Group%20Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image031.jpg" alt="" style="margin:5px;" /></p><p style="text-align:justify;">A teď ta nejdůležitější část: náhodné spawnování. K tomu použijeme funkci <em>RandomNavmeshLocation</em>. Ta dokáže vybírat náhodné body na navigačním poli. Pokud je vybraný bod "<em>walkable"</em>, vytvoříme na něm nového nepřítele. Pro omezení počtu nepřátel si uděláme proměnnou <em>numberOfEnemies </em>a přes atribut <em>Range</em> umožníme Editoru, aby s ní bylo možné manipulovat grafickým posuvníkem.</p><p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/unity3D3/Picture%2015.png" alt="" style="width:400px;" /><img src="file:///Users/veronikajandova/Library/Group%20Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image033.jpg" alt="" style="margin:5px;" /><img src="file:///Users/veronikajandova/Library/Group%20Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image035.jpg" alt="" style="margin:5px;" /><br></p><p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/unity3D3/Picture%2016.png" alt="Picture 16.png" style="margin:5px;width:650px;" /> <br> </p><p>A vše je hotovo. Nepřátelská horda sta policejních fazolí nás neúprosně pronásleduje.</p><p> <strong> <img src="/Blog/PublishingImages/Stranky/unity3D3/2.gif" alt="2.gif" style="margin:5px;width:650px;" /></strong></p><div style="text-align:justify;">Se scénou si můžete dále pohrát, vyzkoušet různé počty nepřátel, přiřadit jim fyzikální model aby mohli tlačit do předmětů, měnit jejich rychlost nebo pro ně vytvořit nějakou formu útoku a jednoduchého systému zdraví. </div><p>V další částí implementujeme telekinezi, aby se hráč mohl proti policejním fazolím bránit.</p><p>Kód dostupný na mém <a href="https://github.com/janjilecek/unity_tutorial/commit/74d19d3cf5feaa89d5ba731c826d4ba2ab06b4c8">githubu</a>.<br></p><p> <i>Jan Jileček<br></i></p><p> <br> </p></div>odborné;#hobby;#
Zažijte smíšenou realitu v SharePoint Spaceshttps://www.create-it.cz/Blog/Stranky/SharePoint_Spaces.aspxZažijte smíšenou realitu v SharePoint Spaces<p>Od května 2020 je v režimu „Preview" dostupná nová funkcionalita, která umožňuje vytvářet v SharePoint Online sdílené týmové prostory pro zobrazení obsahu virtuální reality (3D objekty, 3D video, 360° obrázky a videa, 2D obrázky a další). Businessově řečeno, nově je možné zakomponovat do obsahu intranetu i atraktivní vícerozměrný obsah. </p><p>Na první pohled vyvstává otázka, k čemu je dobré mít možnost rozšířit stávající intranet o 3D obsah? Po bližším zamyšlení a s přihlédnutím ke stávající koronavirové situaci, kdy všichni pracovali z domova, se nabízí hned několik scénářů, kde by šlo SharePoint Spaces využít.</p><h2>Jak udělat interní komunikaci zajímavější</h2><p> <b></b>3D obsah je atraktivní, táhne pozornost. Pokud interní komunikace ve vaší firmě naráží na nízkou čtenost a minimální odezvy u vámi publikovaného obsahu (zejména psaného textu), stojí za zkoušku zobrazení obsahu dokumentové knihovny v 3D režimu, viz. následující obrázek:<br></p><p> <img src="/Blog/PublishingImages/Stranky/SharePoint_Spaces/Picture%202.png" alt="" /> <br> </p><h2> Virtuální adaptace nových zaměstnanců</h2><p>V průběhu uplynulých měsíců s ohledem na "koronavirová" omezení se v HR často prováděl onboarding nováčků včetně představení sídla společnosti vzdáleně a z pohodlí Home Office. Se SharePoint Spaces bude nově možno odkázat nováčka na intranet, který podporuje přehrávání 3D videí či virtuální prohlídku kanceláře.<br></p><p> <img src="/Blog/PublishingImages/Stranky/SharePoint_Spaces/Picture%203.png" alt="" /> <br> </p><p></p><h2> Další možnosti užití:</h2><ul><li>3D video s interním školícím materiálem (jak používat vybrané pracovní pomůcky např. ve výrobní společnosti),<br></li><li>katalog produktů,<br></li><li>webový portál s katalogem 3D modelů výrobků (zejména pro konstrukční / výrobní společnosti).<br></li></ul><h2>Integrace na MS Teams</h2><p>Jak už to ve světě Microsoftu bývá, integrace mezi jednotlivými cloudovými službami je jednou ze silných stránek cloudového ekosystému Microsoftu. Pokud jste např. zvyklí konzumovat obsah v rámci MS Teams, lze SharePoint Spaces připnout do „Tab", viz. následující obrázek. 3D obsah bude pro vaše uživatele dostupný i z týmových prostorů.</p><h2> <img src="/Blog/PublishingImages/Stranky/SharePoint_Spaces/Picture%204.png" alt="" />A jak SharePoint Spaces zprovoznit?</h2><p>Pro zprovoznění funkcionality je nutné mít momentálně zapnutý „Target release" v rámci Office 365 tenantu. Funkcionalita není v základním nastavení zapnutá, pro její zprovoznění je třeba postupovat dle následujících bodů:<br></p><ol><li>Výchozí pozice je domovská obrazovka vybrané SharePoint site collection.<br></li><li>Site settings > Site information > View all site settings > Manage site features.<br></li><li>Aktivování prvku „Spaces" (Preview).<br></li> <img src="/Blog/PublishingImages/Stranky/SharePoint_Spaces/Picture%20a.png" alt="Picture a.png" style="margin:5px;width:650px;" /> <li>Návrat na domovskou stránku site collection, na které byl prvek aktivován > rozevírací nabídka „new" nově obsahuje o možnost navíc „Space (Preview)<br> <img src="/Blog/PublishingImages/Stranky/SharePoint_Spaces/Picture%20b.png" alt="Picture b.png" style="margin:5px;width:650px;" /> <br></li><li>Po kliknutí na možnost dojde k vytvoření nové „Site Page" dle zvoleného názvu.<br></li><li>Nově vytvořená Site Page je uložena v Sitepages library.<img src="file:///Users/veronikajandova/Library/Group%20Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image007.png" alt="" style="margin:5px;" /><img src="/Blog/PublishingImages/Stranky/SharePoint_Spaces/Picture%20c.png" alt="Picture c.png" style="margin:5px;width:650px;" /></li><li>Přidávání obsahu do vytvořeného SharePoint Spaces je poté obdobné jako u editace běžné "site".<br></li><li>Při přepnutí "site" do editačního modu se objeví tlačítko „+", prostřednictvím kterého je možné přidat do nově vytvořeného prostoru následující webparty.<img src="/Blog/PublishingImages/Stranky/SharePoint_Spaces/Picture%20d.png" alt="" /><img src="file:///Users/veronikajandova/Library/Group%20Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image008.png" alt="" style="margin:5px;" /></li></ol><h2>První krok směrem k budoucnosti</h2><p>Vzhledem k <a href="https://appinventiv.com/blog/ar-vr-trends/" target="_blank">aktuálním trendům</a> se dá předpokládat, že rozšířená a virtuální realita budou čím dál více nedílnou součástí našich životů. Není proto překvapením, že i technologie pro firemní komunikaci se snaží držet krok. Držme intranetům palce v budoucím vývoji.<br></p><p><em>Šimon Petrůj</em><br></p><p> <br> </p>odborné;#
Darování krve: nijak to nebolí a můžeš tím zachránit životyhttps://www.create-it.cz/Blog/Stranky/daruj-krev.aspxDarování krve: nijak to nebolí a můžeš tím zachránit životy<p>Že se neustále vyvíjíme a posouváme ve většině směrů dál, je jasné. Stejně jako fakt, že si většinu věcí umíme vyrobit, napodobit, naprogramovat, zkrátka umíme si život ulehčit. Minimálně jednu věc ale uměle vytvořit neumíme – naši základní tekutinu, krev. Není přitom nic složitého najít ochotu a jít si nechat "pustit žilou", a tím třeba i zachránit hned několik dalších lidských životů.<br></p><p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/daruj-krev/krev-1.jpg" alt="superhrdinka" style="width:400px;height:477px;" /> </p><p> </p><p>Z dlouhodobých výzkumů vyplývá, že počet dárců neustále klesá. Přitom každý člověk potřebuje za svůj život v průměru 5x krevní transfuzi a 14x lék vyrobený z krve. Každým odběrem mohou být zachráněny až 4 lidské životy, ale v České republice chybí minimálně 100 000 aktivních dárců. Přečtěte si níže pár faktů a zvažte prosím, zda byste se nechtěli také přidat k dárcům. Je to jen pár mililitrů a bude z vás (super)hrdina.</p><h2>Kdo může darovat?</h2><p>Každý zdravý člověk ve věku 18 – 65 let, pokud:</p><p></p><ol><li>váží více než 50 kg,</li><li>dlouhodobě zde žije (alespoň 1 rok, nemusí být občan ČR) a dorozumí se česky,</li><li>má v ČR platné zdravotní pojištění,</li><li>není chronicky nemocný (cukrovka, těžká forma alergie, epilepsie, celiakie) a neprodělal žloutenku typu B nebo C, neužíval dlouhodobě drogy, nebyl závislý na alkoholu, nestýká se s lidmi se zvýšeným rizikem nákazy HIV.</li></ol><p></p><h2>Jak to probíhá?</h2><p>Jelikož jsem pravidelnou dárkyní, napíšu vám, jak probíhá každý odběr:</p><p></p><ol><li> <b>Evidence</b> – sestřičky zkontrolují mé doklady, uloží případné změny, u prvodárců založí novou kartu;<br></li><li> <b>Kontrola krevního obrazu</b> – v laboratoři proběhne „malý odběr", to je zkumavka krve, u které se dělá kontrola krevního obrazu, zkrátka jestli ten daný den jsem já a moje krev v dobré kondici k darování;<br></li><li> <b>Dotazník</b> – pokaždé vyplňuji dotazník pro dárce krve, který je zaměřený na otázky týkající se aktuálního zdravotního stavu, absolvovaných zahraničních cest, lékařských zákroků či užívaných léků;<br></li><li> <b>Vyšetření u lékaře</b> – lékař zkontroluje výsledky z kontroly krevního obrazu, změří mi tlak a pročte výsledky dotazníku;<br></li><li> <b>Odběr krve</b> – pokud je vše v pořádku, jdu na „velký odběr", při kterém se odebírá 450 ml a trvá cca 5-10 minut, od sestry vždy dostanu vodu a mačkací balónek;<br></li><li> <b>Odpočinek a svačina </b>po odběru krve – po odevzdání karty dárce přichází ta nejoblíbenější část, většina transfuzních stanic nabízí dárcům svačinu po darování krve (některé dávají stravenky), já si vždy vybírám z několika variant svačin – sladká, slaná nebo jogurt.<br></li></ol><div><div style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/daruj-krev/krev-9275.jpg" alt="krev-9275.jpg" style="margin:5px;width:400px;" /> </div> </div><p></p><p>Večer před odběrem nejím tučná jídla a v den po odběru piji hodně tekutin a dodržuji klidový režim.</p><h2>Jaká je aktuální situace?</h2><p>Pro tento článek jsem napsala do několika pražských transfúzních stanic, abych zjistila jejich aktuální stavy. Výsledkem mého malého bádání je, že během koronavirové krize se většina dárců zdráhala přijít, a už tak malé řady aktivních dárců ještě prořídly. Navíc starší dárci odcházejí a mladí nenachází motivaci k novému dárcovství. Krve je ale potřeba stále stejně, proto má většina mnou dotázaných transfúzních stanic nedostatek krevních zásob.</p><p>Nejvíce žádané jsou krevní skupiny 0 (pozitivní i negativní) a A, ale ani „béčkaře" transfúzky neodmítnou. <br></p><p> <img src="/Blog/PublishingImages/Stranky/daruj-krev/krev-1687.jpg" alt="sestricky" /> <br> </p><h4 style="text-align:center;">Sestřičky na transfúzní stanici v Thomayerově nemocnici jsou prima <br></h4><h2>Aplikace Daruju krev<br></h2><p>Podporu dárcovství krve si vzal do svých rukou mladý středoškolák David, který vymyslel a naprogramoval mobilní aplikaci Daruju krev. Jeho cílem je kromě motivace nových i stávajících dárců také vytvořit přehled o aktuálních stavech transfúzních stanic. Celá appka je teprve na počátku, ale věřím, že celý tento projekt má smysl. Krátký rozhovor s Davidem naleznete <a href="https://video.aktualne.cz/dvtv/stredoskolak-vymyslel-aplikaci-ktera-laka-darce-krve-udela-z/r~7efcb7d8443211ea9ec9ac1f6b220ee8/" target="_blank">zde</a> a další informace o appce <a href="https://darujukrev.cz/" target="_blank">tady</a>.<br></p><p>Krom dobrého pocitu, že jste udělali něco pro druhé, dne volna, odečtu z daní a čestných medailí z vás těchto 450 ml krve a zhruba hodina času udělá, jak říká David, superhrdinu. Budete hrdiny pro ostatní a zároveň z toho můžete mít super pocit i sami.<br></p><p>Děkuji vám všem, kteří krev darovat začnete, a také vám, kteří už krev darujete.</p><p>A jedna poznámka na závěr: V Thomayerově nemocnici dávají za odběr fakt skvělou snídani. <br></p><p> <em>Kateřina Mazánková</em><br></p><p> <em><br></em></p><p>PS: A pokud uvidíte po odběru stádo muflonů, je to v pořádku, žádné halucinace.<br></p><p> <img src="/Blog/PublishingImages/Stranky/daruj-krev/krev-8358.jpg" alt="mufloni v Krči" /> <br> </p>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í;#