diff --git a/kap-markup.tex b/kap-markup.tex index 60d5712..629249e 100644 --- a/kap-markup.tex +++ b/kap-markup.tex @@ -39,7 +39,7 @@ Ve výsledku je tedy lepší, z~různých důvodů popsaných RNDr. Olšákem v~ Troff je jedním z~nejstarších jazyků a předchůdcem jazyka \TeX. Autorem původní verze je Joe Ossanna, po jehož smrti převzal vývoj Brian Kernighan. Samotný Troff je reimplementací a rozšířením původního programu RUNOFF z~operačního systému CTSS. Vznikl za účelem sazby dokumentů na novém operačním systému Unix. \citep{ossanna1977troff} -Dnes existuje celá řada různých implementací a modernizovaných rozšíření, například Groff\footnote{\url{https://www.gnu.org/software/groff/}}, Heirloom troff\footnote{\url{http://heirloom.sourceforge.net/doctools.html}}, nebo moderní Neatroff\footnote{\url{https://repo.or.cz/neatroff.git}}, který se snaží o~spojení toho nejlepšího ze všech předchozích implementací. Sám Brian Kernighan v~soukromé emailové konverzaci doporučuje použití některé alternativní implementace, jež jsou podle Keringhana lepší ve všech směrech. +Dnes existuje celá řada různých implementací a modernizovaných rozšíření, například Groff\footnote{\url{https://www.gnu.org/software/groff/}}, Heirloom troff\footnote{\url{http://heirloom.sourceforge.net/doctools.html}}, nebo moderní Neatroff\footnote{\url{https://repo.or.cz/neatroff.git/}}, který se snaží o~spojení toho nejlepšího ze všech předchozích implementací. Sám Brian Kernighan v~soukromé emailové konverzaci doporučuje použití některé alternativní implementace, jež jsou podle Keringhana lepší ve všech směrech. I~přes vznik mnoha alternativních jazyků, například dříve zmíněného \TeX{}u a \LaTeX{}u, je Troff (Groff) stále hojně využíván v~praxi, zejména u~softwarové dokumentace v~Unixových operačních systémech. @@ -53,7 +53,7 @@ První specifikaci Gruber vydal společně s~referenční implementací v~jazyce Nevyužívanější formální specifikací je právě CommonMark\footnote{\url{https://commonmark.org/}}, jenž slouží jako pevný základ většiny rozšíření. \citep{github_formal_markdown_spec} -Podobně, jako je tomu u~specifikací, existuje velké množství programů, které tyto různé specifikace překládají. Švýcarským nožem mezi nimi je program Pandoc\footnote{\url{https://pandoc.org/}}, jenž umí překládat Markdown do enormního výběru jiných formátů, nebo z~jiných formátů zpět. Tato funkcionalita se nevztahuje pouze na jazyk Markdown, Pandoc dokáže operovat mezi všemi podporovanými formáty, například dokáže konvertovat obsah z~HTML do \TeX{}u. Na druhou stranu existují i velmi jednoduché překladače, například program smu\footnote{\url{https://github.com/Gottox/smu}}, který umí překládat Markdown do HTML nebo čistého textu a neobsahuje více než šest set řádků kódu hlavního programu. +Podobně, jako je tomu u~specifikací, existuje velké množství programů, které tyto různé specifikace překládají. Švýcarským nožem mezi nimi je program Pandoc\footnote{\url{https://pandoc.org/}}, jenž umí překládat Markdown do enormního výběru jiných formátů, nebo z~jiných formátů zpět. Tato funkcionalita se nevztahuje pouze na jazyk Markdown, Pandoc dokáže operovat mezi všemi podporovanými formáty, například dokáže konvertovat obsah z~HTML do \TeX{}u. Na druhou stranu existují i velmi jednoduché překladače, například program smu\footnote{\url{https://github.com/Gottox/smu/}}, který umí překládat Markdown do HTML nebo čistého textu a neobsahuje více než šest set řádků kódu hlavního programu. Užitečným rozšířením je, mimo jiné, také integrace matematického prostředí z~jazyka \TeX, viz sekce \ref{kap:tex}. diff --git a/kap-modelova-implementace.tex b/kap-modelova-implementace.tex index 04093b9..b47571f 100644 --- a/kap-modelova-implementace.tex +++ b/kap-modelova-implementace.tex @@ -321,7 +321,7 @@ Redukcí nepotřebných znaků v~HTML lze také ušetřit značnou část přene \item recyklování již použitých obrázků a tlačítek. \end{itemize} -K~odstranění přebytečných mezer, zalomení řádků, HTML komentářů a prázdných řádků lze použít automatický filtr pro kompresi výstupu. Toto by se nabízelo jako jedna z~dalších možností pro implementaci rozšíření. Generátor Zola provádí kompresi CSS, ovšem nemá zabudovanou funkcionalitu pro minifikaci výsledného HTML, která je v~době psaní této práce vyvíjena\footnote{\url{https://github.com/getzola/zola/issues/542}}. +K~odstranění přebytečných mezer, zalomení řádků, HTML komentářů a prázdných řádků lze použít automatický filtr pro kompresi výstupu. Toto by se nabízelo jako jedna z~dalších možností pro implementaci rozšíření. Generátor Zola provádí kompresi CSS, ovšem nemá zabudovanou funkcionalitu pro minifikaci výsledného HTML, která je v~době psaní této práce vyvíjena\footnote{\url{https://github.com/getzola/zola/issues/542/}}. Touto redukcí lze ušetřit 2\% přenosu dat oproti ručně psanému neoptimalizovanému kódu. Je-li průměrná velikost stránky sto kilobajtů, lze touto optimalizací ušetřit dva kilobajty při každém odeslání stránky. Při odeslání sta tisíce stránek za měsíc je ve výsledku ušetřeno dvě stě megabajtů dat, které jsou jinak zbytečně odesílány uživatelům, kteří je stejně nezobrazí. @@ -349,7 +349,7 @@ K~systému Git existují různé služby, jež tento systém rozšiřují o~webo Tato část práce se věnuje samotné implementaci automatického generování obsahu na základě změn v~repozitáři. -Jak bylo zmíněno v~sekci \ref{kap:vyber-vhodneho-systemu-verzovani}, git umožňuje nastavení takzvaných \textit{Git hooks}, jež se v~určité chvíli spustí. Jak uvádí dokumentace\footnote{\url{https://git-scm.com/docs/githooks}}, existuje spousta druhů hooků, které jsou vyvolány v~různé části zpracování požadavku. V~případě této implementace je nejvhodnější hook \textit{post-receive}, jenž je spouštěn až po nahrání a zpracování všech změn v~repozitáři. +Jak bylo zmíněno v~sekci \ref{kap:vyber-vhodneho-systemu-verzovani}, git umožňuje nastavení takzvaných \textit{Git hooks}, jež se v~určité chvíli spustí. Jak uvádí dokumentace\footnote{\url{https://git-scm.com/docs/githooks/}}, existuje spousta druhů hooků, které jsou vyvolány v~různé části zpracování požadavku. V~případě této implementace je nejvhodnější hook \textit{post-receive}, jenž je spouštěn až po nahrání a zpracování všech změn v~repozitáři. Skript \ref{lst:git-hook-skript} po vyvolání Gitem provede veškeré potřebné operace ke zpracování nového obsahu na web serveru Je složen z~několika částí. diff --git a/kap-paradigmata.tex b/kap-paradigmata.tex index 31b0a67..14aec9e 100644 --- a/kap-paradigmata.tex +++ b/kap-paradigmata.tex @@ -1,6 +1,6 @@ \chapter{Webová paradigmata}\label{kap:paradigmata} -Ve světě webových stránek se setkáváme se spoustou forem a paradigmat, jež se hodí pro zpracování různých druhů informací. Neexistuje žádné formální zařazení druhů webových stránek do skupin, ovšem některé webové portály se pokouší určit základní druhy webových stránek, které se na Internetu objevují. Na základě těchto portálů a jejich rozřazení do skupin\footnote{\url{http://www.xislegraphix.com/website-types.html}}\footnote{\url{https://www.hostgator.com/blog/popular-types-websites-create}}\footnote{\url{https://www.quora.com/What-are-the-different-types-of-websites}}, jež jsou často mířené na specifický obsah, lze vytvořit pět základních paradigmat. Jsou jimi: +Ve světě webových stránek se setkáváme se spoustou forem a paradigmat, jež se hodí pro zpracování různých druhů informací. Neexistuje žádné formální zařazení druhů webových stránek do skupin, ovšem některé webové portály se pokouší určit základní druhy webových stránek, které se na Internetu objevují. Na základě těchto portálů a jejich rozřazení do skupin\footnote{\url{http://www.xislegraphix.com/website-types.html}}\footnote{\url{https://www.hostgator.com/blog/popular-types-websites-create/}}, jež jsou často mířené na specifický obsah, lze vytvořit pět základních paradigmat. Jsou jimi: \begin{itemize} \item webová prezentace, @@ -30,7 +30,7 @@ Generátory pro tento typ webové stránky jsou často univerzální a je možn blogc\footnote{\url{https://blogc.rgm.io/}} & C & Vlastní jazyk blogc-source\footnote{\url{https://blogc.rgm.io/man/blogc-source.7.html}} založený na Markdownu \\ \hline Hugo\footnote{\url{https://gohugo.io/}} & Go & Markdown, HTML, AsciiDoc, Pandoc Markdown, reST \\ \hline Luapress\footnote{\url{https://luapress.org/}} & Lua & Markdown \\ \hline -Nift\footnote{\url{https://www.staticgen.com/nift}} & C++ & Agnostický, tj. Markdown, \LaTeX, HTML, JS, SQL, ... \\ \hline +Nift\footnote{\url{https://www.staticgen.com/nift/}} & C++ & Agnostický, tj. Markdown, \LaTeX, HTML, JS, SQL, ... \\ \hline Pelican\footnote{\url{https://blog.getpelican.com/}} & Python & Markdown, reST \\ \hline ssg\footnote{\url{https://www.romanzolotarev.com/ssg.html}} & shell & Markdown (lowdown, Markdown.pl) \\ \hline Zola\footnote{\url{https://www.getzola.org/}} & Rust & Markdown (CommonMark) \\ \hline @@ -40,7 +40,7 @@ Zola\footnote{\url{https://www.getzola.org/}} & Rust Za obecného zástupce tohoto druhu stránek lze považovat Wikipedii, která podnítila vznik spousty jiných takzvaných \textit{Wiki systémů} a stránek. Jde o~formu stránky, jež obsahuje velké množství informací s~různou provázaností. Nejde o~lineární dokumentaci projektu, nýbrž o~encyklopedii obecných informací. -Jak již bylo řečeno, tuto formu stránek lze implementovat jakýmkoliv generátorem. Existují ale generátory vytvořené přímo pro účel tohoto paradigmatu. Takových generátorů je ovšem málo, jelikož jedním ze základních znaků wiki je to, že její obsah tvoří komunita uživatelů, což nemusí být vždy vhodné pro systém statického generování obsahu. Jedním takovým programem je ikiwiki\footnote{\url{https://ikiwiki.info/}}, který funguje stejně jako ostatní sta\-tické generátory. Další programy, například MDwiki\footnote{\url{https://dynalon.github.io/mdwiki}}, zpracovávají Markdown přímo v~prohlížeči a HTML obsah tedy není předgenerován na serveru. +Jak již bylo řečeno, tuto formu stránek lze implementovat jakýmkoliv generátorem. Existují ale generátory vytvořené přímo pro účel tohoto paradigmatu. Takových generátorů je ovšem málo, jelikož jedním ze základních znaků wiki je to, že její obsah tvoří komunita uživatelů, což nemusí být vždy vhodné pro systém statického generování obsahu. Jedním takovým programem je ikiwiki\footnote{\url{https://ikiwiki.info/}}, který funguje stejně jako ostatní sta\-tické generátory. Další programy, například MDwiki\footnote{\url{https://dynalon.github.io/mdwiki/}}, zpracovávají Markdown přímo v~prohlížeči a HTML obsah tedy není předgenerován na serveru. Program MDwiki je prezentován jako generátor vytvořený na míru pro wiki stránky, ovšem jeho výstup je velice podobný generátorům z~tabulky \ref{tab:generatory-technicka-dokumentace}. @@ -59,9 +59,9 @@ Od Wiki stránek se technická dokumentace liší organizováním svého obsahu, % \endhead % -mdBook\footnote{\url{https://github.com/rust-lang/mdBook}} & Rust & Markdown \\ \hline -MkDocs\footnote{\url{https://www.mkdocs.org/}} & Python & Markdown \\ \hline -Sphinx\footnote{\url{https://www.sphinx-doc.org/}} & Python & reStructuredText \\ \hline +mdBook\footnote{\url{https://github.com/rust-lang/mdBook/}} & Rust & Markdown \\ \hline +MkDocs\footnote{\url{https://www.mkdocs.org/}} & Python & Markdown \\ \hline +Sphinx\footnote{\url{https://www.sphinx-doc.org/}} & Python & reStructuredText \\ \hline \end{longtable} \section{Galerie} @@ -80,8 +80,8 @@ Generátory galerií umožňují jednoduše řadit obrázky do skupin a vytvář % \endhead % -Exposé\footnote{\url{https://github.com/Jack000/Expose}} & shell \\ \hline -fgallery\footnote{\url{https://gitlab.com/wavexx/fgallery}} & Perl \\ \hline +Exposé\footnote{\url{https://github.com/Jack000/Expose/}} & shell \\ \hline +fgallery\footnote{\url{https://gitlab.com/wavexx/fgallery/}} & Perl \\ \hline Prosopopee\footnote{\url{https://github.com/Psycojoker/prosopopee/}} & Python \\ \hline Sigal\footnote{\url{http://sigal.saimon.org/}} & Python \\ \hline \end{longtable} diff --git a/kap-vyhodnoceni-implementace.tex b/kap-vyhodnoceni-implementace.tex index 77bba62..5889a02 100644 --- a/kap-vyhodnoceni-implementace.tex +++ b/kap-vyhodnoceni-implementace.tex @@ -2,6 +2,8 @@ V~této části práce je shrnuta a zhodnocena modelová implementace z~kapitoly \ref{kap:modelova-implementace}, a to jak implementace a využití samotného systému, tak jeho rozšíření implementovaných v~sekci \ref{kap:automaticke-generovani-obsahu}. Součástí této kapitoly jsou také návrhy pro další rozšíření systému. +Webové stránky vytvořené v~rámci této práce jsou k~dispozici na adrese \url{https://ucitelonline.pedf.cuni.cz/} a jejich zdrojový kód je umístěn v~Git repozitáři na adrese \url{https://git.microlab.space/pedf/ucitelonline/}. + \section{Návrhy pro rozšíření systému} V~praxi bylo zjištěno, že uživatelé, kteří neznají verzovací systém Git, mají problémy se jej naučit, obzvlášť v~prostředí, které vyžaduje rychlé zpracování změn. Systém by bylo dobré rozšířit o~jednoduchou webovou administraci, jež umožňuje nezkušeným uživatelům jednoduchou práci s~obsahem bez nutnosti hledání souborů ve stromové struktuře a znalosti jazyka Markdown. Částečně je tato funkcionalita poskytována systémem Gitea, jenž umožňuje jednodušší úpravy provádět přímo v~prohlížeči, ovšem uživatel musí stále znát a pracovat s~unikátnostmi jazyka Markdown a generátoru Zola. diff --git a/prace.pdf b/prace.pdf index 9bd3913..c998a7f 100644 Binary files a/prace.pdf and b/prace.pdf differ