Naklonování lokálních souborů

hoftich
Emil Miler 4 years ago
commit 9c68bffb92

6
.gitignore vendored

@ -0,0 +1,6 @@
*.aux
*.xmpi
*.bbl
*.blg
*.out
*.toc

@ -0,0 +1,17 @@
export TEXINPUTS=../tex//:
all: prace.pdf sighup
# LaTeX je potreba spustit nekolikrat, aby spravne spocital odkazy
prace.pdf: prace.tex $(wildcard *.tex) literatura.bib prace.xmpdata
pdflatex $<
bibtex prace
pdflatex $<
pdflatex $<
clean:
rm -f *.log *.dvi *.aux *.toc *.lof *.lot *.out *.bbl *.blg *.xmpi
rm -f prace.pdf
sighup:
killall -s SIGHUP mupdf

File diff suppressed because it is too large Load Diff

@ -0,0 +1,50 @@
\chapter{Staticky generovaný web}
Princip statické webové stránky sahá ke až vzniku WWW, kdy existovaly pouze stránky statické, tedy stejné pro každého uživatele. Jejich obsah může být průběžně aktualizován, ovšem negenerují se zvlášť pro každého uživatele na základě různých proměnných. U statických webů tedy dochází k vytvoření čístého HTML ve chvíli, kdy je změněn zdrojový obsah, nebo kdy autor ručně spustí generátor. \cite{pcmagstatic}
Dynamické stránky jsou generovány speciálně pro každého uživatele na základě jeho nastavení, různých vstpů, proměnných a dalších vlastností. Ke generování dochází ve chvíli, kdy si uživatel stránku vyžádá, nikoliv předem, jako je tomu u staticky generovaných stránek. \cite{pcmagdynamic}
\section{Výhody statických webových stránek}
Pro sdílení statického obsahu mezi různé uživatele stačí velmi jednoduchý HTTP server bez jakýchkoliv dalších modulů typu \textit{PHP}, \textit{Pythnon} a dalších systémů, které by obsah dynamicky generovaly například z dat vytažených z databáze, nebo z uživatelského vstupu. Na straně serveru tedy nedochází ke zpracování obsahu těsně před jeho odesláním uživateli, čímž se v komunikaci mezi klientem a serverem se drasticky snižuje \uv{Time To Firt Byte}\footnote{Time To First Byte --- čas mezi odesláním požadavku a přijmutím prvního bajtu dat.} a tím dochází ke snížení celkové latence. \cite{mozttfb}
Snížení samotné latence může pozitivně přispět ke spokojenosti uživatelů, což dokazuje nespočet výzkumů na toto téma, například analýza z webového portálu Financial Times:\quest{Dvojtečka?}
\begin{quote}
\quest[inline]{Musím to překládat, nebo stačí tanhle přímá citace. Je složená ze dvou částí v textu.}
The speed of the site negatively impacts a users session depth, no matter how small the delay\dots \quest{Jak spojit dvě části? Takhle?} The data suggests, both in terms of user experience and financial impact, that there are clear and highly valued benefits in making the site even faster. From this research weve chosen to invest even more time in making every aspect of the new FT.com website even faster over the coming months. \cite{financialtimes}\quest{Citace tady nebo před přímou řečí?}
\end{quote}
\begin{quote}
Rychlost webové stránky negativně ovlivňuje hloubku jejího užívání, ať už je odezva sebemenší ... Data ukazují, z pohledu uživatelské spokojenosti a finančního dopadu, že existují jasné a důležité výhody při zrychlení stránky. Z tohoto výzkumu jsme se rozhodli v následujících měsících zainvestovat ještě více času do úprav všech aspektů nové stránky FT.com s cílem jejího zrychlení.\todo{Nechat opravit překlad}
\end{quote}
Eliminováním dynamického obsahu se také předchází nevyžádaným vstupům od uživatele, které mohou být i cílené na prolomení bezpečnostních nedostatků webové aplikace a v některých případech mohou vést k úniku citlivých dat, převzetí kontroly útočníka nad webovou aplikací nebo celým serverem, podstrčení falešných dat uživateli a mnoho dalším běžně se stávajícím útokům. Statický web eliminuje tento problém, jelikož nemá žádný uživatelský vstup.
Sledování a analýze nejčastějších chyb webových aplikací a serverů se věnuje organizace OWASP\footnote{The Open Web Application Security Project --- \url{https://owasp.org/}.}, která vydává aktualizované seznamy a statistiky. Podle OWASP byly v roce 2017 nejčastější tyto chyby a bezpečnostní nedostatky: \cite{owasp2017}\quest{Opět citace tady nebo za seznamem?}
\begin{enumerate}
\item{Injekce}
\item{Rozbitá autentizace}
\item{Odhalení citlivých dat}
\item{XML External Entities (XXE)}
\item{Nefunkční řízení přístupu}
\item{Špatná konfigurace zabezpečení}
\item{Cross-Site Scripting (XSS)}
\item{Nezabezpečná deserializace}
\item{Uživání komponent se známými zranitelnostmi}
\item{Nedostatečné logování a monitorování}
\end{enumerate}
Většina těchto chyb se vztahuje právě k dynamickým webovým aplikacím. Bezpečnost tedy závisí nejen na programátorovi který aplikaci vytváří, ale také na tom, že programovací jazyk je bezpečně implementován. To nelze tvrdit o nejpoužívanějším jazyce PHP, který nejen že obsahuje spousty chyb, ale zároveň nevede programátora ke psaní bezpečného kódu a ve výsledku vzniká opravdu děravá aplikace.
Údržba velkých webových aplikací je také často problematická. Kód je nutné udržovat v návaznosti na aktualizace daného jazyka, databázového systému a dalších věcí. Těmto aktualizacím se z bezpečnostních důvodů nelze vyhýbat. Statický web nemusí udržovat funkční propojení s databázemi a různými frameworky\todo{Lepši slovo?} a je tedy mnohem méně náročný na dlouhodobou údržbu. Při zvolení správného generátoru není nutná ani údržba šablon a celý systém nikdy nepřestane fungovat. Protože statický generátor nepracuje s uživatelským vstupem, vyhýbá se bezpečnostním chybám a tím i nutným aktualizacím.\todo{Zdroj?}
Jako každý jiný systém, i tento má nevýhody. Hlavním z problémů je to, že správa statického generátoru a tvorba obsahu je náročnější, než klasický webové rozhraní s administračním panelem, různými uživateli a jednoduchou správou pro běžné technicky nenadané uživatele. Pro přidání nebo úpravu obsahu je nutné pracovat s lokálními soubory ve stromové struktuře a při generování je často potřebný zásah do shellu\footnote{Program pro interpretování příkazů v prostředí příkazové řádky.}. Tvorba systému pro automatizované generování je také náročnější než instalace některého z běžných CMS\footnote{Content Management System}. \cite{softpedia_generators}
\section{Princip generátorů}
Generátor statického obsahu je tvořen ze tří hlavních částí. První částí jsou soubory šablon, které popisují rozložení stránky, vizuální vlastnosti, typografii, ale také vstupní a výstupní kódování a formáty. V podstatě definují jak a kam se bude obsah vkládat. Druhou částí je obsah obecně psaný v některém ze značkovacích jazyků, nejčastěji v jazyce Markdown. Obsah je strukturován do vlastních sekcí a souborů, aby bylo snadné rozlišit, do které části výsledné stránky patří. Třetí a poslední částí je samotné jádro generátoru, které zpracovává obsah, vkládá ho do šablon a renderuje statickou webovou stránku.
Většina generátorů zároveň umí pracovat s konfiguračními soubory, kterými jde nastavit chování generátoru na jednom centralizovaném místě. Část z nich má také integrovaný jednoduchý web server, který umožňuje autorovi náhled výstupních stránek během tvorby obsahu.
\cite{softpedia_generators}

@ -0,0 +1,55 @@
\chapter{Značkovací jazyky pro popis obsahu}
\section{Principy značkovacích jazyků}
Vysvětlení principu značkovacích jazyků, nebo také takzvaně \uv{makrup jazyků}, můžeme najít například v RFC 7764\footnote{Jako \textit{RFC} se označují standardy vydané organizací IETF (Internet Engineering Task Force).}, tedy že v počítačových systémech jsou kontextuální data ukládána a zpracována několika technikami. Informaci lze kódovat jako čistý text bez speciálních formátovacích znaků. Tento přístup je jednoduchý pro implementaci i použití, ovšem neumožňuje složitější formátování textu.
Kódovat lze můžeme i do binárních dat určených ke zpracování a interpretaci specializovaným programem. Zřejmou nevýhodou je to, že zdroj není čitelný bez programu určeného pro jeho interpretaci.
Markup jazyky se snaží o spojení toho nejlepšího z obou světů, tedy o obsah čitelný v čistém textu s možností formátování. To je dosaženo tím, že běžným znakům jsou přiděleny speciální významy nedefinované původní znakovou sadou. Uživatel je schopen tyto znaky psát jako čistý text a vyjádřit tím speciální význam. Například v rámci jazyka Markdown se znak \texttt{\#} změní z běžného křížku na definování nadpisu první úrovně, nebo také kombinace znaků \texttt{<p>} značí začátek odstavce v HTML. \cite{rfc7764}
\quest[inline]{Nevím zda je takto správně ocitovaná celá sekce, která z RFC vychází.}
\section{Nejběžnější jazyky}
Ke dnešnímu dni vnikl nespočet značkovacích jazyků. Nejpoužívanějším z nich jednoznačně HTML, ovšem tato práce se věnuje těm nejpoužívanějším jazykům, které mají uživateli usnadnit psaní a sázení obsahu, tedy že není nutné řešit typografii a formátování obsahu při jeho psaní. O formátování se později starají šablony. U HTML je tomu naopak, tedy že uživatel řeší samotný obsah i formátování v jednu chvíli.
\todo[inline]{Celý následující odstavec se mi zdá zvláštní.}
Vybrané jazyky jsou zároveň cílené na čitelnost samotného formátování v čistém textu, tedy bez nutnosti zpracování do jiného formátu, například do PDF, DjVu, PostScript apod. Tím je myšleno to, že například podtržení textu je reprezentováno opravdovým podtržením pomocí spojovníků, nikoliv obalením nadpisu ve speciální deklaraci, jako je tomu u HTML a jiných jazyků. Podtržení je poté pro čtenáře mnohem jasnější, jelikož nemusí přemýšlet, co daný HTML tag vůbec způsobuje.
Seznam nejoblíbenějších jazyků je sestaven podle aktuálních statistik ze serveru Slant, který se věnuje obecnému určení oblíbenosti na základě hodnocení ze strany uživatelů. \cite{slant}
\subsection{Markdown}
Vznik jazyka Markdown byl 14. prosince roku 2014, když John Gruber vydal jeho první popis syntaxe a referenční implementaci. \cite{daringfireball}\quest{Citace platí i pro následující dva odstavce. Je tahle správně?}
Hlavním z cílů syntaxe jazyka je vytvářet co možná nejčitelnější obsah v syrové podobě. Dokument psaný v Markdownu by měl být publikovatelný sám o sobě jako čistý text bez dalších úprav a zpracování. Jazyk byl ovlivněn několika již existujícími specifikacemi jiných jazyků, ovšem největším zdrojem inspirace pro jeho vznik jsou čisté emailové korespondence.
První specifikaci Gruber vydal společně s referenční implementací v jazyce Perl, která slouží pro konverzi Markdownu do HTML. Program také nese stejný název \uv{Markdown}, ovšem mluvíme-li o \uv{Markdownu}, máme nejčastěji na mysli samotnou syntaxi. Ta je dnes již implementována v mnoha různých jazycích a programech. Gruberova specifikace ovšem není formální standard, kvůli čemuž vznikl veliký počet alternativních a více čí méně pozměněných implementací, které nemusí být navzájem kompatibilní. Nejčastějšími z nich jsou například Github Markdown, CommonMark, R Markdown a mnoho dalších.\todo{Citace}
\subsection{Org-mode}
... \cite{Schulte:Davison:Dye:Dominik:2011:JSSOBK:v46i03} \cite{orgmanual}
\subsection{AsciiDoc}
...
\subsection{reStructuredText}
...
\subsection{\TeX}
Tento jazyk se již vzdaluje od původního konceptu čitelnosti zdroje, ovšem ve statických generátorech ho lze stále efektivně využít a jeho části se velmi často objevují jako rozšíření dříve zmíněných jazyků. Jedním z hlavních rozšíření jsou zápisy matematických rovnic, které z \TeX{}u vychází.\todo{Rozšířit o popis TeXu a matiky.}
Většina uživatelů se setkala spíše s jazykem \LaTeX, tedy s nadstavbou původního \TeX{}u, která má uživateli zjednodušit práci svými makry a rozšířeními. Realita je ovšem taková, že \LaTeX{} dělá celou práci složitější, jak popisuje doktor Olšák: \cite{nolatex}\quest{Citace tady nebo za přímou citací?}
\begin{quote}
Představte si, že si nějaký uživatel přečte \LaTeX{}ovou příručku a nabyde dojmu, že mu bude stačit rozumět problematice sazby na úrovni této příručky. Pak se jednou překlepne třeba při sestavování tabulky a na terminálu na něj \TeX{} křičí: {\tt Extra alignment tab has been changed to "\verb|\cr|".} Uživatel začne znovu listovat ve své příručce a zjistí, že tam o~žádném "\verb|\cr|" není jediná zmínka. Má pak tři možnosti: (1)~Zmáčkne Enter a podobně se zachová i u~dalších chyb. Pomyslí si, že ten \LaTeX{} je něco tajemného a mystického. (2)~Propadne zoufalství a jde od toho. Dojde k~závěru, ľe je lepší zůstat u~Wordu. Vždyť stačí vzít tabulku v~Excelu a jednoduše ji přemístit do Wordu a jaképak smolení se s~nějakým podezřelým "\verb|\cr|". (3)~Pořídí si \TeX{}book a po intenzivním studiu nakonec řekne: \uv{aha}. V~tuto chvíli ale už nepotřebuje, aby mu \LaTeX{} zakrýval složitost \TeX{}u.
\end{quote}
Je tedy lepší použít samotný \TeX.
\subsection{Troff}

@ -0,0 +1,10 @@
\chapter{Modelová implementace}
\section{Požadavky na modelový web}
\section{Výběr vhodného systému}
\section{Tvorba šablony}
\section{Požadavky na rozšíření}

@ -0,0 +1,34 @@
\chapter{Webová paradigmata}
\quest[inline]{Jak citovat více portálů najednou? Tady je seznam:}
\begin{itemize}
\item \url{http://www.xislegraphix.com/website-types.html}
\item \url{https://www.hostgator.com/blog/popular-types-websites-create}
\item \url{https://www.quora.com/What-are-the-different-types-of-websites}
\end{itemize}
Ve světě webových stránek se setkáváme se spoustou forem a paradigmat, která se hodí pro obsažení různých druhů informací. Neexistují žá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 webů, které se na Internetu objevují \todo{citace sem}. Na základě těchto skupin, které jsou často mířené na specifický obsah, lze vytvořit tři základní paradigmata, do kterých lze tyto weby zařadit. Jsou jimi:
\begin{itemize}
\item{Webová prezentace}
\item{Index všeobecných informací}
\item{Technická dokumentace}
\item{Sociální sítě a fóra}
\end{itemize}
V této práci byl ke každému z paradigmat vybrán systém vhodný pro generování a správu daného druhu obsahu. Výjimkou je skupina sociálních sítí a fór, kde staticky generovaný obsah není z důvodu často se měnícího obsahu vhodným řešením.
\section{Webová prezentace}
Nejbližší původním webům z dob vzniku WWW jsou webové prezentace, tedy stránky s jednoduchým obsahem, které slouží k předání informací čtenáři například formou článků nebo galerie. Do této skupiny lze zařadit portfolia, blog, online noviny a časopisy, firemní stránky, foto alba a podobně. Tento druh stránek se skvěle hodí ke statickému generování obsahu, který se odesílá všem uživatelům stejný a nemění se často.
Jako nejvhodnější systém pro generování webových prezentací byl vybrán software Zola. Ten je oproti jiným systémům výhodný tím, že je napsaný v jazyce Rust a je tedy rychlejší, než všichni jeho soupeři. Také ho jde zkompilovat do jednoho staticky linkovaného binárního souboru, se kterým se pracuje mnohem lépe, než se složitým frameworkem.
\section{Index všeobecných informací}
Za obecného zástupce tohoto druhu stránek lze považovat Wikipiedii, která podnítila vznik spousty jiných takzvaných \uv{Wiki systémů} a stránek.
\section{Technická dokumentace}
Na rozdíl od Wiki stránek se technická dokumentace liší organizováním svého obsahu, který je cílený na přesný popis systému či objektu.

@ -0,0 +1,8 @@
\chapter{Taxonomie požadavků}
\section{Obecná kritéria}
\section{Kritéria specifická pro modelový web}
\section{Kritéria pro šablony a design}

@ -0,0 +1,6 @@
\chapter{Vyhodnocení modelové implementace}
\section{Návrhy pro rozříšení systému}
\section{Implementace rozšíření}

@ -0,0 +1,129 @@
% Vzor bibliografick{\'e} datab{\'a}ze pro automatickou tvorbu seznamu referenc{\'\i}
% pomoc{\'\i} BibTeXu
% Doporu{\v c}en{\'y} software pro spr{\'a}vu datab{\'a}ze literatury form{\'a}tu *.bib:
% JabRef, http://jabref.sourceforge.net/
% POZOR:
% * P{\'\i}smena v n{\'a}zvech publikac{\'\i}, je{\v z} je t{\v r}eba tisknout v{\v z}dy velk{\'a}, se musej{\'\i} ps{\'a}t
% do slo{\v z}en{\'y}ch z{\'a}vorek ({T}hailand, {HIV})
% ===========================================================================
@techreport{rfc7764,
author = {Leonard, Sean},
howpublished = {Internet Requests for Comments},
issn = {2070-1721},
journal = {IETF Documents},
month = {Mar},
number = 7764,
organization = {Internet Engineering Task Force},
publisher = {Internet Engineering Task Force},
title = {Guidance on Markdown: Design Philosophies, Stability Strategies, and Select Registrations},
type = {RFC},
url = {https://tools.ietf.org/html/rfc7764},
year = {2016}
}
@misc{slant,
author = {Slant},
howpublished = {\url{https://web.archive.org/web/20200210061112/https://www.slant.co/topics/589/~best-markup-languages}},
note = {Cit. 2020-02-10},
title = {What are the best markup languages?},
year = {2020}
}
@manual{orgmanual,
author = {{The Org Mode Developers}},
publisher = {Network Theory Ltd.},
title = {The Org Manual},
year = {2020}
}
@article{Schulte:Davison:Dye:Dominik:2011:JSSOBK:v46i03,
accepted = {2011-10-03},
acknowledgement = {},
author = {Schulte, Eric and Davison, Dan and Dye, Thomas and Dominik, Carsten},
bibdate = {2011-10-03},
coden = {JSSOBK},
day = {25},
issn = {1548-7660},
journal = {Journal of Statistical Software},
keywords = {},
month = {1},
number = {3},
pages = {1--24},
submitted = {2010-12-22},
title = {A Multi-Language Computing Environment for Literate Programming and Reproducible Research},
url = {http://www.jstatsoft.org/v46/i03},
volume = {46},
year = {2012}
}
@misc{pcmagdynamic,
author = {Magazine, PC},
howpublished = {\url{https://web.archive.org/web/20170117040526/https://www.pcmag.com/encyclopedia/term/42199/dynamic-web-page}},
note = {Cit. 2020-02-12},
title = {Definition of: dynamic Web page},
year = {2017}
}
@misc{pcmagstatic,
author = {Magazine, PC},
howpublished = {\url{https://web.archive.org/web/20200223095514/https://www.pcmag.com/encyclopedia/term/static-web-page}},
note = {Cit. 2020-02-12},
title = {Definition of: static Web page},
year = {2020}
}
@misc{mozttfb,
author = {Hoffman, Billy},
howpublished = {\url{https://web.archive.org/web/20190416124447/https://moz.com/blog/improving-search-rank-by-optimizing-your-time-to-first-byte}},
note = {Cit. 2020-02-12},
title = {Improving Search Rank by Optimizing Your Time to First Byte},
year = {2013-09-26}
}
@misc{financialtimes,
author = {Chadburn, Matt and Lahav, Gadi},
howpublished = {\url{https://web.archive.org/web/20180929125709/http://engineroom.ft.com/2016/04/04/a-faster-ft-com/}},
journal = {Financial Times},
note = {Cit. 2020-02-15},
title = {How slow websites damage publishers revenue},
year = {2016-04-04}
}
@misc{nolatex,
author = {Ol{\v s}{\'a}k, Petr},
date = {1997-08-14},
howpublished = {\url{http://petr.olsak.net/ftp/olsak/bulletin/nolatex.pdf}},
title = {Pro{\v c} nerad pou{\v z}{\'\i}v{\'a}m LaTeX},
year = {1997}
}
@techreport{owasp2017,
author = {OWASP},
howpublished = {\url{https://owasp.org/www-pdf-archive/OWASP_Top_10-2017_%28en%29.pdf.pdf}},
journal = {OWASP Top Ten},
organization = {OWASP},
publisher = {OWASP},
series = {OWASP Top Ten},
title = {OWASP Top Ten 2017},
year = {2017}
}
@misc{daringfireball,
author = {Gruber, John},
howpublished = {\url{https://web.archive.org/web/20200227143926/https://daringfireball.net/projects/markdown/}},
note = {Cit. 2020-02-27},
title = {Markdown},
year = {2004-12-17}
}
@misc{softpedia_generators,
author = {Cimpanu, Catalin},
howpublished = {\url{https://web.archive.org/web/20200316165614/https://news.softpedia.com/news/How-Static-Site-Generators-Work-482007.shtml}},
journal = {Softpedia},
month = {2015-05-22},
note = {Cit. 2020-03-16},
title = {How Static Site Generators Work},
year = {2015}
}

@ -0,0 +1,35 @@
%%% Seznam použité literatury (bibliografie)
%%%
%%% Pro vytváření bibliografie používáme bibTeX. Ten zpracovává
%%% citace v textu (např. makro \cite{...}) a vyhledává k nim literaturu
%%% v souboru literatura.bib.
%%%
%%% Příkaz \bibliographystyle určuje, jakým stylem budou citovány odkazy
%%% v textu. V závorce je název zvoleného souboru .bst. Styly plainnat
%%% a unsrt jsou standardní součástí latexových distribucí. Styl czplainnat
%%% je dodáván s touto šablonou a bibTeX ho hledá v aktuálním adresáři.
\bibliographystyle{czplainnat} %% Autor (rok) s českými spojkami
% \bibliographystyle{plainnat} %% Autor (rok) s anglickými spojkami
% \bibliographystyle{unsrt} %% [číslo]
\renewcommand{\bibname}{Seznam použité literatury}
%%% Vytvoření seznamu literatury. Pozor, pokud jste necitovali ani jednu
%%% položku, seznam se automaticky vynechá.
\bibliography{literatura}
%%% Kdybyste chtěli bibliografii vytvářet ručně (bez bibTeXu), lze to udělat
%%% následovně. V takovém případě se řiďte normou ISO 690 a zvyklostmi v oboru.
% \begin{thebibliography}{99}
%
% \bibitem{lamport94}
% {\sc Lamport,} Leslie.
% \emph{\LaTeX: A Document Preparation System}.
% 2. vydání.
% Massachusetts: Addison Wesley, 1994.
% ISBN 0-201-52983-1.
%
% \end{thebibliography}

@ -0,0 +1,90 @@
%%% Tento soubor obsahuje definice různých užitečných maker a prostředí %%%
%%% Další makra připisujte sem, ať nepřekáží v ostatních souborech. %%%
%%% Drobné úpravy stylu
% Tato makra přesvědčují mírně ošklivým trikem LaTeX, aby hlavičky kapitol
% sázel příčetněji a nevynechával nad nimi spoustu místa. Směle ignorujte.
\makeatletter
\def\@makechapterhead#1{
{\parindent \z@ \raggedright \normalfont
\Huge\bfseries \thechapter. #1
\par\nobreak
\vskip 20\p@
}}
\def\@makeschapterhead#1{
{\parindent \z@ \raggedright \normalfont
\Huge\bfseries #1
\par\nobreak
\vskip 20\p@
}}
\makeatother
% Toto makro definuje kapitolu, která není očíslovaná, ale je uvedena v obsahu.
\def\chapwithtoc#1{
\chapter*{#1}
\addcontentsline{toc}{chapter}{#1}
}
% Trochu volnější nastavení dělení slov, než je default.
\lefthyphenmin=2
\righthyphenmin=2
% Zapne černé "slimáky" na koncích řádků, které přetekly, abychom si
% jich lépe všimli.
\overfullrule=1mm
%%% Makra pro definice, věty, tvrzení, příklady, ... (vyžaduje baliček amsthm)
\theoremstyle{plain}
\newtheorem{veta}{Věta}
\newtheorem{lemma}[veta]{Lemma}
\newtheorem{tvrz}[veta]{Tvrzení}
\theoremstyle{plain}
\newtheorem{definice}{Definice}
\theoremstyle{remark}
\newtheorem*{dusl}{Důsledek}
\newtheorem*{pozn}{Poznámka}
\newtheorem*{prikl}{Příklad}
%%% Prostředí pro důkazy
\newenvironment{dukaz}{
\par\medskip\noindent
\textit{Důkaz}.
}{
\newline
\rightline{$\square$} % nebo \SquareCastShadowBottomRight z balíčku bbding
}
%%% Prostředí pro sazbu kódu, případně vstupu/výstupu počítačových
%%% programů. (Vyžaduje balíček fancyvrb -- fancy verbatim.)
\DefineVerbatimEnvironment{code}{Verbatim}{fontsize=\small, frame=single}
%%% Prostor reálných, resp. přirozených čísel
\newcommand{\R}{\mathbb{R}}
\newcommand{\N}{\mathbb{N}}
%%% Užitečné operátory pro statistiku a pravděpodobnost
\DeclareMathOperator{\pr}{\textsf{P}}
\DeclareMathOperator{\E}{\textsf{E}\,}
\DeclareMathOperator{\var}{\textrm{var}}
\DeclareMathOperator{\sd}{\textrm{sd}}
%%% Příkaz pro transpozici vektoru/matice
\newcommand{\T}[1]{#1^\top}
%%% Vychytávky pro matematiku
\newcommand{\goto}{\rightarrow}
\newcommand{\gotop}{\stackrel{P}{\longrightarrow}}
\newcommand{\maon}[1]{o(n^{#1})}
\newcommand{\abs}[1]{\left|{#1}\right|}
\newcommand{\dint}{\int_0^\tau\!\!\int_0^\tau}
\newcommand{\isqr}[1]{\frac{1}{\sqrt{#1}}}
%%% Vychytávky pro tabulky
\newcommand{\pulrad}[1]{\raisebox{1.5ex}[0pt]{#1}}
\newcommand{\mc}[1]{\multicolumn{1}{c}{#1}}

File diff suppressed because it is too large Load Diff

Binary file not shown.

@ -0,0 +1,193 @@
%%% Hlavní soubor. Zde se definují základní parametry a odkazuje se na ostatní části. %%%
%% Verze pro jednostranný tisk:
\documentclass[12pt,a4paper]{report}
% \setlength\textwidth{145mm}
% \setlength\textheight{247mm}
% \setlength\oddsidemargin{15mm}
% \setlength\evensidemargin{15mm}
% \setlength\topmargin{0mm}
% \setlength\headsep{0mm}
% \setlength\headheight{0mm}
% \openright zařídí, aby následující text začínal na pravé straně knihy
\let\openright=\clearpage
%% Pokud tiskneme oboustranně:
% \documentclass[12pt,a4paper,twoside,openright]{report}
% \setlength\textwidth{145mm}
% \setlength\textheight{247mm}
% \setlength\oddsidemargin{14.2mm}
% \setlength\evensidemargin{0mm}
% \setlength\topmargin{0mm}
% \setlength\headsep{0mm}
% \setlength\headheight{0mm}
% \let\openright=\cleardoublepage
%% výstupní formát PDF/A-2u
\usepackage[a-2u]{pdfx}
%% kódování
\usepackage{textcomp} % speciální symboly pro kódování T1
\usepackage[utf8]{inputenc} % vstupní kódování v UTF-8
\usepackage[T1]{fontenc} % výstupní kódování v T1 (české znaky)
%% bibliografie
\usepackage[czech]{babel} % Česká bibliografie
\usepackage{natbib} % zajištuje možnost odkazovat na literaturu
% stylem AUTOR (ROK), resp. AUTOR [ČÍSLO]
%\usepackage[super,square]{natbib} % superscript citace
%% Formátování podle předpisů PedF
% velikosti fontů jsou v základím nastavení správně
\usepackage[top=30mm, bottom=25mm, left=35mm, right=20mm]{geometry} % odsazení od okrajů
\usepackage{lmodern} % nastavení fontů
\setlength{\parindent}{0pt} % neodsazuje se první řádek v odstavci
\setlength{\parskip}{6pt} % mezera mezi odstavci
\renewcommand{\baselinestretch}{1.5} % odsazení řádků
%%% Další užitečné balíčky (jsou součástí běžných distribucí LaTeXu)
\usepackage{amsmath} % rozšíření pro sazbu matematiky
\usepackage{amsfonts} % matematické fonty
\usepackage{amsthm} % sazba vět, definic apod.
\usepackage{bbding} % symboly (čtverečky, hvězdičky, tužtičky, nůžtičky, ...)
\usepackage{bm} % tučné symboly (příkaz \bm)
\usepackage{graphicx} % vkládání obrázků
\usepackage{fancyvrb} % vylepšené prostředí pro strojové písmo
\usepackage{indentfirst} % zavede odsazení 1. odstavce kapitoly
\usepackage[nottoc]{tocbibind} % zajistí přidání seznamu literatury,
% obrázků a tabulek do obsahu
\usepackage{icomma} % inteligetní čárka v matematickém módu
\usepackage{dcolumn} % lepší zarovnání sloupců v tabulkách
\usepackage{booktabs} % lepší vodorovné linky v tabulkách
\usepackage{paralist} % lepší enumerate a itemize
\usepackage{xcolor} % barevná sazba
\usepackage{xargs} % vlastni prikazy
%%% vlastní poznámky
\usepackage[draft, colorinlistoftodos]{todonotes} % poznamky v marginu
\reversemarginpar % poznamky vlevo
\setlength{\marginparwidth}{3cm} % sirsi poznamky
\presetkeys{todonotes}{fancyline, backgroundcolor=red!20}{} % defaultni barva a hezke sipky
% vlastni zkratky
\newcommandx{\quest}[2][1=]{\todo[fancyline,linecolor=lime,backgroundcolor=lime!25,#1]{#2}}
%%% Údaje o práci
% Název práce v jazyce práce (přesně podle zadání)
\def\NazevPrace{Systém pro generování statického webu}
% Název práce v angličtině
\def\NazevPraceEN{System for static web generation}
% Jméno autora
\def\AutorPrace{Emil Miler}
% Rok odevzdání
\def\RokOdevzdani{2020}
% Název katedry nebo ústavu, kde byla práce oficiálně zadána
% (dle Organizační struktury MFF UK, případně plný název pracoviště mimo MFF)
\def\Katedra{Katedra informačních technologií a technické výchovy}
\def\KatedraEN{Name of the department}
% Jedná se o katedru (department) nebo o ústav (institute)?
\def\TypPracoviste{Katedra}
\def\TypPracovisteEN{Department}
% Vedoucí práce: Jméno a příjmení s~tituly
\def\Vedouci{PhDr. Josef Procházka, Ph.D.}
% Pracoviště vedoucího (opět dle Organizační struktury MFF)
\def\KatedraVedouciho{Katedra informačních technologií a technické výchovy}
\def\KatedraVedoucihoEN{}
% Studijní program a obor
\def\StudijniProgram{Specializace v pedagogice}
\def\StudijniObor{Informační technologie se zaměřením na vzdělávání}
% Nepovinné poděkování (vedoucímu práce, konzultantovi, tomu, kdo
% zapůjčil software, literaturu apod.)
\def\Podekovani{%
Poděkování.
}
% Abstrakt (doporučený rozsah cca 80-200 slov; nejedná se o zadání práce)
\def\Abstrakt{%
Abstrakt.
}
\def\AbstraktEN{%
Abstract.
}
% 3 až 5 klíčových slov (doporučeno), každé uzavřeno ve složených závorkách
\def\KlicovaSlova{%
{www} {web} {generátor}
}
\def\KlicovaSlovaEN{%
{www} {web} {generator}
}
%% Balíček hyperref, kterým jdou vyrábět klikací odkazy v PDF,
%% ale hlavně ho používáme k uložení metadat do PDF (včetně obsahu).
%% Většinu nastavítek přednastaví balíček pdfx.
\hypersetup{unicode}
\hypersetup{breaklinks=true}
%% Definice různých užitečných maker (viz popis uvnitř souboru)
\include{makra}
%% Titulní strana a různé povinné informační strany
\begin{document}
\include{titulka}
%%% Strana s automaticky generovaným obsahem bakalářské práce
\tableofcontents
%%% Jednotlivé kapitoly práce jsou pro přehlednost uloženy v samostatných souborech
\include{uvod}
\include{kap-generatory}
\include{kap-paradigmata}
\include{kap-markup}
\include{kap-taxonomie-pozadavku}
\include{kap-modelova-implementace}
\include{kap-vyhodnoceni-implementace}
\include{zaver}
%%% Seznam použité literatury
\include{literatura}
%%% Obrázky v bakalářské práci
%%% (pokud jich je malé množství, obvykle není třeba seznam uvádět)
%\listoffigures
%%% Tabulky v bakalářské práci (opět nemusí být nutné uvádět)
%%% U matematických prací může být lepší přemístit seznam tabulek na začátek práce.
%\listoftables
%%% Použité zkratky v bakalářské práci (opět nemusí být nutné uvádět)
%%% U matematických prací může být lepší přemístit seznam zkratek na začátek práce.
%\chapwithtoc{Seznam použitých zkratek}
%%% Přílohy k bakalářské práci, existují-li. Každá příloha musí být alespoň jednou
%%% odkazována z vlastního textu práce. Přílohy se číslují.
%%%
%%% Do tištěné verze se spíše hodí přílohy, které lze číst a prohlížet (dodatečné
%%% tabulky a grafy, různé textové doplňky, ukázky výstupů z počítačových programů,
%%% apod.). Do elektronické verze se hodí přílohy, které budou spíše používány
%%% v elektronické podobě než čteny (zdrojové kódy programů, datové soubory,
%%% interaktivní grafy apod.). Elektronické přílohy se nahrávají do SISu a lze
%%% je také do práce vložit na CD/DVD. Povolené formáty souborů specifikuje
%%% opatření rektora č. 72/2017.
\appendix
\chapter{Přílohy}
\section{První příloha}
\openright
\end{document}

@ -0,0 +1,7 @@
% Metadata k uložení do PDF, podrobnější popis viz dokumentace balíčku pdfx.
\Author{Jméno Příjmení}
\Title{Název práce}
\Keywords{klíčová slova\sep další taková\sep ještě jiná}
\Subject{Abstrakt práce}
\Publisher{Univerzita Karlova}

@ -0,0 +1,152 @@
%%% Titulní strana práce a další povinné informační strany
%%% Titulní strana práce
\pagestyle{empty}
\hypersetup{pageanchor=false}
\begin{center}
{\Large Univerzita Karlova}
\vspace{4mm}
{\Large Pedagogická fakulta}
\vspace{4mm}
\Katedra
\vspace{-8mm}
\vfill
{\bf\Large BAKALÁŘSKÁ PRÁCE}
\vfill
{\LARGE\bfseries\NazevPrace}
\vspace{8mm}
{\LARGE\bfseries\NazevPraceEN}
\vspace{15mm}
{\LARGE\AutorPrace}
\vfill
\begin{tabular}{rl}
Vedoucí bakalářské práce: & \Vedouci \\
\noalign{\vspace{2mm}}
Studijní program: & \StudijniProgram \\
\noalign{\vspace{2mm}}
Studijní obor: & \StudijniObor \\
\end{tabular}
\vfill
Praha \RokOdevzdani
\end{center}
\newpage
%%% Následuje vevázaný list -- kopie podepsaného "Zadání bakalářské práce".
%%% Toto zadání NENÍ součástí elektronické verze práce, nescanovat.
%%% Strana s čestným prohlášením k bakalářské práci
\openright
\hypersetup{pageanchor=true}
\pagestyle{plain}
\pagenumbering{roman}
\vglue 0pt plus 1fill
\noindent
Prohlašuji, že jsem tuto bakalářskou práci vypracoval(a) samostatně a výhradně
s~použitím citovaných pramenů, literatury a dalších odborných zdrojů.
\medskip\noindent
Beru na~vědomí, že se na moji práci vztahují práva a povinnosti vyplývající
ze zákona č. 121/2000 Sb., autorského zákona v~platném znění, zejména skutečnost,
že Univerzita Karlova má právo na~uzavření licenční smlouvy o~užití této
práce jako školního díla podle §60 odst. 1 autorského zákona.
\vspace{10mm}
\hbox{\hbox to 0.5\hsize{%
V ............ dne ............
\hss}\hbox to 0.5\hsize{%
Podpis autora
\hss}}
\vspace{20mm}
\newpage
%%% Poděkování
\openright
\noindent
\Podekovani
\newpage
%%% Povinná informační strana bakalářské práce
\openright
\vbox to 0.5\vsize{
\setlength\parindent{0mm}
\setlength\parskip{5mm}
Název práce:
\NazevPrace
Autor:
\AutorPrace
\TypPracoviste:
\Katedra
Vedoucí bakalářské práce:
\Vedouci, \KatedraVedouciho
Abstrakt:
\Abstrakt
Klíčová slova:
\KlicovaSlova
\vss}\nobreak\vbox to 0.49\vsize{
\setlength\parindent{0mm}
\setlength\parskip{5mm}
Title:
\NazevPraceEN
Author:
\AutorPrace
\TypPracovisteEN:
\KatedraEN
Supervisor:
\Vedouci, \KatedraVedoucihoEN
Abstract:
\AbstraktEN
Keywords:
\KlicovaSlovaEN
\vss}
\newpage
\openright
\pagestyle{plain}
\pagenumbering{arabic}
\setcounter{page}{1}

@ -0,0 +1,3 @@
\chapter*{Úvod}
\addcontentsline{toc}{chapter}{Úvod}

Binary file not shown.

@ -0,0 +1,2 @@
\chapter*{Závěr}
\addcontentsline{toc}{chapter}{Závěr}