% pro pre-07
%\usemodule[anch-pos]
%\def\Idea{a}
%\def\Page{a}
%\setuppagetransitions[random]
\switchtobodyfont[24pt]
\usemodule[pre-13] % pre-writing
\mainlanguage[cz]
%\usemodule[animation]

%\def\beginOLDTEX{}
%\def\endOLDTEX{}
%\def\beginXETEX{}
%\def\endXETEX{}
%\def\beginLUATEX{}
%\def\endLUATEX{}
%\usemodule[simpleslides][style=BigNumber, color=blue, font=LatinModern]

%\placeTitle
%\SlideTitle{moje} ano

% pre-03 druh, jezdící spodek (2)
% pre-62 čtyři barvy jako rám
% pre-67 růžová a zaznačené rohy červenou
% pre-22 kolečka v pozadí slajdu (jak na každém slajdu jiná?)
% pre-13 vlnky kolem slajdu, šedé pozadí (1)

%\TitlePage{pajovo}
%\definebar[pajovostrike][rulethickness=0.2,alternative=4]

%abcdef XXX YYY

%test \from[setposition]

%a smích e A B C a a aaa
%a
%a b c d e 

%Send your spam to \goto{http://www.google.com/}[url(http://www.google.com/)]

%Send your spam to \goto{visible@mailaddress.zzz}[program(test1.sh)]

%Send your spam to \goto{visible@mailaddress.zzz}[url(mailto:pavel@striz.cz)]

%\startsection[title={Testing Con\TeX t}]
%This is my {\em first} ConTeXt document. abc. ABCDEF, abc, pajovo 
%\stopsection
%\page
%pavlík

%\page
%aha
%\page
%klika

%\page
%\defineprogram[pust][skripty/#1.sh]
%\goto{\externalfigure[tucnak.jpg][width=0.2\textwidth]} [program(skripty/pust.sh)]

%\page
%pa pa pa

%\StartSteps 
%\startformula \startalign
%\NC x^2 + y^2  \NC  = z^2 \NR 
%\NC   x^2 + y^2   \NC = z^2 \NR  
%\stopalign\stopformula \NextStep
%pivo \NextStep
%další
%\StopSteps

%další text

%\setupinteraction[state=start]
\setupexternalfigures[directory={obrazky-velka}]
\definecolor [PageColor] [r=0.5,g=0.5,b=0.5]
\setuplayout[bottomdistance=0pt,bottom=0pt,topspace=10mm,backspace=14mm,textwidth=18.5cm]
\setupinteractionmenu[bottom][state=start,height=0pt]
\setupwhitespace[none]
%\setuphead[title][incrementnumber=yes,tt]

%\setupTitle[ title={Title of the presentation},author={Name of authors},date={Date of presentation},]
\usemodule[rsteps]
\setupinteraction[state=start]
\definefont[LargeFont][SansBold*default,boldened-20,bbox @ 32pt]
\definefont[SmallFont][SansBold*default,boldened-20,bbox @ 22pt]

\usemodule[tikz]
\setuphead[chapter][after=\vskip0.5ex]

\setupwhitespace
  [small]
%\setupwhitespace[big]

%https://wiki.contextgarden.net/Command/setupitemgroup
\definesymbol[pajovo][$\bullet$]
\setupitemize
  [1]
  [symbol=pajovo,
	 margin=0.4em,
   width=1\bodyfontsize,
	 inbetween={\blank[small]},
	 before={\blank[small]},
	 after={\blank[small]},
	 align=normal,
	 ]
\hyphenpenalty=10000
%\exhyphenpenalty=10000
\def\bez#1#2 {\goto{\color[magenta]{\bf #1}}[program(obrazky-velka/#2.sh)]}
\def\openproblem{\color[orange]{OpenProblem:} }
\def\closedproblem{\color[blue]{ClosedProblem:} }






\starttext

\startstandardmakeup
\LargeFont \setupalign[middle]
Jak {\color[red]{mě}} %\overstrike{jsem}
%\starttikzpicture 
%\node[inner sep=0, outer sep=0pt, draw=none, baseline=-1ex, font=\LargeFont]{jsem};
%\stoptikzpicture\ 
%učil
fraktály a~grafy a~vzorce a texty \color[red]{učily} létat
\vfil
\SmallFont Pavel Stříž, OSSConf 2019, Žilina
\vfil
\midaligned{\framed[corner=00,color=black,background=color, backgroundcolor=black, backgroundoffset=3pt, frame=on,boffset=-1ex]{\externalfigure[striz-2019.jpg][width=0.65\textwidth]}}
\stopstandardmakeup

\page
\setuplayout[topspace=-5mm]

\starttitle[title=Motto]
\setupTABLE[frame=off]
\midaligned{\bTABLE
\bTR \bTD Létat \eTD \bTD = nehladká sazba, např. sazba mimo účaří \eTD \eTR
\bTR \bTD \eTD \bTD = sazba čehokoliv kamkoliv (neodborně)\eTD \eTR
\bTR \bTD \eTD \bTD = skákání a poletování radostí \eTD \eTR
\bTR \bTD \eTD \bTD = rotování zoufalstvím \eTD \eTR
\eTABLE}

\page
\starttitle[title=Fraktálové začátky]
\startitemize
\item Tu a tam zmíním české přínosy. Fraktály se u nás zabýval profesor Drahoš, kandidát na prezidenta. Skončil v pořadí druhý.
\item Jsem odkojen na programu POV-Ray.
\item Nejdřív jsem testoval program ContextFree.
\item Přešel jsem na programy Apophysis (3D), ApoMap, Incendia, HexQuilts a Geometrica.
\item Zaujal mě web \goto{http://bridgesmathart.org}[url(http://bridgesmathart.org/)]
\item Pro OSSConf 2012 vznikla výstava, 5 stran.
\stopitemize

\page
\ \vfil
\midaligned{\framed[corner=00,color=black,background=color, backgroundcolor=black, backgroundoffset=3pt, frame=on,boffset=-1ex]{\externalfigure[2012-apophysis.png][width=17.5cm]}}

\page
\starttitle[title=Rodina Mandelbulb*]
Z novějších mě zaujaly Mandelbulber(2) (včetně Linuxu) a~Mandelbulb 3D. Občas se tam video urodí, spíš běh variacemi jednoho fraktálu. Zkoumal jsem dál.
\par\vskip-3ex
\midaligned{\framed[corner=00,color=black,background=color, backgroundcolor=black, backgroundoffset=3pt, frame=on,boffset=-1ex]{\externalfigure[mandelbulber2.png][width=10cm]}}

\page
\starttitle[title=Současné pokusy]
\startitemize
\item Čistě na 2D animace jsem zkusil SynFig.\\ 
  \bez{Ukázka}pokus-synfig 
\item Vyzkoušel jsem program Qosmic.
\item Následoval pokus s programem Chaotica.
\item Prozkoumal jsem současný stav starších programů a objevil Apophysis-j-28.jar.
\item U diskuzí jsem zahlédl název jWildfire. 
\stopitemize

\page
\starttitle[title=jWildfire]
\startitemize
\item Rozšiřuje transformační možnosti flam3 (má příponu souborů flame a jwfmovie). 
\item Možnost statického fraktálu, animování (zapíná se 3D) i přechodů (Movies).
\item Lze použít texty (text_wf), načíst si SVG (svg_wf), IFLAME (iflames_wf) či OBJ (obj_mesh_wf). Vše je řízeno přes Transformations -- Nonlinear.
\item Nastavitelné rozlišení, výstup lze i do HDR.
\item Komunita rozšiřuje možnosti skripty v Javě. Po pár kliknutích jsem získal pozadí do Linuxu (HB 2 planetoid smooth). Nový obrázek přes Run.
\stopitemize

\page
\ \vfil
\midaligned{\framed[corner=00,color=black,background=color, backgroundcolor=black, backgroundoffset=3pt, frame=on,boffset=-1ex]{\externalfigure[test5.png][width=18.5cm]}}

\page
\starttitle[title=Příprava podkladu]
\startTEX
#!/bin/bash
echo "LaTeXuji..."
lualatex texty.tex 1>/dev/null 2>/dev/null
echo "Konvertuji..."
gm convert -density 100 -fuzz 100% 
  -transparent white texty.pdf texty.png
inkscape --export-plain-svg=texty.svg 
  -T texty.pdf
\stopTEX
Pozn.: -T Convert text object to paths on

\page
\starttitle[title=První vzorky]
\startitemize
\item jWildfire+Kdenlive. \bez{Ukázka}pokus-kdenlive
\item jWildfire+Flowblade. \bez{Ukázka}pokus-flowblade
\item Ikonka rozpohybování parametrů: Create/edit a motion curve. \externalfigure[motionCurve.gif][width=1cm]
\item Klíčový problém je přechod mezi fraktály. 
\bez{Ukázka}pajovo-prechod-jwildfire 
\stopitemize

\page
\starttitle[title=Přechod mezi fraktály]
Ten na základě úprav parametrů řeší flam3. Ale funguje to jen, když jsou geneticky zpřízněné, jinak vzniká neostrý obraz, de facto šum.\par
\bez{Ukázka}pajovo-prechod-flam3 \par
Co s tím?

\page
\starttitle[title=Flam3]
\startitemize
\item Ukázky, historie: \goto{https://flam3.com/}[url(https://flam3.com/)]
\item Matematické pozadí, \goto{http://flam3.com/flame_draves.pdf}[url(http://flam3.com/flame_draves.pdf)]
\item Pro žáky: představa přechodu z úsečky na část paraboly.
\item Představa sítě bodů: v Blenderu přechod z krychle na kouli a obráceně.
\item Github: \goto{https://github.com/scottdraves/flam3/wiki}[url(https://github.com/scottdraves/flam3/wiki)]
\item High Fidelity Demo, místy napojené, místy nikoliv.
\stopitemize

\page
\starttitle[title=Flam3-genome]
\startitemize
\item Soubor flam3 je textový XML soubor s parametry.
\item Klíčový je flam3-genome: generuje z aktuálního fraktálu nový (Genetic Algorithm). Lze se dostat do původního fraktálu.
\startTEX
env sequence=ABC.flame nframes=30 flam3-genome > ABC_anim.flame
\stopTEX
\stopitemize

\page
\starttitle[title=Flam3-animate]
\startitemize
\item Poté flam3-animate vezme dva fraktály a vytvoří sekvenci. Navíc hlídá ostrost obrazu (Density Estimation) a přechod mezi snímky (Motion Blur).
\startTEX
env prefix=ABC format=png flam3-animate < ABC_anim.flame
\stopTEX
\item Následuje spojení obrázků do videa čímkoliv (ffmpeg, mencoder).
\stopitemize

\page
\ \vfil
\midaligned{\framed[corner=00,color=black,background=color, backgroundcolor=black, backgroundoffset=3pt, frame=on,boffset=-1ex]{\externalfigure[hezke-fraktaly.jpg][width=18.5cm]}}

\page
\starttitle[title=Electric Sheep (ES)]
\startitemize
\item Výpočetních prostředí je hodně: IBM, Google, Amazon.
\item Tohle generuje snímky jako spořič obrazovky.
\item Bohužel na pevný disk se stahuje jen poslední vypočtené.
\item Problém při kompilaci: \type{make CXXFLAGS+=-DGL_GLEXT_PROTOTYPES} místo \type{make}, vyřešeno však v Arch Linuxu, Manjaru aj.
\stopitemize

\page
\starttitle[title=Aktuální generace]
\startitemize
\item \goto{http://v3d0.sheepserver.net/cgi/status.cgi}[url(http://v3d0.sheepserver.net/cgi/status.cgi)]
\item Zde si lze stáhnout fraktály (icons, faces), přechod do sebe sama (loops) a přechod mezi dvěma fraktály (edges).
\item Pod konkrétním fraktálem v sekci genome si lze stáhnout flam3.
\item O pokračování výpočtů rozhoduje hlasování. Některé větve se dál nevyvíjí, vzniká jistý strom z párů.
\stopitemize

\page
\ \vfil
\midaligned{\framed[corner=00,color=black,background=color, backgroundcolor=black, backgroundoffset=3pt, frame=on,boffset=-1ex]{\externalfigure[draves-strom.png][width=17.5cm]}}

\page 
\starttitle[title=Free vs Gold]
%\startitemize
Na Electric Sheep se můžete stát zlatým členem (150 USD na celý život). Rozdíly jsou následující:\par\bigskip
%\stopitemize
\setupTABLE[frame=on]
\midaligned{\bTABLE
\bTR \bTD \bf Ukazatel \eTD \bTD	\bf Free \eTD \bTD	\bf Gold \eTD \eTR
\bTR \bTD Resolution \eTD \bTD	800$\times$598\eTD \bTD	1280$\times$720 \eTD \eTR
\bTR \bTD Frames/Sheep	\eTD \bTD 160\eTD \bTD	320 \eTD \eTR
\bTR \bTD Bandwidth\eTD \bTD	4.7mbps\eTD \bTD	12.3mbps\eTD \bTR 
\eTD \bTD Server\eTD \bTD archive.org\eTD \bTD Amazon Cloudfront \eTD \eTR
\eTABLE}
\par
Délka jednoho videa (typ loop či edge) je téměř 7 vteřin.

\page
\starttitle[title=Počítat to?]
\startitemize
\item Nereálné!
\item Přidal jsem se do FB skupiny \goto{https://www.facebook.com/groups/ElectricSHE3P/}[url(https://www.facebook.com/groups/ElectricSHE3P/)]
\item Jeden z členů ta spojení stahoval víc jak 10 let. Dal své sbírky na archive.org. Cca 200 GB.
\item Lze užít jen metadata (názvy souborů), není tam však délka. Mám rád metadata (poprvé v životě)!
\item Pozn. Když už, tak je lepší zjišťovat počet snímků (ffmpeg~-i) než čas videa.
\stopitemize

\page
\starttitle[title=Stahování]
\startitemize
\item \typ{wget --limit-rate} ...
\item Ideál ze sf.net: \typ{curl -C -O -L --limit-rate} ...
\item \typ{youtube-dl --limit-rate} ...
\item Bez CLI v Javě: FreeRapid Downloader (od Čecha, Vity)
\item \typ{transmission-cli --downlimit} ...
\item Konfigurovatelný aria2c
\stopitemize

\page
základní statistika
bloky; počet souborů; velikost

\page
\starttitle[title=Název souboru]

Přes metadata z archive.org či přes výpis souborů po stažení (ls), získáváme tisíce souborů tohoto typu:\par
\midaligned{\typ{00202=09556=09503=08806.avi}}
\startitemize
\item \typ{00202} je generace, flock, generation, sheep,
\item \typ{09556} je pořadové číslo výpočtu,
\item \typ{09503} je číslo/ID počátečního fraktálu a
\item \typ{08806} je číslo/ID konečného fraktálu.
\stopitemize

\page
\starttitle[title=Tvorba grafu]
\startitemize
\item Poslední dvě pětimístná čísla mohou být stejná: video začíná a končí ve stejném fraktálu. 
\item Pokud pustíme video pozpátku, virtuálně prohazujeme tato dvě pětimístná čísla.
\item Každé video utváří orientovanou hranu.
\stopitemize

\page
\starttitle[title=Soutěžní programování]
\startitemize
\item Následují algoritmy a úvahy spadající pod soutěžní programování.
\item Nepočítáme-li TAOCP, tak komplexní kniha je Competitive Programming, 3. vydání (4. vydání se čeká v květnu 2020). Problémy z UVa a Kattisu.
\item Bioinformatické problémy: \goto{http://rosalind.info}[url(http://rosalind.info/)]
\item Bioinformatická soutěž: \goto{https://bioinf.me/en/contest}[url(https://bioinf.me/en/contest)]
\item Praktické problémy: \goto{https://www.topcoder.com/}[url(https://www.topcoder.com/)]
\stopitemize

\page
\starttitle[title=Rekurze]
\startitemize
\item Vnořování voláním funkce sebe sama.
\item Občas lze rekurzi přepsat na cyklus (faktoriál).
\item Výhodné je využití paměti, např. Fibonnacciho řada.
\item Využíváme alfa* u her typu bridž či šachy, hlouběji M.\,L. Ginsberg o GIBu a Artificial Intelligence od S. Russella a P. Norviga.
\item Google DeepMind porazil světovou jedničku ve hře Go (kombinace metod).
\stopitemize

\page
\starttitle[title=Rekurze (pokr.)]
\startitemize
\item V Pythonu jsem zvyšovat hloubku přes:
\startTEX
import sys
sys.setrecursionlimit(50000)
\stopTEX
\item Zastavení programu: kompletní projití možností; dosažení určité délky cesty, nastavením limitu běhu programu (knihovna time) či do stisknutí klávesy (knihovna pynpu.keyboard).
\item \openproblem Pozastavení programu s rekurzí a jeho znovuspuštění.
\stopitemize

\page
\starttitle[title=Nalézt největší graf]

\page
\starttitle[title=Největší grafy]
\setupTABLE[frame=on]
\midaligned{\bTABLE
\bTR \bTD \bf Flock \eTD \bTD \bf Skupiny: počet fraktálů (opakování) \eTD \eTR
\bTR \bTD 00004 \eTD \bTD 246(1), 9(1), 5(1), 4(1), 3(4), 2(8), 1(185) \eTD \eTR
\bTR \bTD 00202 \eTD \bTD 3194(1), 222(1),..., 3(156), 2(181), 1(3394) \eTD \eTR
\bTR \bTD 00243 \eTD \bTD 377(1), 184(1), ..., 3(24), 2(58), 1(717) \eTD \eTR
\bTR \bTD 00244 \eTD \bTD 4089(1), 329(1), ..., 3(6), 2(17), 1(3949) \eTD \eTR
\bTR \bTD 00245 \eTD \bTD 806(1), 78(1), 4(1), 3(2), 2(1), 1(738) \eTD \eTR
\bTR \bTD 00247 \eTD \bTD 1648(1), 46(1), 3(3), 2(4), 1(1651) \eTD \eTR
\eTABLE}

\page
\starttitle[title=Nalezení cyklů]
a

\page
\starttitle[title=Nalezení cyklů (pokr.)]
\startitemize
\item Startovní bod viz \goto{https://www.geeksforgeeks.org/print-all-the-cycles-in-an-undirected-graph/}[url(https://www.geeksforgeeks.org/print-all-the-cycles-in-an-undirected-graph/)]
\item Proveden pokus o ořez (s možností všech možných ořezů), ale přichází se o to nejužitečnější v grafu, tedy možnost si snadno navázat cestu dál.
\item Není-li v grafu cyklus, algoritmy jsou známé (DFS z každého uzlu; Floyd-Warshall; Streaming). \goto{https://stackoverflow.com/questions/12367801/finding-all-cycles-in-undirected-graphs}[url(https://stackoverflow.com/questions/12367801/finding-all-cycles-in-undirected-graphs)]
\stopitemize

\page
\starttitle[title=Rychlé řešení]
\startitemize
\item Krok 1: Užít DFS (Depth-First Search).
\item Krok 2: Navázat nalezením nejdelší cesty v orientovaném grafu (DAG).
\item Rychlé na naprogramování, ale mizerné najít nejdelší cestu.
\item V Pythonu např. přes knihovnu networkx.
\stopitemize

\page
\starttitle[title=Nejdelší cesta]
\startitemize
\item Máme před sebou neorientovaný graf (původní video a přehrané pozpátku)
\item Klasická rekurze se zacyklí. Je nutnost použít proměnnou na navštívené cesty.
\item Nahlédněme na randomized depth-first traversal/search z \goto{https://bost.ocks.org/mike/algorithms/}[url(https://bost.ocks.org/mike/algorithms/)]\par
Video algoritmu
\stopitemize

\page
\starttitle[title=uDnAG]
\startitemize
\item Výmysl: unDirected nonAcyclic Graph, hledání nejdelší cesty v neorientovaném grafu s cykly.
\item Výmysl: trimmed stack.
%\item Pokus o cílené ořezání rekurzivního algoritmu s pamětí.
\item Uzel, ze kterého jsem již šel, tak při cestě zpět jej už nikdy nenavštěvuj.
\item Výhody: rychlá cesta zpět při velkém grafu; snadnější možnost pozastavení programu při užití typu stack (máme původní graf a tuto proměnnou); rychlá možnost si ukládat víc řešení.
%\item Naprogramování přes rekurzi vs stack pak vykazovalo podobné výsledky.
\stopitemize

\page
\starttitle[title=Srovnání rekurze s uDnAG]
\midaligned{Nastaveny vždy 2 minuty.}\par
\setupTABLE[frame=on]
% cizi4-orez-cyklu.py vs cizi4-stack.py
\midaligned{\bTABLE
\bTR\bTD\bf Flock\eTD\bTD\bf Rekurze \eTD \bTD \bf Stack s ořezem\eTD\bTD \bf Rozdíl\eTD \eTR
\bTR \bTD 00004 \eTD \bTD   830 \eTD \bTD    646 \eTD \bTD $+184$ \eTD \eTR
\bTR \bTD 00202 \eTD \bTD 4868 \eTD \bTD  4983 \eTD \bTD $-115$ \eTD \eTR
\bTR \bTD 00243 \eTD \bTD   590 \eTD \bTD    607 \eTD \bTD  $-17$ \eTD \eTR
\bTR \bTD 00244 \eTD \bTD 7853 \eTD \bTD  8084 \eTD \bTD $-231$ \eTD \eTR
\bTR \bTD 00245 \eTD \bTD 1313 \eTD \bTD  1380 \eTD \bTD $-67$ \eTD \eTR
\bTR \bTD 00247 \eTD \bTD 2398 \eTD \bTD   2543 \eTD \bTD $-145$ \eTD \eTR
\eTABLE}














\stoptext

