Skip to content

Commit

Permalink
oprava překlepů
Browse files Browse the repository at this point in the history
  • Loading branch information
hubnedav committed Jun 29, 2017
1 parent 7240960 commit a0f3fe5
Show file tree
Hide file tree
Showing 14 changed files with 21 additions and 21 deletions.
2 changes: 1 addition & 1 deletion sections/implementace/nacitani.tex
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ \subsection{Mapování LDraw a Rebrickable}
\end{listing}
\subsection{API Brickset}
Dalším zdrojem dat využívaným pro obdržení informací o~stavebnicích je API Brickset. Jak již bylo zmíněno v~sekci \emph{\ref{reserse-brickset}}, API Bricsket je implementováno jako služba postavená nad protokolem \gls{SOAP}. V~PHP je pro komunikaci se SOAP servery k~dispozici třída \textit{SOAPClient} \autocite{soapclient}, která za nás obstarává komunikaci na základě definice v~podobě \gls{WSDL} souboru.
Dalším zdrojem dat využívaným pro obdržení informací o~stavebnicích je API Brickset. Jak již bylo zmíněno v~sekci \emph{\ref{reserse-brickset}}, API Brickset je implementováno jako služba postavená nad protokolem \gls{SOAP}. V~PHP je pro komunikaci se SOAP servery k~dispozici třída \textit{SOAPClient} \autocite{soapclient}, která za nás obstarává komunikaci na základě definice v~podobě \gls{WSDL} souboru.
Při získávání statických dat přes API je vhodné využít možnosti cachování k~minimalizaci počtu dotazů na server a k~urychlení načítání dat. K~tomuto jsem využil komponenty DoctrineCacheBundle. V~ukázce kódu \emph{\ref{ukazka-cache}} je zobrazena metoda \mintinline{php}{getSetInstructions} třídy \textit{BricksetManager}, která načítá instrukce k~postavení stavebnice z~cache (pokud se zde data již vyskytují) nebo pomocí Brickset API.
Expand Down
2 changes: 1 addition & 1 deletion sections/implementace/nahled.tex
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
\section{3D náhled}
3D náhled součástek LEGO je implementován s~využitím javascriptového frameworku Three.js. Tento frameworku disponuje velmi rozsáhlou a přehlednou dokumentací, včetně ukázek použití a je nejpoužívanějsím javascriptovým WebGL frameworkem \autocite{webgl-comparison}. Na základě těchto důvodů bylo rozhodnuto o~jeho využití v~tomto projektu.
3D náhled součástek LEGO je implementován s~využitím javascriptového frameworku Three.js. Tento framework disponuje velmi rozsáhlou a přehlednou dokumentací, včetně ukázek použití a je nejpoužívanějsím javascriptovým WebGL frameworkem \autocite{webgl-comparison}. Na základě těchto důvodů bylo rozhodnuto o~jeho využití v~tomto projektu.

% Three.js
% OrbitControls.js
Expand Down
6 changes: 3 additions & 3 deletions sections/implementace/obrazky.tex
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
\section{Obrázky součástek a stavebnic}
\subsection{Renderování součástek}
Jak již bylo zmíněno v~sekci \emph{\ref{reserse-vykresleni}}, Rebrickable poskytuje většinu obrázků vyrenderovaných součástek z~knihovny LDraw volně ke stažení. Pro zbytek součástek jsem implementoval mechanizmus vykreslení s~využitím programů stl2pov \autocite{stl2pov} a POV-ray \autocite{povray}.
Jak již bylo zmíněno v~sekci \emph{\ref{reserse-vykresleni}}, Rebrickable poskytuje většinu obrázků vyrenderovaných součástek z~knihovny LDraw volně ke stažení. Pro zbytek součástek jsem implementoval mechanizmus vykreslení s~využitím programů stl2pov \autocite{stl2pov} a POV-Ray \autocite{povray}.

Vykreslení součástek zajišťuje třída \textit{STLRenderer}. Třída nejprve připraví kompletní scénu, obsahující součástku převedenou pomocí stl2pov do POV-ray formátu. Dále scéna obsahuje definici pozice světel a kamery, specifikované v~souboru \textit{app/Resources/povray\_layout/layout.tmpl}. Následně je pomocí volání programu POV-ray vykreslen obrázek.
Vykreslení součástek zajišťuje třída \textit{STLRenderer}. Třída nejprve připraví kompletní scénu, obsahující součástku převedenou pomocí stl2pov do POV-Ray formátu. Dále scéna obsahuje definici pozice světel a kamery, specifikované v~souboru \textit{app/Resources/povray\_layout/layout.tmpl}. Následně je pomocí volání programu POV-Ray vykreslen obrázek.

