Animace k seriálu „Programování v shellu“

Animace k seriálu „Programování v shellu“ Seznam všech příspěvků

Během tvorby video seriálu o „Programování v shellu“ jsem vytvořil celou řadu animací. Především pro videa samotná, kde se pomocí nich snažím lépe vystvětlit téma. Dalším důvodem některých animací bylo ozvláštnit a zatraktivnit příspěvky na twitteru o jednotlivých částech seriálu.

Většina animací je ručně kreslených, neboť tak lépe zapadají do videí a prezentací, které jsou rovněž doplňovány ručně kreslenými obrázky. Ale občas jsem použil i jiný druh animace. U animací k prezentacím jsem pak ještě často přidal úvod, aby bylo zřejmé, k čemu se animace vztahuje.

Všechny animace (až na jednu) jsou vytvořeny v programu Blender. Tou jedinou animací mimo Blender je schéma příkazů editoru vim, kterou jsem dělal pomocí nástroje Xournal++, který běžně používám pro real-time kreslení. Na něm jsem si však vyzkoušel, že pro vážnější práci s ruční animací to úplně není vhodný nástroj a přešel jsem na „Grease pencil“ animaci v Blenderu.

Animace jsou seřazené od nejnovější po nejstarší. Takže pokud si je chcete projít od jejich začátku, začněte na konci u krátké animace, která uvádí každý díl seriálu.

Pokročilejší přístupová práva v UNIXu

První minisérie rozšiřující původní díly z Programování v shellu je pokračováním přístupových práv. Na jejím začátku je delší animace. Ta má přes 6 minut bez komentáře. Ve videu PS: Přístupová práva + TL;DR je ke shlédnutí včetně komentáře a má 30 minut.

Tato animace je mnohem delší než předchozí animace. Také je tématicky rozdělená na několik částí. Proto jsem jednotlivé části oddělil do samostatných scén. Takže množství kolekcí a objektů v každé scéně je ještě v rozumném množství. Toto rozdělení do scén je také výhodné pro VSE (Vide Sequence Editor), ve kterém je výsledná animace sestavena právě z jednotlivých scén, které se díky tomu nemusí předrenderovat.

Procesy v UNIXu a úlohy v shellu

Poslední animace původní série byla o procesech a úlohách. Pro vysvětlení různých stavů procesů a úloh a způsobů, jak mezi nimi přecházet jsem vytvořil animaci, kterou jsem použil jak v dílu Úlohy v shellu, kde je i s komentářem. Také jsem ji přidal jako doprovodnou animaci tweetu ke konci semestru.

Jelikož je animace také součástí obsahu dílu, zase jsem ji udělal stylem ruční kresby. Největším oříškem bylo, jak do jedné kresby spojit 3 různé problematiky. Jak procesy v operačním systému, tak úlohy v shellu a jejich vztah a navíc otázku pozastavení výstupu na terminálu.

A k tomu ještě přibyl problém ovládání úloh a procesů pomocí příkazů a nebo klávesových zkratek v terminálu. V zásadě to není úplně důležité, ale snažil jsem se o odlišení jednak barvou (což je myslím patrné), ale také jemnou změnou stylu animace. U příkazů se nejdříve napíše příkaz a pak teprve nakreslí šipka, jakoby po odeslání příkazu. U klávesové zkratky se šipka kreslí zároveň (tedy až na pozastavení výstupu na terminálu, kvůli bufferu).

Vyhledávání, archivace a komprese souborů s Tetrisem

Tweet o sérii videí k vyhledávání souborů ve filesystému a jejich archivaci a kompresi měl také svou doprovodnou animaci. Animace ruční kresby byla tentokrát na motivy hry Tetris. Potřebné dílky se nejdříve hledaly v adresářové struktuře, pak se přeuspořádaly do kompaktního tvaru (představující archiv) a nakonec se výsledný tvar zmenšil kompresí.

Tato animace byla technologicky stejná jako předešlé animace ručních kreseb. Nejvíc mě potrápil samotný Tetris. Na začátku to bylo snadné. Z tvarů jsem si vybral akorát takové, které se mi při skládání hodily, aby vytvořily velký kompaktní objekt. Pak jsem zvolené dílky rozmístil do tvaru stromu, představujícího adresářovou strukturu.

Bohužel jsem si ale zapomněl původní složený tvar na začátku práce uložit. Takže když jsem pak připravoval animaci, která jednotlivé dílky vybírá z adresářové struktury a tvoří z nich kompaktní tvar (archiv), dost jsem se u toho zapotil (trvalo mi to cca 2h). Jelikož jsem musel dílky poskládat tak, aby přesně vytvořily obdélník, nebylo to tak jednoduché, jak jsem to ze hry samotné znal (zkuste si to). Ale jako trénink na transformace objektů (posun a rotace) v Blenderu to bylo dobré.

