Create IT Blog - co se děje v Cleverlance

 

 

Den dětí jsme v Brně oslavili zábavnou hrou Po stopách kamínkůhttps://create-it.cz/Blog/Stranky/kaminky.aspxDen dětí jsme v Brně oslavili zábavnou hrou Po stopách kamínků<p>Každý rok v Cleverlance pořádáme různé akce pro rodiny s dětmi, jedním z pravidelných setkání bývá vždy Mezinárodní den dětí.  Aktuální situace nám bohužel neumožnila uspořádat velkou společnou akci, tak jak jsme zvyklí, o zábavu jsme ale nechtěli přijít. Pro děti kolegů jsme tedy připravili zábavnou pátrací hru <em>Po stopách kamínků</em>.<br></p><p>Princip hry je hodně podobný oblíbenému hledání „kešek“ (geocachingu). Po Brně jsme na různá místa poschovávali pomalované kamínky s kousky tajného hesla, které čekalo na rozluštění. Každá rodina mohla po kamíncích pátrat sama nezávisle na ostatních a strávit společně den příjemnou procházkou.</p><p>Pátrání po kamíncích předcházela pečlivá příprava – bez pestře pomalovaných oblázků by to přeci nebylo ono. A tak jsme měsíc předem nakoupili kamínky a společně s dětmi je nejprve ozdobili.<br></p><p> <img src="/Blog/PublishingImages/Stranky/kaminky/kaminky--2.jpg" alt="kaminky--2.jpg" data-themekey="#" style="max-width:690px;" /> <br> </p><p>Aby děti zjistily, kde kamínky hledat, musely nejprve rozluštit zašifrovaný název lokality a přesné GPS souřadnice. Kamínky jsme ukryli do tří brněnských parků – Masarykova háje, Mariánského údolí a ke stezce Po stopách sýkorky na Mokré hoře. V každém parku byly dvě lokality, celkem děti musely odhalit šest kamínkových stanovišť.<br></p><p>Na každém stanovišti děti čekalo několik kamínků, ze kterých si jeden mohly odnést domů. Kromě obrázku byla na každém kamínku dvě písmena. Písmena na kamíncích ze všech šesti stanovišť tvořila tajné heslo <em>Máme rádi léto</em>. Pro děti jsme měli pro případ potřeby připravenou i nápovědu, nakonec ale nebyla potřeba a všichni hledači byli úspěšní.</p><p>Všechny děti, které se do naší hry zapojily, dostaly dárek – rodinnou vstupenku do Papouščí zoo v Bošovicích, kterou jsme se takto rozhodli podpořit. Právě rodina a pospolitost byla motivem celé pátrací hry. Přáli jsme si dětem i jejich rodičům umožnit, aby si sbírali společné zážitky a strávili spolu čas venku v přírodě.<br></p><p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/kaminky/kaminky-101027.jpg" alt="kaminky-101027.jpg" data-themekey="#" style="max-width:400px;" /> <br> </p><p>Rodina je důležitá a my v Cleverlance to víme. Moc se těšíme na další ro​dinné akce.<br></p><p> <i>Jana Bednaříková</i></p><p><i>​<br></i></p><p>Více fotografií najdete na <span style="text-decoration:underline;"><a href="https://www.instagram.com/p/CQ0ymw0LtQT/" target="_blank">Instagramu Cleverlance</a></span>.</p><p> <br> </p>hobby;#
Analyzujte svůj hudební vkus pomocí Pythonu a Spotify APIhttps://create-it.cz/Blog/Stranky/spotipy.aspxAnalyzujte svůj hudební vkus pomocí Pythonu a Spotify API<p>​Spotify nedávno zveřejnilo svůj <a href="https://research.atspotify.com/just-the-way-you-are-music-listening-and-personality/" style="text-decoration:underline;">výzkum</a> ohledně psychologických profilů a hudebního vkusu. Postupně začíná používat analýzu uživatelů pomocí osvědčené <a href="https://cs.wikipedia.org/wiki/Big_Five" style="text-decoration:underline;">Big Five metriky</a>, na jejímž základě budou dále předpovídat hudební vkus uživatele. K předpovídání psychologického profilu uživatele využívají zejména tzv. "audio features". Tyto “vlastnosti" skladeb pak mohou naznačovat charakter uživatele (např. více energická hudba je spojena s extravertním charakterovým rysem a žánr metal je inverzně korelovaný s emoční stabilitou). Více o spojitosti mezi charakterem a hudebním vkusem najdete <a href="https://scripties.uba.uva.nl/download?fid=666615" style="text-decoration:underline;">zde</a>.</p><p>V tomto článku si postavíme jednoduchou aplikaci, která provede analýzu všech veřejných Spotify playlistů jakéhokoliv uživatele a vypočítá průměrné “audio features" obsažených hudebních skladeb. Z těchto extrahovaných dat poté vytvoříme radarový graf, který bude vizualizovat jednotlivé vlastnosti. A na jejich základě lze odhadnout určité charakterové rysy.</p><p>Budeme potřebovat balíky <em>spotipy (</em>spotify-py) a <em>plotly</em>. Spotipy je Spotify API wrapper a plotly zajistí snadnou tvorbu grafu. Oba nainstalujeme přes balíkovací systém pip. Aplikace bude umět stahovat playlisty, analyzovat všechny skladby, a z vlastností skladeb vytvoří graf. Vše se vejde na méně než 100 řádků.</p><h1>Inicializace aplikace</h1><p>Nejprve naimportujeme potřebné balíky. Pak vytvoříme třídu <em>SpotifyFeaturesAnalysis</em> a inicializujeme <em>spotipy</em>. V aplikaci musíte použít svoje Spotify API údaje - <em>client_id </em>a <em>client_secret</em>. Ty si můžete vygenerovat ve <a href="https://developer.spotify.com/dashboard/applications" style="text-decoration:underline;">vývojářské konzoli Spotify</a> při vytvoření nové Spotify aplikace. Dále vytvoříme datovou strukturu data, která bude držet údaje o všech skladbách. Inicializujeme také proměnné pro jednotlivé vlastnosti audia.</p><h1>Audio Features</h1><p>O jednotlivých vlastnostech můžete najít detaily v <a href="https://developer.spotify.com/documentation/web-api/reference/#object-audiofeaturesobject" style="text-decoration:underline;">dokumentaci Spotify API</a>, ale ve zkratce si je shrneme i zde.</p><p> <img src="/Blog/PublishingImages/Stranky/spotipy/vlastnosti%20audia.png" alt="vlastnosti audia.png" data-themekey="#" style="max-width:690px;" /><br></p><p> <em>Danceability</em> můžeme přeložit jako tancovatelnost, tj. jak vhodná je skladba pro tančení. Další je energie. Tyto skladby jsou rychlé, hlasité a hlučné. <em>Speechiness </em>reprezentuje množství mluveného slova ve skladbě (nad index 0.66 jsou podcasty, mezi 0.33-0.66 je např. rap a skladby pod 0.33 jsou pravděpodobně beze slov). Další jsou <em>acousticness, </em>akustičnost, a <em>instrumentalness</em>, instrumentálnost. <em>Liveness </em>je živost, tzn. zda je skladba živý koncert, a poslední <em>Valence</em> značí pozitivitu skladby.</p><p> </p><h1>Metoda pro načtení playlistů uživatele</h1><p> <img src="/Blog/PublishingImages/Stranky/spotipy/metoda.png" alt="metoda.png" data-themekey="#" style="max-width:690px;" /> <br> </p><p>​Připravíme si metodu pro stažení všech veřejných playlistů uživatele, <em>load_playlists</em>. Jako vstupní parametr má pouze uživatelské jméno <em>username</em>. Pak využijeme metody <em>user_playlist</em> pro načtení všech playlistů. Přes tento seznam iterujeme a postupně načítáme všechny skladby pomocí metody <em>get_all_track_features</em> (tuto metodu implementujeme níže). Přes playlisty iterujeme tak dlouho, dokud jsou k dispozici - Spotify API využívá pagination přes parametr next (<em>sp.next</em>).<br><br></p><h1>Analýza hudebních vlastností</h1><p> <img src="/Blog/PublishingImages/Stranky/spotipy/hud_vlastnosti.png" alt="hud_vlastnosti.png" data-themekey="#" style="max-width:690px;" />Implementujeme výše zmíněnou metodu pro načítání audio features. Jako parametr přijímá seznam všech skladeb. Opět budeme iterovat přes všechny skladby, v našem případě si načteme slovník obsažený v <em>item['tracks']</em>, který obsahuje všechny údaje o skladbě, včetně jejího jména, umělce a hlavně ID. Tyto ID si uložíme do seznamu a poskytneme další Spotify API metodě <em>audio_features</em>. Tato metoda vrátí slovník obsahující jednotlivé vlastnosti (valence, energy atp.). Přidáme je do předem vytvořeného seznamu <em>self.data</em>.<br><span style="font-family:farnham-web-black, open-sans, sans-serif;font-size:40px;">Průměrné vlastnosti všech skladeb</span><br></p> <img src="/Blog/PublishingImages/Stranky/spotipy/prum_vlast.png" alt="prum_vlast.png" data-themekey="#" style="max-width:690px;" /> <p>Vytvoříme si funkci pro zprůměrování všech vlastností, které jsme si uložili. Jednoduše sečte všechny hodnoty daného faktoru a vydělí je počtem.</p><p> </p><h1>Vykreslení grafu</h1> ​​ <p> <img src="/Blog/PublishingImages/Stranky/spotipy/vykresleni.png" alt="vykresleni.png" data-themekey="#" style="max-width:690px;" />Jako poslední vytvoříme funkci <em>plot_graph</em>. Do proměnné data si připravíme jednotlivé vlastnosti, které předáme plotly funkci <em>line_polar</em>, která vykreslí radarový graf. Parametr <em>r</em> určuje hodnoty grafu, parametr <em>theta </em>popisky a parametr <em>range </em>určuje vykreslený rozsah osy. Vše pak spustíme v metodě main. Výsledný graf vypadá následovně.</p> <span style="text-align:justify;"> <div> <span style="text-align:justify;"> <img src="/Blog/PublishingImages/Stranky/spotipy/aud_features.png" alt="aud_features.png" data-themekey="#" style="max-width:690px;" /> <br></span></div>To je pro tento návod vše. Zajímavým dodatkem této aplikace může být například využití údajů z psychologického výzkumu, který odkazuji na začátku. Ve studii byly nalezeny statisticky významné pozitivní korelace mezi vlastností valence a emoční stabilitou a extraverzí. Akustičnost a energie byla pozitivně korelována s otevřeností novým zkušenostem (tento psychologický rys je spojen s inteligencí a kreativitou) a živost s extraverzí. Kompletní kód aplikace je dostupný na mém </span> <a href="https://github.com/janjilecek/SpotifyAudioFeaturesAnalysis" style="text-align:justify;text-decoration:underline;">githubu</a><span style="text-align:justify;">. Pošlete do komentářů svoje grafy!​</span> <div><div style="text-align:justify;"> <br> </div> <span style="text-align:justify;"></span> <div><div style="text-align:justify;"> <i>Jan Jileček</i></div> <span style="text-align:justify;"></span> <p> <br> </p></div></div>odborné;#hobby;#
Domácí přírodní kosmetika - kouzlení, které zvládnete i doma https://create-it.cz/Blog/Stranky/prirodni-kosmetika.aspxDomácí přírodní kosmetika - kouzlení, které zvládnete i doma <p>​​​V dnešní době se stále více a více rozmáhá trend navracení se k přírodě. Co má dneska označení BIO, organic, nature friendly, GMO free nebo vegan, to nás tak nějak láká víc, protože máme pocit, že je to lepší. Ještě více nás lákají věci, které jsou vyráběné ručně nebo doma. Výhodou je, že doma se toho dá vyrobit spousta, třeba i domácí kosmetika.<br></p><p>A protože si už nějakou dobu kosmetiku, ke které používám pouze suroviny přírodního původu, doma vyrábím, rozhodla jsem se o své znalosti podělit i s ostatními. V dubnu se proto uskutečnil online workshop, ve kterém jsem ostatním kolegyním předala <a href="https://www.youtube.com/watch?v=E6cEtQ2G9hQ" target="_blank"><span style="text-decoration:underline;">základní informace</span> </a>o přírodní kosmetice, a také si všechny účastnice vyzkoušely vyrobit vlastní balzám na rty a tuhý deodorant.<br></p><p style="text-align:center;"><a href="https://www.youtube.com/watch?v=Icz25lXxdoI" target="_blank"><img src="/Blog/PublishingImages/Stranky/prirodni-kosmetika/Balzam.jpg" alt="Balzam.jpg" data-themekey="#" style="margin:5px;width:400px;height:334px;" /></a><br></p><p>Níže se dočteš, proč se vyplatí se do takové výroby pustit, co vše se dá vyrobit v domácích podmínkách, z jakých surovin a také jaký je princip samotné výroby.<br><br></p><h2>Jaké výhody má domácí výrob​a kosmetiky?</h2><ul><li><strong>znáš přesné složení</strong> – víš, přesně, co si do výrobku dáš a nepřekvapí tě, že třeba pečující balzám na rty obsahuje toxickou sloučeninu nebezpečnou pro dýchací soustavu (ano, i balzámy od známých značek obsahují tyto látky)</li><li><strong>neplatíš za značku a celkově je výroba levnější</strong> – pokud si budeš vyrábět vlastní kosmetiku, nebudeš platit zbytečné peníze za značku a také ingredience se dají sehnat za poměrně nízké ceny (tak třeba balzám, který jsme vyráběly, dle mého odhadu vyšel na cca 30 Kč a deodorant na zhruba 50 Kč)</li><li><strong>pouze přírodní složení</strong> – pokud si do výrobku dáš ingredience přírodního původu, máš stoprocentní jistotu, že tvůj výsledný produkt bude bez chemie</li><li><strong>výrobek bude podle vlastní vůně</strong> – máš radši ovocnější nebo sladší vůně? Ať tak nebo tak, pokud si budeš vyrábět vlastní kosmetiku, můžeš si vůni i její intenzitu zvolit podle sebe, případně vůni můžeš vynechat úplně</li><li><strong>ekologičnost </strong>– víš, že jedna tubička na balzám nebo tuhý deodorant se dá používat opakovaně? A že se dá dokonce využít i tubička z komerční kosmetiky? Takže vlastně stačí vypotřebovat jednu a můžeš si ji doplnit a používat neustále</li><li><strong>super pocit z výroby</strong> – když si vyrobíš něco svého, budeš pak mít jistě lepší pocit, než z komerčního a koupeného výrobku<br></li></ul><h2>Co se dá z domácích surovin vykouzlit?<br></h2><p>Možná ani netušíš, kolik máš doma v kuchyni ingrediencí, ze kterých se dá vytvořit velké množství kosmetiky a dalších kouzel. Kromě pleťové kosmetiky, balzámů, deodorantů či šlehaných másel, se dají vyrobit také mastičky a se zakoupením ještě několika dalších surovin také dekorativní kosmetika nebo některé prostředky z domácí drogerie. K tomu všemu vesměs stačí jen pár olejů, másel, jedlá soda, esenciální oleje, kukuřičný škrob a mýdlové vločky.</p><p style="text-align:center;"><a href="https://www.youtube.com/watch?v=iceXGsKIhFE" target="_blank"><img src="/Blog/PublishingImages/Stranky/prirodni-kosmetika/deodorant.jpg" alt="deodorant.jpg" data-themekey="#" style="margin:5px;width:400px;height:368px;" /></a> <br></p><p><br></p><h2>Výhody a vlastnosti jednotlivých olejů a más​el</h2><p>Během workshopu jsme si s kolegyněmi řekly výhody a vlastnosti jednotlivých surovin, tedy proč je dobré dávat si na obličej olej, jaké pozitivní účinky má třeba včelí vosk a nebo proč se do tuhého deodorantu přidává jedlá soda. U veškerého složení kosmetiky je nutné zaměřit se na oleje, každý má totiž své speciální vlastnosti a jiný stupeň tzv. <em>komedogenity</em> (to je vlastnost, která způsobuje ucpávání pórů, čím vyšší má stupeň, tím více póry ucpává). Vytvořila jsem takový souhrn těchto informací, který si můžeš stáhnout <a href="/Blog/Documents/oleje.pdf">zde</a>.<br></p><p><i>Proč jsem začala s domácí kosmetikou, jaká to má pozitiva, co se dá ze surovin z kuchyně vytvořit a jaké jsou vlastnosti a pozitivní účinky používaných surovin se dozvíš </i><a href="https://www.youtube.com/watch?v=E6cEtQ2G9hQ" target="_blank">v první části videa z workshopu<i>​</i></a><i>.</i><br></p><h2>Jaký je princip výroby balzámu na rty a tuhé​ho deodorantu</h2><p>Je to všechno vlastně hrozně jednoduché, stačí k tomu základní kuchyňské náčiní a pár surovin (možná některé budeš muset dokoupit, protože v kuchyni se běžně nevyskytují, ale vše se dá sehnat na e-shopech nebo i v drogerii). Balzám i deodorant je možné vyrobit tak, že se ve vodní lázni rozehřejí všechny suroviny, přidají se vitamíny, v případě deodorantu ještě kukuřičný škrob a jedlá soda a na závěr se celá roztavená směs ovoní esenciálním olejem podle požadované vůně.<br></p><p><em>Přesný postup výroby <span style="text-decoration:underline;"><a href="https://www.youtube.com/watch?v=Icz25lXxdoI">balzámu</a></span> na rty i <a href="https://www.youtube.com/watch?v=iceXGsKIhFE" target="_blank" style="text-decoration:underline;">deodorantu</a> si můžeš zhlédnout ve videu z druhé části workshopu.</em></p><p>O domácí přírodní kosmetice by mohlo být napsáno hodně a vyrobeno ještě víc. V tomto prvním workshopu jsem se proto zaměřila na to nejjednodušší - na výrobu a na úvodní informace. Jelikož se kolegyním workshop líbil a všechny si jej velmi chválily (ještě více si chválily vyrobené produkty), je dost možné, že brzy uskutečníme druhé kolo workshopu a naučíme se kouzlit dále. A určitě se zase podělíme o zkušenosti.</p><p>Pokud k výrobě domácí kosmetiky máš jakýkoliv dotaz, neváhej mě kontaktovat třeba na instagramu (k_mazankova)​. Ráda ti se vším poradím.​<br></p><p><i>Kateřina Mazánková​</i></p><p> </p><p>​ </p><p><br></p>odborné;#hobby;#
Návod na jednoduchou CRUD aplikaci v Pythonuhttps://create-it.cz/Blog/Stranky/Python-aplikace.aspxNávod na jednoduchou CRUD aplikaci v Pythonu<p>​​V tomto návodu si postavíme jednoduchou CRUD (Create, Read, Update, Delete) aplikaci pro udržování ToDo seznamu úkolů. Použijeme k tomu Python a dvě knihovny. První je webový framework Flask a druhá je SqlAlchemy, ORM mapovač pro snazší práci s databázemi. Pro frontend použijeme Bootstrap styly. Python kód se vejde do 50 řádků a HTML šablona též.<br></p><p>Nejprve si připravíme prostředí a databázi pro ukládání záznamů, pak vytvoříme endpointy pro vytvoření, úpravu, čtení a mazání záznamů, napojíme na ně frontend a vše zabalíme do grafického stylu bootstrap.</p><h2>Instalace knihov​​​en a příprava prostředí</h2><p>Prvně použijeme manažer Python závislostí, pip, pro instalaci <a href="https://flask.palletsprojects.com/en/1.1.x/installation/" style="text-decoration:underline;">flask</a> a <a href="https://flask-sqlalchemy.palletsprojects.com/en/2.x/" style="text-decoration:underline;">sqlalchemy</a>. Pip je dodáván s každou instalací Pythonu.</p> <img src="/Blog/PublishingImages/Stranky/Python-aplikace/pip.png" alt="pip" data-themekey="#" style="max-width:690px;" /> <p>V projektovém adresáři dále musíme vytvořit složku <em>templates</em>, kterou Flask používá pro načítání HTML šablon. Rovnou zde vytvoříme soubor <em>index.html</em>.</p><p> <img src="/Blog/PublishingImages/Stranky/Python-aplikace/3.png" alt="3.png" data-themekey="#" style="max-width:690px;" /> </p><h2>Importy a inicializace ap​​pky</h2><p> <img src="/Blog/PublishingImages/Stranky/Python-aplikace/import.png" alt="import.png" data-themekey="#" style="max-width:690px;" />Nejprve si naimportujeme potřebné knihovny a balíky. Pak inicializujeme Flask aplikaci (jako argument jí dáme jméno aktivního modulu - <em>__name__</em>). Pak musíme zajistit připojení k databázi, do které budeme naše úkoly ukládat. Já používám lokální souborovou sqlite databázi. Pokud máte nějakou komplexnější db běžící jako samostatný proces, stačí změnit řetězec připojení. Pak jen předáme náš řetězec jako URI adresu databáze a spustíme SQLAlchemy. Důležitým bodem je definice databázového modelu.</p><p>K tomu vytvoříme tabulku <em>Note, </em>která má automatické <em>id</em>, pak <em>text </em>úkolu, boolean hodnotu <em>done </em>držící splněnost úkolu a automatické datum, <em>dateAdded</em>, kdy byl úkol vytvořen. Později tímto modelem inicializujeme novou prázdnou databázi.​<br><br></p><h2>CRUD AP​​​I</h2><p>Nyní si vytvoříme 4 metody, které zajistí, že naše aplikace bude CRUD aplikací - bude možné vytvářet, upravovat, číst a mazat záznamy.</p><p> <img src="/Blog/PublishingImages/Stranky/Python-aplikace/create_note.png" alt="create_note.png" data-themekey="#" style="max-width:690px;" />Metoda <em>create_note </em>má jako parametr pouze text úkolu. Nejprve vytvoříme novou <em>Note</em>, jako text jí předáme tento parametr a uložíme do databáze. U <em>read_notes </em>pouze vypíšeme z databáze všechny záznamy <em>Note</em>. Metoda <em>update_note</em> má 2 parametry, a to <em>text</em> a <em>done. </em>Text je opět text úkolu a done je hodnota checkboxu formuláře, který vytvoříme. Pokud je hodnota tohoto checkboxu “<em>on" (</em>tzn. je zaškrtnut), tak uložená boolean hodnota <em>done</em> bude <em>True</em>, jinak <em>False</em>. Teď zbývá už jen metoda pro mazání, <em>delete_note</em>. Té předáme note_id, podle kterého nalezne a smaže záznam.</p><p> </p><h2>Úvodní stránka, přidá​​vání a zobrazování záznamů</h2><p> <img src="/Blog/PublishingImages/Stranky/Python-aplikace/6.png" alt="6.png" data-themekey="#" style="max-width:690px;" />Ve Flask frameworku se endpointy definují pomocí dekorátoru <em>@app.route. </em>První parametr je relativní URL adresa. Další volitelný parametr drží dovolené metody požadavků, v našem případě POST a GET pro zpracování formulářů. Pokud metoda bude POST, znamená to, že posíláme formulář s nově vytvořeným úkolem. Ať už ale jde o POST, nebo GET, tak zobrazíme šablonu index.html a předáme šablonovacímu Jinja systému všechny úkoly, co máme uloženy v databázi (<em>read_notes</em>), aby je vykreslil do šablony.<br><br></p><p> <img src="/Blog/PublishingImages/Stranky/Python-aplikace/7.png" alt="7.png" data-themekey="#" style="max-width:690px;" /> <br> </p><p>První formulář bude napojen na “/" endpoint, tzn. na úvodní stránku. Bude mít jen vstupní pole pro text a tlačítko na odeslání. Pak projdeme všechny záznamy, co jsme předali do šablony do proměnné notes a všechny si v cyklu zobrazíme (Jinja <em>%for%</em> notace). Později přidáme každý záznam do vlastního formuláře - tak bude možné upravovat a mazat jednotlivé záznamy z frontendu. Prozatím stránka vypadá následovně. Můžeme přidávat a zobrazovat, ale ne upravovat a mazat.</p><p><img src="/Blog/PublishingImages/Stranky/Python-aplikace/nahled.png" alt="nahled.png" data-themekey="#" style="max-width:690px;" /><br></p><h2>Upravování, mazání​​ a lepší frontend</h2><p> <img src="/Blog/PublishingImages/Stranky/Python-aplikace/edit.png" alt="edit.png" data-themekey="#" style="max-width:690px;" />Metoda pro upravování a mazání je trochu složitější. Relativní adresu endpointu specifikujeme jako <em>/edit/note_id</em>, tzn. že přes URL budeme předávat parametr, který jsme si pojmenovali <em>note_id</em>. Ten předáme do metody <em>edit_note</em>. Pokud bude vstupní požadavek udělán přes POST, předáme vstupní formulář do funkce <em>update_note</em> pro upravení daného úkolu. Pokud jako GET požadavek, tak daný úkol smažeme. Po dokončení všeho přesměrujeme vše na původní stránku.<br></p><p>Jako poslední věc v P​ython kódu ještě zavoláme <em>db.create_all</em>, které vytvoří databázi se všemi tabulkami, které jsme specifikovali (v našem případě jen <em>Note</em>) a pak spustí celou Flask aplikaci.<br></p><p>Nakonec upravíme šablonu, aby vypadala dobře. To vyžaduje značnou úpravu dosavadního HTML kódu (pro celou aplikaci navštivte můj github na tomto <a href="https://github.com/janjilecek/simple_python_flask_crud_todo_app" style="text-decoration:underline;">odkazu</a>).</p><p> <img src="/Blog/PublishingImages/Stranky/Python-aplikace/10.png" alt="10.png" data-themekey="#" style="max-width:690px;" />Prvně naimportujeme bootstrap css styly. Upravíme všechny formuláře do bootstrap stylů a každý vypsaný úkol změníme na formulář, který bude mít vlevo checkbox a vpravo tlačítko pro potvrzení úpravy textu. V případě zaškrtnutí checkboxu zavoláme přes onChange javascript funkci <em>redirect</em>, která pošle GET request na adresu <em>/edit/note_id</em>. V případě stisku update se pošle na stejnou adresu POST request. Přidáme také malé detaily jako zobrazení času vytvoření úkolu po najetí myší. Vykreslená šablona teď vypadá takhle:</p><p> <img src="/Blog/PublishingImages/Stranky/Python-aplikace/11.png" alt="11.png" data-themekey="#" style="max-width:690px;" /> A to je naše finální aplikace! Podívali jsme se na to, jak vytvořit endpointy pro vytvoření, úpravu, čtení a mazání záznamů, napojili jsme na ně frontend a vše zabalili do bootstrap stylů, aby naše aplikace také trochu vypadala, a to vše jsme zvládli na méně jak 100 řádcích kódu. Celá aplikace je dostupná na mém <a href="https://github.com/janjilecek/simple_python_flask_crud_todo_app" style="text-decoration-line:underline;">githubu</a>. Doufám, že jste se něco nového naučili a uvidíme se u dalšího dílu.​​​​​</p> <p> <em>Jan Jileček</em><br></p><p> <br> </p>odborné;#vzdělávání;#
Testing Clever Akademiehttps://create-it.cz/Blog/Stranky/testing-akademie.aspxTesting Clever Akademie<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í;#
​5 zajímavých využití pro Raspberry Pihttps://create-it.cz/Blog/Stranky/Raspberry-pi.aspx​5 zajímavých využití pro Raspberry Pi​<span style="text-align:justify;">​​​</span><a href="https://www.raspberrypi.org/" style="text-align:justify;">Raspberry pi</a><span style="text-align:justify;"> je superlevný mini-počítač, který dnes už zná skoro každý. Má široké využití pro domácí i business aplikace. Ve firemním prostředí se dá využít např. pro monitorování síťového provozu pomocí nástrojů jako je Zabbix. Dnes se Raspberry objevuje i ve filmech a seriálech jako </span> <a href="https://www.youtube.com/watch?v=XTN_-pRZjoU" style="text-align:justify;">Mr. Robot</a><span style="text-align:justify;">. Na Brněnském VUT FIT je dáván jako vstupní dárek všem prvákům magisterského studia. V tomto článku se podíváme, jak tento malý čip lze využít k vytvoření prvků vlastní inteligentní domácnosti.</span> <h2>Senzor kvality vzduc​​hu<br></h2><p>​<img src="/Blog/PublishingImages/Stranky/Raspberry-pi/senzor.png" data-themekey="#" alt="senzor" style="max-width:690px;" />Pimoroni BME680<span style="text-align:justify;">, který měří vlhkost, tlak, teplotu a kvalitu vzduchu (přes odpor plynů). </span> </p><div> <span style="text-align:justify;"></span><span style="text-align:justify;">Další nastavení je jednoduché. Pokud si chcete nastavit všechno sami, stačí nainstalovat oficiální operační systém Raspbian (např. podle </span><a href="https://www.raspberrypi.org/documentation/installation/installing-images/" style="text-align:justify;text-decoration:underline;">tohoto návodu</a><span style="text-align:justify;">) a oficiální knihovnu pro čip BME680 (</span><a href="https://learn.pimoroni.com/tutorial/sandyj/getting-started-with-bme680-breakout" style="text-align:justify;text-decoration:underline;">zde</a><span style="text-align:justify;">). Pro ukládání naměřených hodnot postačí jakákoliv databáze, já zvoli PostgreSQL. Zobrazování dat pak zajistí např. Grafana.</span><span style="text-align:justify;"></span></div><div> <span style="text-align:justify;">Pokud nemáte čas na hraní si s detaily, můžete použít hotové řešení, jako je BalenaOS. Obraz operačního systému obsahuje kompletní řešení s InfluxDB a Grafanou. Stačí jen nahrát na SD kartu a spustit (</span><a href="https://www.balena.io/blog/build-an-environment-and-air-quality-monitor-with-raspberry-pi/#idontwanttosolder" style="text-align:justify;text-decoration-line:underline;">návod zde</a><span style="text-align:justify;">). <h2>Inteligentní z​​rcadlo<br></h2> <p> <a href="https://www.youtube.com/watch?v=fkVBAcvbrjU" target="_blank"> <img src="/Blog/PublishingImages/Stranky/Raspberry-pi/zrcadlo.png" alt="zrcadlo" data-themekey="#" style="max-width:690px;" />​</a>​Inteligentní zrcadlo zní jako zbytečný doplněk, ale rozhodně je to neobvyklé využití pro raspberry pi. V podstatě se jedná o obousměrné zrcadlo, které za sebou má namontovaný monitor, který zobrazuje užitečné informace o dění ve světě, počasí, události v kalendáři a podobně. Agendu pro svůj den tak můžete kontrolovat při svojí ranní rutině.</p> <p>Vytvoření vlastního inteligentního zrcadla není až tak levná záležitost, pokud se vám ovšem někde nepovaluje monitor na vyřazení. Dále je potřeba dřevěný rám a nástroje pro základní montáž. Na raspberry potom stačí nainstalovat knihovnu jako <a href="https://github.com/MichMich/MagicMirror" style="text-decoration:underline;">MagicMirror</a> nebo <a href="https://github.com/ctrlaltdylan/MirrorMirror" style="text-decoration:underline;">MirrorMirror</a>.</p> <p> <a href="http://blog.dylanjpierce.com/raspberrypi/magicmirror/tutorial/2015/12/27/build-a-magic-mirror.html" style="text-decoration:underline;">Zde</a> je kvalitní návod na vytvoření zrcadla od nuly. Hotový projekt lze pak rozšířit o umělou inteligenci a hlasové ovládání. V podstatě tedy zrcadlo může sloužit jako alternativa ke Google Home nebo Amazon Alexa.</p> <h2>NAS serve​​r<br></h2> <p> <img src="/Blog/PublishingImages/Stranky/Raspberry-pi/NAS%20server.png" alt="NAS server" data-themekey="#" style="max-width:690px;" /> <br> </p> <p>Sdílený síťový disk neboli NAS má mnoho využití - lze na něm uchovávat rodinná fotoalba, udržovat hudební kolekci nebo filmovou sbírku pro přehrávání v mediálním centru (popsáno v dalším bodu). NAS však má i jiná využití, například jako P2P klient nebo webový server.</p> <p>Hotová řešení NAS nejsou ale zrovna levná, a proto je Raspberry Pi ideální náhradou. Verze 4 má již USB 3.0 a v kombinaci s gigabitovým ethernetem jsou přenosové rychlosti dostačující pro náhradu klasického NAS serveru a to za zlomek ceny.</p> <p>Pro vytvoření souborového serveru je samozřejmě potřeba disk. HDD má větší životnost buněk než SSD, SSD zase větší rychlosti. Pro skladování velkých objemů dat se dnes stále vyplatí HDD, záleží ale na využití. Po připojení disku stačí jen nainstalovat a nakonfigurovat Samba server (<a href="https://www.pcmag.com/how-to/how-to-turn-a-raspberry-pi-into-a-nas-for-whole-home-file-sharing" style="text-decoration:underline;">návod zde</a>) a síťový disk bude hotov.</p> <h2>Mediální centru​​​m<br></h2> <p>​<img src="/Blog/PublishingImages/Stranky/Raspberry-pi/Picture%205.png" alt="media centre" data-themekey="#" style="max-width:690px;" />​Dalším zajímavým využitím pro Raspberry Pi je jako mediální centrum KODI (v podstatě domácí kino). KODI lze nainstalovat jako samostatný <a href="https://kodi.tv/download" style="text-decoration:underline;">operační systém</a> nebo jako balíček pro Raspbian. Další možností je operační systém OSMC. Celý návod k instalaci je <a href="https://magpi.raspberrypi.org/articles/build-a-raspberry-pi-nas" style="text-decoration:underline;">zde</a>.<br></p> <p>KODI využívá tzv. addonů pro přidávání další funkcionality - např. automatické stahování titulků pro filmy, streamování z torrentů apod. Dokáže přehrávat filmy, seriály (addony jako Exodus, které mají databázi seriálů) a samozře​jmě i hudbu a zobrazovat fotky.</p> <p>Pro lepší kvalitu domácího kina doporučují ještě přidání externí zvukové karty a napojení na repro soustavu v obýváku/promítacím pokoji a samozřejmě dálkové ovládání, nebo bezdrátovou klávesnici. KODI lze snadno ovládat i mobilem, stačí nainstalovat KODI aplikaci a připojit se přes wifi do sítě s Raspberry.</p> <h2>​PI HOL​E</h2> ​ <img src="/Blog/PublishingImages/Stranky/Raspberry-pi/pi-hole.png" alt="pi-hole" data-themekey="#" style="max-width:690px;" /> <p>Pi-hole (foneticky pie-hole je slangový pejorativní výraz pro ústa) je v podstatě černá díra na reklamy. Funguje jako DNS server na vaší lokální síti, který zajistí, že se nebudou načítat žádné požadavky na servery označené jako reklamní. Z toho důvodu lehce zrychluje načítání stránek oproti klasickému blokování reklam např. pomoc <a href="https://addons.mozilla.org/cs/firefox/addon/ublock-origin/">uBlock Origin</a> addonu v prohlížeči. Blokuje i trackování a malware (botnety). Navíc má sekundární využití jako nástroj pro monitorování síťového provozu.<br></p> <p>Pi-hole nainstalujete pomocí skriptu, co vše vyřeší za vás (celý návod <a href="https://www.youtube.com/watch?v=jkd3jmHS2hs">zde</a>). Pak je potřeba v nastavení routeru změnit dynamické přiřazování IP na statické, aby Raspberry mělo pokaždé stejnou adresu, kterou použijeme jako adresu DNS serveru v našem počítači a mobilu. Není potřeba vypínat DHCP server, stačí jen rezervovat přiřazenou adresu jako statickou. </p> <p>Doufám, že vám tento článek dal pár nápadů, jak využít svoje Raspberry Pi, a nebo pokud ho ještě nemáte, motivaci pro jeho koupi. </p><p><br></p><p><em>Jan Jileček</em><br></p><p><br></p> <p> </p> <p> </p> <p> <br> </p></span></div>odborné;#hobby;#
Clever Ballet Academyhttps://create-it.cz/Blog/Stranky/baletni-akademie.aspxClever Ballet Academy<p>Vědecké výzkumy z posledních let ukazují, že balet dokáže přinášet nejen radost, celkové uklidnění, ale udržet i fyzickou kondici vedoucí k celkovému vyššímu sebevědomí. Naše lekce jsou vhodné pro všechny příznivce tohoto​ krásného druhu tance, kteří dosud neměli přiležitost si ho vyzkoušet.<br></p><p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/baletni-akademie/ballet-academy-2021_letak.png" alt="ballet academy" data-themekey="#" style="max-width:690px;" /> </p><p></p><p>Váháte? Přečtěte si příběhy kolegů, kterým naše baletní akademie změnila život!<br></p><h2> Rober​t</h2><p> Po absolvování baletního kursu jsem během několika večerů nacvičil známý balet <em>Pták Ohnivák</em>, jako překvapení k výročí seznámení s mojí partnerkou. Výkon v sólo choreografii si partnerka natolik oblíbila, že ho musím opakovat několikrát týdně. </p><h2> Ema​<br></h2><p> Při mém sedavém zaměstnání jsem kurs uvítala a brala ho jako impuls ke snížení váhy. Bohatě ilustrovaná kniha <em>Balet pro samouky </em>se stala mojí druhou biblí, a navíc jsem si poprvé v životě odůvodnila nákup vysněného přiléhavého trikotu. </p><h2>​​​​Den​is</h2><p> Kurs mi změnil život, doslova teď tančím životem. Každou chvilku se přistihnu v nějaké baletní póze. Mezi kolegy vývojáři ve společném open space to občas budí údiv, ale co by člověk neudělal pro zajímavou fotku na Instagramu.​<br></p><p> <img src="/Blog/PublishingImages/Stranky/baletni-akademie/baletni%20akademie-4939-2.jpg" alt="baletni akademie-4939-2.jpg" data-themekey="#" style="max-width:690px;" />​<br></p><h2> Vla​​sta</h2><p> Doposud jsem preferovala spíš silové sporty - posilování, crossfit a zvlášť šerm historickými zbraněmi mě doposud zcela naplňovaly. Kolegyně Šárka mě přesvědčila k návštěvě Baletní Akademie, a díky ní se mi v sobě podařilo najít něhu, smyslnost, lehkost, a dokonce i nový pohled na mužskou část populace. </p><h2> ​Adam a Ev​a</h2><p> Baletní Akademie dodala našemu vztahu nový svěží vítr. V nelehkých časech zvýšené domácí izolace jsme si už občas trochu lezli na nervy, ale tanec nám​ ukázal cestu, jak se společně zabavit, udělat něco pro své zdraví a cítit se doslova jako v Ráji.<br></p><div> ​<br> </div> <img src="/Blog/PublishingImages/Stranky/baletni-akademie/baletni%20akademie-4956-2.jpg" alt="baletni akademie-4956-2.jpg" data-themekey="#" style="max-width:690px;" />​<br><br>hobby;#vzdělávání;#
Jak vytvořit klon Flappy Bird ve vizuálním jazyku Bolt v Unityhttps://create-it.cz/Blog/Stranky/flappy-bird.aspxJak vytvořit klon Flappy Bird ve vizuálním jazyku Bolt v Unity<p>​​Dva nejdominantnější herní enginy na trhu jsou Unity a Unreal Engine 4. UE4 používá kromě klasického programování i systém grafického programování přes tzv. blueprinty. V Unity tato možnost oficiálně dlouho chyběla, až do minulého roku, kdy se tvůrci rozhodli do všech verzí Unity přidat systém grafického programování Bolt. V tomto článku se podíváme na základní funkcionalitu Boltu a vytvoříme s jeho pomocí klon legendárně úspěšné hry <a href="https://www.youtube.com/watch?v=YHH2101OFfI" style="text-decoration:underline;">Flappy Bird</a>. Pokud jste chtěli zkusit herní vývoj, ale programování vás doteď děsilo, Bolt může být snadný způsob jak začít!<br></p><p>Konečným produktem tohoto tutoriálu bude klon hry Flappy Bird s replikou původního ovládání létání a generátor překážek. Překážky se budou donekonečna generovat vpravo mimo obrazovku a budou putovat doleva a tvořit tak iluzi pohybu herní postavy doprava (tedy stejná metoda, kterou používá původní Flappy Bird a další hry typu infinite-scroller). Dejme se do toho!</p><h1>Instalace Boltu<br></h1><p>Nejprve vytvoříme nový 2D projekt v Unity 2020 a nainstalujeme Bolt (<a href="https://assetstore.unity.com/packages/tools/visual-scripting/bolt-163802" style="text-decoration:underline;">odkaz</a>). Návod jak vytvořit nový projekt a importovat balík z Unity Asset Store naleznete v prvním dílu seriálu o herním vývoji v Unity (<a href="/Blog/Stranky/unity3D.aspx" style="text-decoration:underline;">odkaz</a>). Typ nového projektu zvolíme 2D. Po importu Boltu z Asset Store ho v Unity stáhneme přes <em>Package Manager -> My Assets -> Download</em>.<br></p><p> <img src="/Blog/PublishingImages/Stranky/flappy-bird/package%20manager.png" alt="package manager.png" data-themekey="#" /> <br> </p><p>A nainstalujeme přes <em>Tool -> Install Bolt</em>. Pak stačí následovat Setup wizard<br></p><p>(<em>Next -> programmer naming -> next -> generate</em>).<br></p><p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/flappy-bird/install%20bolt.png" alt="install bolt.png" data-themekey="#" style="margin:5px;width:200px;height:65px;" /> <br> </p><h1>Herní charakter - Alien​</h1><p>Jako hlavní herní charakter vytvoříme malého Aliena. Klepneme do okna hierarchie a vybereme <em>2D Object -> Sprite</em>.<br></p><p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/flappy-bird/2Dobjectsprite.png" alt="2Dobjectsprite.png" data-themekey="#" style="margin:5px;width:400px;height:175px;" /><br></p><p>Nový objekt přejmenujeme na <em>Alien</em></p><p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/flappy-bird/alien.png" alt="alien.png" data-themekey="#" style="margin:5px;width:200px;height:88px;" /><br></p><p>V sekci <em>Sprite Renderer</em> pak zvolíme Sprite <em>shipGreen_manned</em> (dostupné v mém github repozitáři, odkaz v závěru). Další zajímavé grafické podklady můžete najít na <a href="https://kenney.nl/" style="text-decoration:underline;">kenney.nl</a>.</p><p> <img src="/Blog/PublishingImages/Stranky/flappy-bird/shipgreen.png" alt="shipgreen.png" data-themekey="#" style="max-width:690px;" /><br></p><p>Přes<em> </em>tlačítko <em>Add Component</em> přidáme alienovi <em>Polygon Collider 2D. </em>Tím později zajistíme přesnou detekci kolizí s překážkami. A přidejme mu také komponentu<em> RigidBody2D </em>pro emulaci gravitace. Změníme parametry <em>Mass </em>a<em> Drag</em> na 0.1 a 1 aby se pohyb více podobal Flappy Birdovi.</p><p> <img src="/Blog/PublishingImages/Stranky/flappy-bird/rigidbody.png" alt="rigidbody.png" data-themekey="#" style="max-width:690px;" /><br></p><p>A pomocí šipek pro pohyb na ose posuneme objekt ve scéně doleva.</p><p> <img src="/Blog/PublishingImages/Stranky/flappy-bird/dileva.png" alt="dileva.png" data-themekey="#" style="max-width:690px;" /><br></p><p>Dále přidáme hlavní komponentu, <em>Flow Machine</em>, s logikou pro ovládání herního charakteru.</p><p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/flappy-bird/flowmachine.png" alt="flowmachine.png" data-themekey="#" style="margin:5px;width:200px;height:113px;" /><br></p><p>A změníme <em>Source</em> na <em>Embed</em>. Pojmenujeme jako <em>Alien</em> a přidáme popis.<br></p><p> <img src="/Blog/PublishingImages/Stranky/flappy-bird/sourceTOembed.png" alt="sourceTOembed.png" data-themekey="#" style="max-width:690px;" /> <br> </p><p>Po kliknutí na na tlačítko <em>Edit graph</em> se zobrazí grafické rozhraní, ve kterém se chováme podobně jako při reálném programování. Graf drží metody <em>Start </em>a <em>Update</em>.<br></p><p> <img src="/Blog/PublishingImages/Stranky/flappy-bird/startaupdate.png" alt="startaupdate.png" data-themekey="#" style="max-width:690px;" /> </p><p>Nové funkce se přidávají přes výstupní šipku nebo kliknutí do prázdna. Tažením výstupní šipky se načte dialog pro vyhledání existujících metod. Najdeme tedy metodu pro vstup z klávesnice (<em>Input.GetKeyDown</em>), abychom mohli ovládat herní charakter.<br></p><p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/flappy-bird/input-key-down.png" alt="input-key-down.png" data-themekey="#" style="margin:5px;width:400px;height:159px;" /> <br></p><p>Létat budeme např. pomocí klávesy Space. Jako parametr <em>key</em> tedy zvolíme <em>Space</em>.<br></p><p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/flappy-bird/space.png" alt="space.png" data-themekey="#" style="margin:5px;width:200px;height:128px;" /> <br> </p><p>Pokračujeme přes <em>Control -> Branch</em> (ekvivalent podmínky if).</p><p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/flappy-bird/control-branch.png" alt="control-branch.png" data-themekey="#" style="margin:5px;width:400px;height:190px;" /><br></p><p>Dále potřebujeme získat referenci na <em>RigidBody2D </em>komponentu:<br></p><p> <img src="/Blog/PublishingImages/Stranky/flappy-bird/rigidbody2D.png" alt="rigidbody2D.png" data-themekey="#" style="max-width:690px;" /> <br> </p><p>Vybereme <em>RigidBody2D</em> jako parametr <em>type</em>.</p><p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/flappy-bird/type.png" alt="type.png" data-themekey="#" style="margin:5px;width:400px;height:147px;" /><br></p><p>A přidáme kinetický impuls přes funkci <em>RigidBody2D.AddForce</em>, který bude emulovat pohyb Flappy Birda.<br></p><p> <img src="/Blog/PublishingImages/Stranky/flappy-bird/addforce.png" alt="addforce.png" data-themekey="#" style="max-width:690px;" /> <br> </p><p>Chceme, aby Alien "​poskakoval" nahoru, takže změníme souřadnici <em>y</em> vektoru <em>force</em> na 1 a <em>mode</em> přepneme na <em>Impulse</em>.<br></p><p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/flappy-bird/impulse.png" alt="impulse.png" data-themekey="#" style="margin:5px;width:400px;height:144px;" /><br></p><p>Celá logika pak vypadá takto:<br></p><p> <img src="/Blog/PublishingImages/Stranky/flappy-bird/cela%20logika.png" alt="cela logika.png" data-themekey="#" style="max-width:690px;" /><br></p><p>Když teď spustíme hru, můžeme aliena ovládat mezerníkem.</p><p> <img src="/Blog/PublishingImages/Stranky/flappy-bird/mezernikem.gif" alt="mezernikem.gif" data-themekey="#" style="max-width:690px;" /><br></p><p> </p><h1>Překážky</h1><p>Stejně jako pro Aliena vytvoříme nový <em>Sprite </em>přes menu <em>2D object -> Sprite </em>a pojmenujeme ho <em>Obstacle</em>. Ve <em>Sprite Renderer </em>nastavíme sprite <em>elementMetal055 </em>(také dostupný v mém repozitáři níže).</p><p> <img src="/Blog/PublishingImages/Stranky/flappy-bird/elementmetal55.png" alt="elementmetal55.png" data-themekey="#" style="max-width:690px;" /><br></p><p>A přidáme <em>Box Collider 2D</em>.<br></p><p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/flappy-bird/boxcollider2D.png" alt="boxcollider2D.png" data-themekey="#" style="margin:5px;width:400px;" /> <br> </p><p>Pomocí <em>Rect </em>nástroje pak změníme rozměr překážky, aby víc odpovídal předloze ve Flappy Bird. Překážku posuneme mimo viditelnou plochu.</p><p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/flappy-bird/prekazkamimoplochu.png" alt="prekazkamimoplochu.png" data-themekey="#" style="margin:5px;width:200px;" /><br></p><p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/flappy-bird/prekazkamimoplochu2.png" alt="prekazkamimoplochu2.png" data-themekey="#" style="max-width:690px;" /><br></p><p>Teď vytvoříme prázdný "​rodičovský" objekt, který pojmenujeme <em>ObstacleHolder</em> a asociujeme s ním předešlé 2 <em>Obstacle</em> objekty, a to jejich označením a přetažením nad <em>ObstacleHolder</em>.</p><p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/flappy-bird/obstacleholder.png" alt="obstacleholder.png" data-themekey="#" style="margin:5px;width:200px;height:96px;" /><br></p><p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/flappy-bird/obstacleholder2.png" alt="obstacleholder2.png" data-themekey="#" style="margin:5px;width:400px;" /> <br> </p><p>Musíme také vytvořit tzv. <em>prefab </em>z objektu <em>ObstacleHolder</em>. Stačí vzít <em>ObstacleHolder</em> a přetáhnout do okna <em>Assets</em>.</p><p> <img src="/Blog/PublishingImages/Stranky/flappy-bird/obstacletoassets.png" alt="obstacletoassets.png" data-themekey="#" style="max-width:690px;" /><br></p><p>Tak budeme schopni tvořit instance stejného objektu ze skriptu generátoru, který bude na objekt držet referenci. Původní <em>ObstacleHolder </em>objekt můžeme ze scény smazat, budeme používat už jenom jeho <em>prefab</em>.</p><h1>Generátor překážek</h1><p>Vytvořme prázdný objekt (<em>Create Empty</em>), který bude sloužit jako generátor překážek. Pojmenujme ho <em>Generator</em>. Přidáme mu novou komponentu <em>Flow Machine </em>a stejným způsobem jako u Aliena a otevřeme editor grafu.<br></p><p>V levém podokně editoru grafu vytvoříme novou proměnnou typu <em>GameObject</em>, která bude držet referenci na prefab s objektem <em>ObstacleHolder</em>. Ten přetáhneme do parametru <em>Value</em> z okna <em>Assets</em> (lze vidět na vlevo dole na obrázku zobrazeném níže).</p><p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/flappy-bird/gameobject.png" alt="gameobject.png" data-themekey="#" style="margin:5px;width:400px;" /><br></p><p>Přes menu editoru přidáme nový uzel grafu, a totiž <em>Timer</em>. Ten bude zodpovědný za pravidelné generování nových překážek. Timer začne počítat při vytvoření generátoru, proto ho budeme volat z metody <em>Start</em>. Trvání nastavíme na 4 sekundy.<br></p><p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/flappy-bird/start.png" alt="start.png" data-themekey="#" style="margin:5px;width:400px;" /><br></p><p>Každou instanci překážky budeme generovat s náhodným posunutím na ose <em>y</em>. Použijeme funkci <em>Random.Range</em>, která bude generovat náhodné číslo od 0.2 do 0.7 (otestoval jsem, že tyto hodnoty jsou nejlepší pro běžná rozlišení obrazovky).</p><p>Hodnotu pak předáme jako parametr do uzlu <em>Vector3</em>, kde ještě upravíme souřadnici x na hodnotu 1.4 (tzn. bude 40 % za "koncem" obrazovky).</p><p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/flappy-bird/vector3.png" alt="vector3.png" data-themekey="#" style="margin:5px;width:300px;" /><br></p> ​​ <p>Tento <em>Vector3</em> předáme do funkce <em>ViewportToWorldPoint</em>, která přeloží námi zadané hodnoty na souřadnice na obrazovce. Jako parametr zvolíme hlavní kameru - <em>Main Camera</em>.</p><p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/flappy-bird/maincamera.png" alt="maincamera.png" data-themekey="#" style="margin:5px;width:400px;" /></p><p> <br> </p><p>Na takto vypočtené pozici už můžeme vygenerovat překážku. K tomu využijeme funkci <em>Instantiate</em>. Předáme jí dříve vytvořenou proměnnou <em>obstacle</em> s referencí na <em>ObstacleHolder </em>(funkce <em>Get Variable -> Graph -> zvolit obstacle</em>), vypočítanou pozici a nakonec rotaci (<em>get Quaternion identity</em>).</p><p style="text-align:center;"> <img src="/Blog/PublishingImages/Stranky/flappy-bird/quaternion.png" alt="quaternion.png" data-themekey="#" style="margin:5px;width:400px;height:382px;" /></p><p>Teď už jen přidáme nové instanci objektu <em>Rigidbody2D</em>, nastavíme ho na kinematický typ (<em>set RigidBody2D.bodyType</em>) a rychlost na ose x nastavíme na -2 (<em>set RigidBody2D.velocity</em>). Tím zajistíme posun překážek doleva.<br></p><p>Nakonec vše napojíme na metodu <em>Destroy</em>, která bude instanci překážky automaticky ničit po 20 sekundách - tedy když bude už dávno mimo dohled. Jako parametr musíme vzít objekt překážky vytvořený několik uzlů zpět ve funkci <em>Instantiate</em>.<br></p><p> <img src="/Blog/PublishingImages/Stranky/flappy-bird/instantiate.png" alt="instantiate.png" data-themekey="#" style="max-width:690px;" /> </p><p>Posledním krokem je napojení proudu zpět na <em>Timer </em>(časovač), aby se celý cyklus spustil znovu.<br></p><p> <img src="/Blog/PublishingImages/Stranky/flappy-bird/timer.png" alt="timer.png" data-themekey="#" style="max-width:690px;" /> <br> </p><p> <img src="/Blog/PublishingImages/Stranky/flappy-bird/timer2.gif" alt="timer2.gif" data-themekey="#" style="max-width:690px;" /> <br> </p><p>Pro úplnost můžeme přidat detekci kolize hráče s překážkou. Pokud se tak stane, celá scéna se načte znovu (prakticky se restartuje hra).<br></p><p> <img src="/Blog/PublishingImages/Stranky/flappy-bird/kolize.png" alt="kolize.png" data-themekey="#" style="max-width:690px;" /><br></p><p>Tím máme hotovo!<br><br></p> <img src="/Blog/PublishingImages/Stranky/flappy-bird/hotovo.gif" alt="hotovo.gif" data-themekey="#" style="max-width:690px;" />​ <p>Pokud jste si tento návod užili, můžete zkusit i moje další články na téma herního vývoje zde na portálu. Odkaz na první díl je výše v textu. Celý tento projekt jsem zveřejnil na svém githubu (<a href="https://github.com/janjilecek/flappy_bird_clone_in_unity_bolt/tree/master" style="text-decoration:underline;">odkaz</a>). Na shledanou u dalšího článku!<br></p><p>​<br></p><p> <i>Jan Jileček<br></i></p><p>​<br></p>odborné;#hobby;#vzdělávání;#
Otužování: Jak s ním začít a chlad si zamilovat https://create-it.cz/Blog/Stranky/jak-zacit-s-otuzovanim.aspxOtužování: Jak s ním začít a chlad si zamilovat <p>​​Otužování se stalo v covidové době skoro až národním sportem. Všechny sociální sítě i weby jsou zaplavené fotkami nadšených otužilců, kteří se v kuliších vrhají do vody mezi ledové kry, nebo si dokonce díru do ledu sami vysekají. Bez pochyby otužilce poznáte tak, že na břehu vody nechá pantofle, jeho kůže je rudá chladem a má o dost méně vrstev oblečení než všichni ostatní (nebo nemá dokonce žádnou). Začít s otužováním ale znamená individuální, postupnou a někdy i dlouhou cestu, která rozhodně nezačíná skokem mezi kusy plavajícího ledu.<br></p><p>O tom, jak a proč jsem se oddala chladu já, jsem vám již popsala <a href="/Blog/Stranky/otuzovani.aspx" target="_blank"> <span style="color:#a200ff;">zde</span></a>. Nyní vám popíšu svoji cestu a sepíšu pár rad a kroků, jak i teplomilný člověk může najít zalíbení v chladu.</p><p>Důležité však je zmínit, že v otužování je vše opravdu velmi individuální, neexistuje žádný jednotný návod, postup nebo způsob. Je třeba poslouchat své tělo, nehnat se za rekordy, nepřekonávat svoje ego, ani někoho trumfovat. Já osobně se vyvaruji i počítání času, odmítám časové "challenge" a vnímám při každém otužování svoje pocity, protože některý den tělo vydrží víc, některý míň.<br></p><p>Jak jsem si k chladu našla cestu já aneb ne-univerzální postup pro milovníky tepla, aby jim nezamrznul úsměv ve tváři: </p><p></p><h2>​​​​1.     Otevřené okno při spánku nebo při cvičení</h2><p></p><p>Otužování nemusí začít hned vodou. Dobrým začátkem kromě spánku u otevřeného okna je také cvičení na chladnějším vzduchu v řádech několika minut. Taková ranní pětiminutová rozcvička u otevřeného okna vás skvěle nakopne do celého dne. (To mohu za sebe potvrdit, mimochodem denně cvičím s Office Fitness.)</p><h2>2.     Méně vrs​​tev oblečení</h2><p>Pokud půjdete vynést koš se smetím, na nákup do nedalekého obchodu či na krátkou procházku se psem, doporučuje se začátečníkům vzít si o vrstvu oblečení méně. Já k tomu vždy nasadím svižnější tempo a tělo se doopravdy zahřeje samo.</p><h2>3.     Studená sprch​​a</h2><p>Záměrně píšu „studená“ nikoliv „ledová“, protože na začátek je opravdu dobré snižovat teplotu spíše od vlažné vody po studenou, tedy neotáčet kohoutek ve sprše ihned naplno doprava. Obecně se doporučuje začít od nohou po kolena a rukou po lokty a postupovat se studenou vodou nahoru směrem k srdci. Díky průtoku krve z končetin do centra těla a také nervové soustavě bude mít tělo nadneseně pocit, že se otužuje celé.</p><p>Cílem je ale užít si ten pocit z chladu - pokud se vám tedy budou zatínat zuby nebo se nebudete moci uvolnit, je nutné zvolnit a ubrat chladovou zátěž. Já osobně jsem začala opravdu pomalu a v řádech vteřin ve vlažné a později studené vodě. Důležitá je hlavně pravidelnost, ale pokud máte den, kdy se vám kohoutek otáčet nechce, nenuťte se do toho, ať si ze studené vody neuděláte nesnesitelnou povinnost.</p><p>Jestli jste milovníkem horké sprchy (jako já), klidně se sprchujte celou dobu v teplé vodě a otužování nechte až na závěr. Je ale možné střídat v krátkých intervalech (cca po 20 vteřinách) teplou a studenou vodu, přičemž vždy na závěr dejte vodu studenou.</p><p>Jakmile vypnete vodu, nebalte se hned do ručníku, ale nechte tělo, aby se zahřálo přirozeně. Já osobně chodím do menšího podřepu nebo si lehce zatancuji. <br></p><h2>4.     Kostka ​​ledu</h2><p>Pokud vám studená voda stačit nebude a budete se chtít posunout dál, je ideální čas začít s ledovým otužováním. Protože se nic nemá přehánět, doporučuji začít kostkou ledu, a tou přejíždět přes místa, kde se vyskytuje tzv. hnědý tuk, tedy v oblasti ramen, trapézových svalů, hrudníku, krku a rukou. Jedná se o metabolicky aktivní tkáně, které nám pomáhají hubnout. Díky hnědému tuku si tělo dokáže samo vytvořit teplo a při jeho aktivaci právě studenou vodou dochází ke zvýšení energetického výdeje, tudíž dojde ke spálení většího počtu kalorií. (Takže se studenou sprchou vlastně i hubne, není to skvělé?)<br></p><h2>5.     Kyblík s ledem a​​​ vodou</h2><p>Stejně jako se studenou vodou je dobré začínat u končetin, vyšším levelem je kýbl s ledem a vodou, do kterého si postupně budete namáčet nohy po kolena a ruce po lokty. Efekt je stejný jako u studené vody, krev v těle cirkuluje, a tak bude mít tělo přeneseně pocit, že se otužuje celé.</p><h2>6.     Ledová spr​cha</h2><p>Dalším krokem v otužování je ledová sprcha. Konkrétně postup následující: otočení kohoutku úplně doprava, potom pár vteřin, kdy víte, že přijde opravdu hodně studená voda (během nich se občas i proklínám), první vteřiny ledové vody a pak už jen uvolnění a příjemný pocit, který vám vyšle tělo. Nebojte se žádného šoku, pokud se budete celou sprchu podvědomě připravovat na otužování, mozek bude vysílat signály tělu, co přijde, a ledová sprcha vám nemůže uškodit.</p><h2>7.     Otužování ve​ vodě venku</h2><p>Samotným vrchol​em je otužování v zimních měsících v tekoucí či stojaté vodě venku. Dnes není problém najít v téměř každém městě partu otužilců, kteří se do vody vrhají pravidelně. Důležité je ale nenechat se jimi strhnout. Nechtějte lámat rekordy jako ti, kteří se tomu věnují déle.</p><p>Před každým otužováním v ledové vodě venku je dobré tělo rozcvičit, do vody jít dle vlastního tempa (když se necítíte na potopení celého těla, není to vůbec špatně, příště to třeba půjde lépe) a pořádně dýchat. Když cítíte, že vám to stačí, tak je dobré z vody vylézt, opět se trošku rozhýbat (v tuto chvíli se vám kůže krásně zabarví do červena), pak se svižně osušit a obléknout se. Rozhodně nebuďte v ledové vodě déle než 20 minut.</p><p>Pokud chcete otužování spojit i s Wim Hofovou metodou, která kromě ledových koupelí zahrnuje také dechová cvičení a meditaci, přečtete si můj již zmiňovaný článek.</p><h4> <img src="/Blog/PublishingImages/Stranky/jak-zacit-s-otuzovanim/otuzovani.JPG" alt="otuzovani.JPG" data-themekey="#" style="max-width:690px;" />​I venku můžete​​ s otužováním začít postupně, stačí do vody potápět nejdříve kotníky, později i lýtka.</h4><h2>​Několik rad pro všechny budoucí i stávající otuž​ilce:<br></h2><ul><li>Do ledové vody venku nikdy nechoďte sami, vemte si s sebou parťáka, který na vás případně dohlédne (i když otužování není nebezpečné, nikdy nevíte, co se může stát).<br></li><li>Otužujte se pouze pokud se cítíte zdrávi a fit.<br></li><li>Nespěchejte, nepoměřujte se s ostatními, nedělejte to kvůli fotkám na Instagram (těch už je tam dost), jen si to všechno užívejte.<br></li><li>Neberte chlad jako svého nepřítele, ale jako svého průvodce a pomocníka k lepší imunitě i psychickému rozpoložení.<br></li><li>Snažte se v otužování najít pravidelnost, ale když se vám nebude chtít, neberte to jako selhání.<br></li><li>Nelekejte se, pokud při otužování budete mít najednou větší pocit hladu, je to naprosto normální, protože se vám zrychlí metabolismus.<br></li></ul><p>Na závěr bych chtěla všem, kdo se do otužování pustí, popřát hlavně pevnou vůli, protože o tu vlastně jde, a mnoho příjemných pocitů při oddávání se chladu.</p><p>Pamatujte, že není důležité, „kdo vydrží víc“ a že není první v cíli ten, který nejrychleji vystartuje, ale ten, který je připravený. Proto „nepřepalte“ start.<br></p><p>A na závěr přidávám svoji fotku z jednoho z večerních otužování v jezírku.<br></p><p> <img src="/Blog/PublishingImages/Stranky/jak-zacit-s-otuzovanim/otuzovani-v-jezirku.jpg" alt="otuzovani-v-jezirku.jpg" data-themekey="#" style="max-width:690px;" /> <br> </p><p><i> Kateřina Mazánková<br></i></p><p> <img src="file:///Users/veronikajandova/Library/Group%20Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_image003.jpg" data-themekey="#" alt="" style="width:690px;margin:5px;" />​</p><p> <br> </p>hobby;#
Kávový slovníčekhttps://create-it.cz/Blog/Stranky/druhy-kavy.aspxKávový slovníček​<span style="text-align:justify;">​​​​​Ráno bez šálku oblíbené kávy je pro mnohé stejně krutý počin jako za necovidových časů​ cesta do práce bez sluchátek, díky kterým je ona tlupa lidí najednou alespoň o něco snesitelnější. A kombinace obou případů? To už je člověk nebezpečný svému okolí. Ale zpět k onomu zázračnému nápoji. Každý má svoji oblíbenou kavárnu nebo kávovar, jenž by si v případě volby tří věcí vzal s sebou na pustý ostrov. Ať už u kavárenského výdejového okénka váháte, jaké zaklínadlo vyslovit pro získání toho správného povzbuzujícího nápoje pro daný den, nebo vždy říkáte stejné heslo, není na škodu zjistit, co přesně jednotlivá kódová jména označují.</span><h2> Espresso a ristret​​to</h2><p>Espresso lze považovat za nejznámější a pro mnohé nejoblíbenější druh kávy. Připravuje se ze 7 g kávy, která se pod tlakem okolo 9 barů extrahuje přibližně 25-30 vteřin. Důležitá je teplota vody, nepřesahující 90 stupňů. Výsledkem je emulze o objemu 30 ml, u které můžete rozeznat hořké až kouřové tóny. Oproti tomu ristretto, oblíbené především v Itálii, je obsahově menší (přibližně 20 ml) avšak připravované ze stejné dávky kávy jako espresso. Délka extrakce se v definici uvádí 18 vteřin. Je specifické svojí hustou olejovitou strukturou. Pokud se rozhodujete mezi těmito druhy kávy a kromě chuťového potěšení hledáte porci kofeinu, která vás nakopne, sáhněte raději po první variantě. Kofein se začíná vyplavovat až po delší době, a proto jej espresso obsahuje více. Mimochodem, pokud se vám i espresso zdá hořké, zkuste si objednat prodloužené espresso, neboli lungo. Je v něm dvakrát víc vody než v espressu a chuť se tak zjemní a rozvine.</p><h2> Cappuccino a latt​​​e</h2><p>Ti, kteří upřednostňují kávy obsahově větší, si u těchto variant přijdou na své. Cappuccino je se svým objemem 150 - 180 ml velikostně řazeno mezi střední kávy. Nápoj se skládá z <em>1/3</em> espressa, <em>1/3</em> horkého mléka a z <em>1/3</em> našlehané mléčné pěny. Výška pěny by se měla pohybovat okolo 1-2 cm a neměla by tvořit „kopec“. To je charakteristické pro přešlehání a v mnoha případech došlo také k spálení mléka. Zkušenější baristé umějí při nalévání mléka a pěny do nápoje vykouzlit technikou latte art různé obrázky. S l​atte se posouváme k ještě k více mléčnému obsahu, který je obsahově mezi 280 ml až 330 ml. Základem je opět espresso, které se nalévá do šálku s napěněným mlékem. Pokud je správně připraveno a barista vyčká, než se oddělí mléko od pěny, je výsledkem třívrstvý nápoj obsahující více mléka než cappuccino s vrstvou mikropěny na povrchu.</p><h2> America​​​no</h2><p>Kdo by neznal charakteristické záběry z amerických seriálů, kdy hlavní protagonisté sedí v restauraci a servírka jim doleje plný hrnek kávy z konvice. I když tak typické pro USA, toto není ten typ kávy, o kterém se budeme bavit! Jedná se totiž o obyčejnou překapávanou kávu.</p><p>Americano jako takové vzniklo za druhé světové války, kdy v Evropě válčili vojáci z USA. Ti byli zvyklí na svůj každodenní rituál, tedy pořádný šálek kávy. Místní malé espresso jim tedy nebylo moc při chuti, a proto jej začali ředit horkou vodou. Tento způsob se dochoval dodnes. Pokud si tedy objednáte americano, je několik variant, co můžete od baristy dostat. V prvním případě vám jej donese namíchané, tj. ve větším šálku kde je espresso zalité horkou vodou v poměru 1:5. Druhá varianta, která bývá na vyžádání a méně častější je ta, že obdržíte espresso ve větším šálku a horkou vodu zvlášť. Samotný poměr si zvolíte sami dle toho, jak to máte sami rádi. Poslední případ, který je mnohdy označován nesprávně jako chybný, je Long black. Je to přímá příprava espressa do horké vody. Americano při tom však přijde o větší část cremy.</p><h2> Flat whi​​​te</h2><p>Jednou skupinou milovaná, druhou nepochopená varianta kávy. V současnosti se označuje pravděpodobně za nejvíce „hipster kávu“ tohoto období (sám bych ale tento titul přenechal jiné, ale o tom třeba příště). Nápoj překvapivě nepochází z původní italské kávové kultury, nýbrž dle některých z Austrálie či možná z Nového Zélandu. A aby to nebylo tak jednoduché, Ian Bersten (zakladatel Sydney's Belaroma Coffee) dokonce tvrdí, že pochází z Anglie 50. let. Jak to, tak bývá, ukončení sporu o jeho vzniku se v dohledné době neplánuje :). Co je však o poznání jednodušší, je důvod, proč se k tomuto nápoji uchylují i vyznavači silnější kávy. Flat white je sice velmi podobné cappuccinu, ale je zde několik rozdílů. Prvním z nich je větší množství samotné kávy. Obsahuje vlastně doppio (dvojité espresso) zalité přibližně 120 ml horkého našlehaného mléka. Jedná se tak o variantu pro milovníky silné kávy snoubící se s pořádnou dávkou mikropěny až po okraj.<br></p><h2>Dom​ácí káv​a</h2><p>Teď v době covidové ovšem může být oříšek dostat se ke kvalitní kávě. Nechcete-li rozpustnou a klasický český "turek" vás také neuspokojí, můžete se inspirovat <a href="/Blog/Stranky/priprava-kavy.aspx">v článku mého kolegy</a>, nebo jít cestou vlastního kávovaru a svůj oblíbený nápoj si vychutnat třeba v pyžamu.</p><p>Pokud se chcete pustit do přípravy těchto typů kávy ve vlastní kuchyni, je dobré kupovat domácí kávovar s rozvahou. Především u mléčných káv doporučuji zvolit přístroj s funkcí šlehání mléka. Záleží však také na tom, kolik peněz chcete na budoucí kávový oltář věnovat. Nejpraktičtější, ale také nejdražší typy dokáží připravit například latte na jedno kliknutí (následně stačí další kliknutí na dotykovém displayi a dojde k pročištění celé soustavy).</p><p>Jste-li fanouškem americana a cappuccino či latte není vaše gusto, postačí vám ve většině případech levnější typ kávovaru. Doporučuji ale zainvestovat alespoň do pákového přístroje, než pár korun uskrblit a ředit kapslové espresso horkou vodou. Nakonec totiž můžete zjistit, že to není úplně stejné jako to, co vám nosí ve vaší oblíbené kavárně. Čemu však zabránit nedokážete, je nutnost čištění kávovaru po každé připravené kávě. Zde to za vás žádné kouzelné tlačítko neudělá.</p><p>Osobně jsem skřivan s malou kuchyní, tak si téměř denně pro svoji oblíbenou kávu zajedu. A mohu testovat i méně známé vychytávky, například espresso tonic - a přesně do takovýchto vod mám v úmyslu zamířit v příštím článku.​</p><p><i>Vladimír Křížek<br></i><br></p><p> <br> </p>hobby;#