Porovnání vyrenderované součástky s~obrázkem součástky z~Rebrickable je možné vidět na obrázku \emph{\ref{porovnani-render}}.

Expand All @@ -17,7 +17,7 @@ \subsection{Renderování součástek}
\subsection{Cachování obrázků}
Pro urychlení načítaní webových stránek jsem implementoval mechanizmus cachování miniatur obrázků součástek a stavebnic. K~práci s~obrázky v~Symfony slouží komponenta LiipImagineBundle \autocite{liipimagine}. LiipImagineBundle umožňuje definování různých filtrů a transformací, které jsou aplikovány na zobrazované obrázky. Transformované obrázky jsou následně uloženy do cache, ze které jsou při dalším požadavku načtené.

Proces vytváření transformovaných obrázků se zakládá ze tří kroků:
Proces vytváření transformovaných obrázků se skládá ze tří kroků:
\begin{enumerate}
\item načtení obrázku,
\item aplikace flitrů,
Expand Down
2 changes: 1 addition & 1 deletion sections/implementace/social.tex
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
\section{Náhled pro sociální sítě}
Významným zdrojem návštěvnosti stránek mohou v~dnešní době být i sociální sítě. Aby byl sdílený odkaz na stránku dostatečně zajímavý je třeba stránky rozšířit o~patřičné meta informace. Facebook a většina sociálních sítí ke specifikování náhledu využívá protokol Open Graph představený firmou Facebook v~roce 2010 \autocite{opengraph}.

Vše co je pro vytvoření náhledu pro sociální sítě potřeba, je přidání patřičných Open Graph meta tagů do hlavičky stránky. Pro tento účel jsem vytvořil znovupoužitelné makro šablonovacího systému \textit{Twig} (ukázka kódu \emph{\ref{opengraph-meta}}). Výsledný náhled při stránky stavebnice na sociální síti Facebook je zobrazen na obrázku \emph{\ref{facebook-share}}.
Vše co je pro vytvoření náhledu pro sociální sítě potřeba, je přidání patřičných Open Graph meta tagů do hlavičky stránky. Pro tento účel jsem vytvořil znovupoužitelné makro šablonovacího systému \textit{Twig} (ukázka kódu \emph{\ref{opengraph-meta}}). Výsledný náhled při sdílení stránky stavebnice na sociální síti Facebook je zobrazen na obrázku \emph{\ref{facebook-share}}.

\begin{listing}[htbp]
\begin{minted}{twig}
Expand Down
8 changes: 4 additions & 4 deletions sections/implementace/technologie.tex
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ \subsection{Komponenty}
integruje do Symfony PHP knihovnu KnpPagerComponent, která usnadňuje stránkování kolekcí. \autocite{knppaginator}

\paragraph{LiipImagineBundle}
poskytuje nástroj pro manipulaci s~obrázky. Umožňuje vytváření miniatur, změnu velikosti obrátku a další transformace. \autocite{liipimagine}
poskytuje nástroj pro manipulaci s~obrázky. Umožňuje vytváření miniatur, změnu velikosti obrázku a další transformace. \autocite{liipimagine}

\paragraph{OneupFlysystemBundle}
je abstrakce souborového systému, která umožňuje snadnou práci se soubory a jednoduchou výměnu lokálního souborového systému za vzdálený. \autocite{oneupflysytem}
Expand All @@ -28,12 +28,12 @@ \subsection{Databáze}
Framework Symfony používá pro persistenci dat \gls{ORM} Doctrine 2. Dotazy na databázi se provádějí přes entity manager a třídy
repozitářů (ve kterých jsou definované složitější dotazy), které entity manager využívají. V~Doctrine 2 mají třídy anotované atributy, které se mají persistovat. Pomocí anotací jsou definované vztahy mezi třídami, datové typy sloupců databáze a mapování.