Přístupová práva ve stylu Matrixu

Pro další úvodník a tweet k přístupovým právům jsem chtěl vyzkoušet něco jiného, než ruční kresbu. Jelikož se v přístupových právech (a jejich nastavování) vyskytují znaky rwxsgtuoa=+-, vytvořil jsem z nich „Matrix“ efekt. Tedy náhodný tok těchto znaků v proudech shora dolů.

Jedná se o procedurální animaci. Tedy o animaci, která vzniká na základě předpisu (procedury), zde procedurální textury. V tomto případě se jednalo o náhodný šum, který vybíral náhodný znak z množiny na každém místě matice. Barevný proud je vytvořen opět náhodným šumem, který je vynásobený barevným přechodem, který se cyklicky (modulo) opakuje a přitom s čase posunuje různě rychle dolů.

Pro vytvoření prostorového dojmu je takových matic několik za sebou. Dalším objektem se stejnou procedurální texturou (ale menším písmem) je text „chmod“, což je hlavní příkaz, který slouží k nastavování přístupových práv. Obrys tohoto textu se v průběhu animace postupně vykreslí a zmizí, aby byl text čitelnější a celkově byla animace jiná než jenom založená na matrix efektu.

„Algoritmus přátelství“ a jeho implementace v shellu

Předlohou pro animaci tweetu ke složeným příkazům (podmínkám, cyklům, …) bylo schéma „The Friendship Algorithm“ od Dr. Sheldona Coopera, Ph.D. ze seriálu „The Big Bang Theory“. K němu jsem vytvořil i fiktivní pseudoimplementaci v shellu.

Obrázek schématu algoritmu se na internetu nachází v mnoha podobách. Jednu z nich jsem použil a lehce upravil, aby lépe odpovídala možné implementaci. Resp. aby bylo možné schéma postupně kreslit a zároveň zobrazovat příslušný kód, který schéma implementuje a nemusel se přitom příliš v obrázku vracet.

Celý pseudokód i schéma se vešlo do jednoho HD obrázku, ale doporučuji si video přehrát na větší obrazovce. Tedy, pokud si chcete text skutečně přečíst. Větvení (case) uprostřed dole vypadá dost stísněně, ale takové bylo i v předloze, což jsem nechtěl měnit.

AWK

Doprovodné video k tweetu o sérii k „AWK“ je inspirováno titulní stranou knihy o AWK od jejich autorů. Video má 2 části. První část je animace alky (awk) a druhá část ručně obkresluje název knihy „The AWK Programming Language“. Zajímavé na první části je to, obrázek vznikl automatizovaně, aniž bych jej kreslil.

Na tomto videu jsem si chtěl vyzkoušet automatizaci kreslení podle předlohy. Využil jsem toho, že obrázek alky vypadá jako perokresba a má tedy jenom 2 barvy. Jelikož obsahuje spoustu detailů (např. peříček), nechtěl jsem obrázek obkreslovat ručně.

V první fázi jsem obrázek automaticky zvektorizoval pomocí vektorového editoru Inkscape. Tím jsem dostal na první pohled velkou změť objektů. V zásadě se však jednalo o malý počet logických částí. Tedy o tmavý obrys ptáka, jeho bílé bříško a flek kolem očí a pak hodně čar představující peří (ať bílé na černé nebo černé na bílé).

Tyto objekty jsem naimportoval do Blenderu a nejdříve nechal postupně vykreslit černý obrys a na něm bílé části. Po těchto hlavních částech se pak postupně vykreslily peříčka, oko, části zobáku a nohou.

SED znělka ve stylu Simpsons Halloween Special

Pro video k tweetu o „Stream editoru (sed)“ jsem se rozhodl pro jinou formu animace. Na rozdíl od předešlých animací se nejedná o postupné zobrazování textu. V tomto kraťoučkém videu šlo jenom o to, udělat zajímavou upoutávku pro tweet. Vzhledem k času vydání videí k tomuto tématu, které je dosti „pekelné“, jsem si vybral předlohu v úvodní znělce The Simpsons Halloween Special.

Na základě jednoho snímku z úvodu dílu jsem vytvořil (obkreslil) několik vrstev kresby, rozdělené na text, popředí a (několik) pozadí (stromy a obloha s mraky a měsícem). Jednoduchým paralax efektem mírným pohybem kamery je pak vytvořen dojem hloubky scény.

Při animaci také mraky na obloze pomalu plují a z textu začne odkapávat krev. To jsem udělal ručně pomocí několika snímků (frame-by-frame animace), podobně jako v předloze. Na konci animace se ještě na pozadí měsíce objeví nápis „sed“.

Syntaxe regulárních výrazů

Po poučení z animace vimu (dále) jsem přehled syntaxe Regulárních výrazů již připravil celou v Blenderu. Jedná se o jednoduché postupné vykreslování ručně psaného textu. Pro účely tweetu i samotné prezentace jsem vytvořil obrázek a tedy i tuto úvodní animaci.