Pro vývoj a běh aplikace jsem použil MySQL, který je druhým nepoužívanějším databázovým serverem \autocite{database-servers}. Zároveň by však vzhledem k~abstrakci poskytované knihovou Doctrine 2 bylo možné zvolit i jiný databázový server (s~nutností zohlednění při implementaci načítání CSV tabulek Rebrickable, popsané v~sekci \emph{\ref{nacitani-rebrickable}}).
Pro vývoj a běh aplikace jsem použil MySQL, který je druhým nejpoužívanějším databázovým serverem \autocite{database-servers}. Zároveň by však vzhledem k~abstrakci poskytované knihovou Doctrine 2 bylo možné zvolit i jiný databázový server (s~nutností zohlednění při implementaci načítání CSV tabulek Rebrickable, popsané v~sekci \emph{\ref{nacitani-rebrickable}}).

\subsection{Frontend}
Pro usnadnění práce při tvorbě projektu poskytujícího uživatelské rozhraní je vhodné využití frontend framoworku. Frameworky definují vzhled a chování nejzákladnějších, často používaných prvků.
Pro usnadnění práce při tvorbě projektu poskytujícího uživatelské rozhraní je vhodné využití frontend frameworku. Frameworky definují vzhled a chování nejzákladnějších, často používaných prvků.

Pro tvorbu práce jsem se rozhodoval kromě využití pro mě již známého framworku Bootstrap 3 také nad možností využití dalších nejpoužívanějších alternativ – Foundation a Sematntic UI \autocite{web:frameworks}. Pro mou aplikaci jsem se nakonec rozhodnul využít frameworku Semantic UI. Semantic UI při definování tříd používá přirozené názvy vycházející z~angličtiny, tudíž je jeho použití velmi intuitivní a naučení používání by mělo být velmi snadné. V~ukázce kódu \emph{\ref{ukazka-semantic}} je možné vidět příklad definice mřížky se třemi sloupečky pomocí Sematnic UI.
Pro tvorbu práce jsem se rozhodoval kromě využití pro mě již známého frameworku Bootstrap 3 také nad možností využití dalších nejpoužívanějších alternativ – Foundation a Sematntic UI \autocite{web:frameworks}. Pro mou aplikaci jsem se nakonec rozhodnul využít frameworku Semantic UI. Semantic UI při definování tříd používá přirozené názvy vycházející z~angličtiny, tudíž je jeho použití velmi intuitivní a naučení používání by mělo být velmi snadné. V~ukázce kódu \emph{\ref{ukazka-semantic}} je možné vidět příklad definice mřížky se třemi sloupečky pomocí Sematnic UI.

\begin{listing}[htbp]
\begin{minted}{html}
Expand Down
6 changes: 3 additions & 3 deletions sections/instalace.tex
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ \subsubsection*{Spustění aplikace na lokálním webserveru}
\subsubsection*{Párování součástek}\label{adding-part-relation}
Vazby mezi součástkami z~knihovny LDraw a součástkami z~databáze Rebrickable jsou automaticky spárováný při běhu příkazu \\\mintinline{console}{$ bin/console app:load:relations}.
Vazby mezi součástkami z~knihovny LDraw a součástkami z~databáze Rebrickable jsou automaticky spárovány při běhu příkazu \\\mintinline{console}{$ bin/console app:load:relations}.
Vazby mezi součástkami, které nebyly automaticky rozpoznány je možné opravit přidáním odpovídajících ID do souboru \\\mintinline{console}{app/Resources/relations/part_model.yml}.
Expand All @@ -136,6 +136,6 @@ \subsection*{Testování}\label{testing}
Vytvořte tabulky databáze přikazem \\\mintinline{console}{$ bin/console doctrine:schema:create --env=test}.
\end{enumerate}
Kompletní systémové testy mohou být spučtěny příkazem \mintinline{console}{$ phpunit}.
Kompletní systémové testy mohou být spuštěny příkazem \mintinline{console}{$ phpunit}.
Tyto testy pokrývají základní funkcionalitu aplikace, včetně testování úspěšnosti volání programů třetích stran,využívaných aplikací.
Tyto testy pokrývají základní funkcionalitu aplikace, včetně testování úspěšnosti volání programů třetích stran, využívaných aplikací.
2 changes: 1 addition & 1 deletion sections/navrh/domenovy_model.tex
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ \subsection{Brickset}
\end{figure}

\subsubsection*{Set}
Entita \textit{Set} reprezentuje jednu stavebnici LEGO. Tato entita odpovídá právě nebo žádné entitě \textit{Set} z~balíků Rebrickable.
Entita \textit{Set} reprezentuje jednu stavebnici LEGO. Tato entita odpovídá právě jedné nebo žádné entitě \textit{Set} z~balíků Rebrickable.

\subsubsection*{Review}
Brickset umožňuje uživatelům vytvářet recenze na stavebnice. Tyto recenze jsou reprezentovány entitou \textit{Review}. Recenze kromě textového popisu obsahuje i číselné hodnocení hlavních kritérií, znázorněných v~diagramu.
Expand Down
2 changes: 1 addition & 1 deletion sections/navrh/technologie.tex
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ \section{Technologie}
Jednou ze základních otázek při tvorbě webové aplikace je volba technologií, které budou při implementaci využity. Od volby se odvíjí jak návrh, tak implementace samotná.

\subsection{PHP}
Pro tvorbu webové aplikace jsem se rozhodl využít programovacího jazyka \gls{PHP}. Jedním z~hlavních kritérií, zohledněných při výběru technologie byla jistá předchozí zkušenost s~programovacím jazykem PHP, který patří mezi nepoužívanější technologie pro tvorbu webových aplikací. V~současné době je v~jazyce PHP napsáno více než 82 \% webových stánek se skriptováním na straně serveru \autocite{web:statistics}. Vzhledem k~vysoké rozšířenosti je o~jazyce PHP dostupné velké množství informací, které usnadňují vývoj.
Pro tvorbu webové aplikace jsem se rozhodl využít programovacího jazyka \gls{PHP}. Jedním z~hlavních kritérií zohledněných při výběru technologie byla jistá předchozí zkušenost s~programovacím jazykem PHP, který patří mezi nejpoužívanější technologie pro tvorbu webových aplikací. V~současné době je v~jazyce PHP napsáno více než 82 \% webových stránek se skriptováním na straně serveru \autocite{web:statistics}. Vzhledem k~vysoké rozšířenosti je o~jazyce PHP dostupné velké množství informací, které usnadňují vývoj.

\subsection{Framework Symfony 3}
Po provedení průzkumu mezi PHP frameworky jsem se rozhodl svou práci vyvíjet s~využitím frameworku Symfony 3. Hlavním důvodem pro výběr Symfony byla nativní podpora konzolových příkazů \autocite{symfony:console}, kvalitně zpracovaná dokumentace a využití knihovny Doctrine \gls{ORM} \autocite{symfony:doctrine}.
2 changes: 1 addition & 1 deletion sections/pravo.tex
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ \section{Zdroje dat}
\subsection{LDraw}
Jak již bylo uvedeno v~sekci \emph{\ref{reserse-ldraw}}, všechny součástky knihovny LDraw jsou sdíleny pod licencí \gls{CC-BY} \autocite{CC-BY}.

Aby byla dodržena licence knihovny LDraw při sdílení 3D modelů součástek, je nutné spolu se staženými soubory jednoznačně uvést autora dle licence. Toho je docíleno přidáním souboru LICENSE.txt do sdíleného archivu. Příklad tohoto souboru je možné vidět v~ukázce kódu \emph{\ref{ukazka-licence}} zobrazující licenční soubor, zahrnutý v~archivu stavebnice \textit{2000416-1 Duck}. Dále je na autor společně s licencí uveden na stránce detailu součástky.
Aby byla dodržena licence knihovny LDraw při sdílení 3D modelů součástek, je nutné spolu se staženými soubory jednoznačně uvést autora dle licence. Toho je docíleno přidáním souboru LICENSE.txt do sdíleného archivu. Příklad tohoto souboru je možné vidět v~ukázce kódu \emph{\ref{ukazka-licence}} zobrazující licenční soubor, zahrnutý v~archivu stavebnice \textit{2000416-1 Duck}. Dále je autor společně s licencí uveden na stránce detailu součástky.