Druhá verze animace, která je doplněná komentářem, je součástí videa PS: Regulární výrazy - Syntaxe. Na rozdíl od ostatních animací, tato je psaná česky. A to z toho důvodu, že její původní záměr bylo právě doplnění výkladu regulárních výrazů v češtině. Jinak se snažím, aby byly animace jazykově neutrální, pokud to vůbec jde, nebo alespoň anglicky.

mv: přejmenování nebo přesun souboru?

Ná základě dotazu od studentů jsem vytvořil animaci, která se pokouší objasnit rozdíl mezi přejmenováním a přesunem souboru v UNIXu/Linuxu. Tato animace není pouze pro efekt, ale snaží se ukázat, co se na různých vrstvách (file)systému děje v různých situacích volání příkazu „mv“.

Tato animace má dvě verze. Jedna (bez úvodu a závěru) je součástí komentovaného videa PS: Filesystem - mv: přejmenování / přesun souborů. Pro účely komentování jsem video rozdělil na jednotlivé části, které pak při vysvětlování pouštím. To mi ušetřilo spoustu práce při synchronizaci animace s mluveným slovem, i když tento postup má své mouchy.

Druhá verze (zde zobrazená) je s úvodem a mezi jednotlivými částmi nejsou žádné pauzy. Takže je kratší a svižnější, ale zase toho moc nevysvětlí. Proto jsem animaci alespoň ještě doplnil o krátké popisky, které sdělují, kdy se jedná o přejmenování a kdy o přesun souboru. Výsledný obrázek je také součástí tweetu.

Unix Filters

Pro ilustraci fungování základních textových filtrů jsem vždycky používal statický obrázek. Jeho smyslem bylo graficky znázornit typické operace s textem a také vzájemný vztah různých filtrů. Animace mi umožnila, aby ilustrace mohla být ještě názornější.

Jednotlivé části animace jsem použil na začátku videí o filtrech, kdy se snažím shrnout ty základní poznatky z daného videa. Dohromady tedy ve videích celá tato animace není. Pro účely tweetu o filtrech jsem jednotlivá videa doplnil úvodem.

Jelikož je na délku twitterového videa omezení na 2min a 20s, musel jsem se do tohoto limitu vejít i s úvodem. To se nakonec povedlo a video tak má 139s.

Vim schéma

Tato animace byla první větší animací v seriálu. Přitom vznikla víceméně jako vedlejší efekt kreslení obrázku do prezentace. Jednalo se vlastně o neopakovatelnou příležitost vytvořit v nástroji Xournal++ animaci.

Animace je velmi primitivní a jedná se vlastně jenom o používání funkce Undo/Redo v programu. Po nakreslení celého schématu jsem došel pomocí opakovaní funce Undo až k prázdnému papíru a následně pomocí funce Redo jsem vracel odebrané kroky. Tak vznikl dojem kreslení.

Animaci nelze opakovat nebo upravit, neboť se jednotlivé kroky kreslení neukládají do souboru. Po zavření aplikace tedy tato možnost zmizí. Také nelze měnit krok animace ani ji jinak upravovat. Bohužel jakákoliv změna znemožní provedení následujících kroků pomocí Redo. Proto není možné ani odstranit linky, které jsem přidal před celou kresbou, abych lépe dodržel odstupy textů a náklon textů.

Tato animace odstartovala tradici animací v tweetech o seriálu. Do té doby jsem anoncoval další díly seriálu jenom s doprovodným statickým obrázkem. Od tohoto tweetu jsem začal přemýšlet nad tím, jestli by nebylo zajímavější mít místo obrázku animaci, kterou bych navíc mohl použít v samotných dílech.

Logo Programování v $HELLu

Jelikož se celý seriál jmenuje „Programování v shellu“, bylo potřeba hned na začátku vymyslet jednoduchou animaci, která by zapadala to stylu prezentací. Jelikož při prezentacích používám ruční kresbu, měla být i úvodní animace ručně kreslená.

Úvodní animace seriálu
Úvodní animace každého dílu seriálu. Část této animace se ve zmenšené (a přebarvené) podobě také cyklicky zobrazuje v pravém horním rohu videí.

Tato animace je pak v každém díle doplněná o text s názvem části, resp. dílu. To už však není součástí animace, ale pouze jako obrázek, který se přidá k animaci přímo v OBS.

Samotná animace pracuje s podobnostní slov Shell a Hell, což je pro mnohé uživatele shellu synonymem. Také písmeno S se podobá znaku $, kterým se v shellu označuje proměnná. Ve zvukovém pokresu úvodní znělky navíc ostřejčí zvuk (náhodou) sedí s vyhořením slova $HELL… tak jsem to tak nechal.