\begin{listing}[htbp]
\begin{minted}{text}
Expand Down
2 changes: 1 addition & 1 deletion sections/reserse/admesh.tex
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
\subsection{ADMesh}\label{podsekce-admesh}
ADMesh \autocite{ADMesh} je open-source program umožňující provádět operace nad soubory ve formátu \textit{\gls{STL}}. Jedná se o~program bez grafického rozhraní spouštěný z~příkazové řádky. V~ukázce \emph{\ref{priklad-admesh}} je příklad použití programu ADMesh pro zvětšení měřítka, rotaci kolem osy x a následného uložení v~podobě binárního \textit{\gls{STL}} souboru.
ADMesh \autocite{ADMesh} je open-source program umožňující provádět operace nad soubory ve formátu \textit{\gls{STL}}. Jedná se o~program bez grafického rozhraní spouštěný z~příkazové řádky. V~ukázce \emph{\ref{priklad-admesh}} je příklad použití programu ADMesh pro zvětšení měřítka, rotaci kolem osy X a následného uložení v~podobě binárního \textit{\gls{STL}} souboru.

Funkce:
\begin{itemize}
Expand Down
2 changes: 1 addition & 1 deletion sections/reserse/main.tex
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
\chapter{Rešerše}
V~rámci rešerše jsem se seznamoval se službami, které jsou specifikovány v~zadání mé bakalářské práce, a s~programy umožnujícími převod formátu LDraw na formát vhodný pro 3D tisk.
V~rámci rešerše jsem se seznamoval se službami, které jsou specifikovány v~zadání mé bakalářské práce, a s~programy umožňujícími převod formátu LDraw na formát vhodný pro 3D tisk.

%TODO k čemu to je dobré

Expand Down
2 changes: 1 addition & 1 deletion sections/reserse/vykresleni.tex
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,4 @@ \subsection{POV-Ray}
\end{listing}
\subsection{Stl2pov}
Stl2pov je program umožňující převod \textit{\gls{STL}} souboru na POV-ray objekt, který je možné použít do specifikace POV-ray scény k~vykreslení.
Stl2pov je program umožňující převod \textit{\gls{STL}} souboru na POV-Ray objekt, který je možné použít do specifikace POV-Ray scény k~vykreslení.
2 changes: 1 addition & 1 deletion sections/testovani_nasazeni/main.tex
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ \section{Testování}
\include{sections/testovani_nasazeni/pokryti}
\section{Nasazení}
Aplikace byla nasazena na školní \gls{VPS}, který byl speciálně zřízen pro potřeby mé aplikace. Na serveru bězí operační systém CentOS 7 \autocite{centos}. Vzhedem k tomu, že jsem obdržel administrátorská práva k systému, bylo možné nainstalovat všechny potřebné závislosti, kterých aplikace využívá.
Aplikace byla nasazena na školní \gls{VPS}, který byl speciálně zřízen pro potřeby mé aplikace. Na serveru běží operační systém CentOS 7 \autocite{centos}. Vzhedem k tomu, že jsem obdržel administrátorská práva k systému, bylo možné nainstalovat všechny potřebné závislosti, kterých aplikace využívá.
Při instalaci bylo postupováno podle instalační příručky (příloha \emph{\ref{append:instalace}}), včetně úspešného běhu testů.
Expand Down
2 changes: 1 addition & 1 deletion sections/uvod.tex
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
Z~výše uvedených důvodů jsem se rozhodl pro volbu tématu, které výběr i tisk vlastních stavebnic usnadní a ušetří tím uživateli velké množství času jinak stráveného vyhledáváním podkladů k~tisku.

\section*{Cíl práce}
Cílem práce je navrhnout a implementovat webovou aplikaci umožnující stažení modelů LEGO součástek a stavebnic pro 3D tisk. Návrh je potřeba provést na základě analýzy knihovny LDraw, poskytující modely jednotlivých LEGO součástek, a databáze stavebnic Brickset, které bude aplikace využívat.
Cílem práce je navrhnout a implementovat webovou aplikaci umožňující stažení modelů LEGO součástek a stavebnic pro 3D tisk. Návrh je potřeba provést na základě analýzy knihovny LDraw, poskytující modely jednotlivých LEGO součástek, a databáze stavebnic Brickset, které bude aplikace využívat.

Aplikace musí umožňovat vyhledávání, procházení a prohlížení samotných dílů i celých stavebnic. Součástky musí být možné prohlížet interaktivně ve 3D náhledu. Dále aplikace musí zajišťovat automatický převod dílů z~formátu knihovny LDraw do formátu vhodného pro 3D tisk a nabídnout jejich stažení jak jednotlivě, tak v~sadách podle stavebnic a barev.

Expand Down

0 comments on commit a0f3fe5

Please sign in to comment.