|
136 | 136 |
|
137 | 137 | Za předpokladu existence takové aplikace by jejím dalším využitím, jelikož sdružuje transakce ze všech burz, bylo použití při vyplňování daňového přiznání, kdy je velmi výhodné, že aplikace zobrazuje všechny obchodníkovy transakce včetně zisku či ztráty.
|
138 | 138 |
|
139 |
| - Aplikací, které se zaměřují na sledování obchodního portfólia s kryptoměnami existuje několik, kdy mezi ty nejpoužívanější patří Blockfolio\cite{blockfolio2021} (Android a iOS), Delta\cite{delta2021} (Android a iOS) a Moonitor\cite{moonitor2021} (macOS, Windows a Linux). Tyto aplikace splňují požadavek přehledného zobrazení výnosnosti obchodování i na úrovni jednotlivých transakcí, avšak během jejich používání můžou často vzniknout nové požadavky specifické danému uživateli, jako například možnost importu transakcí z API nějaké méně známé burzy či jiný výpočet celkového zisku portfólia, které do aplikace pravděpodobně nikdy nebudou zapracovány. Řešením pro technicky zdatné uživatele by bylo si takovou aplikaci navrhnout a napragramovat, avšak vytváření architektury a základní logiky pro správu a sledování portfólia (zádávní transakcí a jejich přehled) pro ně může být časově náročné a tudíž odrazující. |
| 139 | + Aplikací, které se zaměřují na sledování obchodního portfólia s kryptoměnami existuje několik, kdy mezi ty nejpoužívanější patří Blockfolio\cite{blockfolio2021} (Android a iOS), Delta\cite{delta2021} (Android a iOS) a Moonitor\cite{moonitor2021} (macOS, Windows a Linux). Tyto aplikace splňují požadavek přehledného zobrazení výnosnosti obchodování i na úrovni jednotlivých transakcí, avšak během jejich používání můžou často vzniknout nové požadavky specifické danému uživateli, jako například možnost importu transakcí z API nějaké méně známé burzy či jiný výpočet celkového zisku portfólia, které do aplikace pravděpodobně nikdy nebudou zapracovány. Řešením pro technicky zdatné uživatele by bylo si takovou aplikaci navrhnout a naprogramovat, avšak vytváření architektury a základní logiky pro správu a sledování portfólia (zadávání transakcí a jejich přehled) pro ně může být časově náročné a tudíž odrazující. |
140 | 140 |
|
141 | 141 | \begin{figure}[!ht]
|
142 | 142 | \centering
|
|
150 | 150 |
|
151 | 151 | \subsection{Datový zdroj s aktuálním kurzem kryptoměn}
|
152 | 152 |
|
153 |
| - Pro vývoj aplikace určené ke sledování obchodního portfólia s kryptoměnami je třeba nalézt vhodný zdroj dat, který bude využíván k získávání aktuálního kurzu sledovaných kryptoměn. Mezi hlavní požadavky na takový datový zdroj je jeho dostupnostie jednoduchost rozhraní a množina podporovaných kurzů. Ideálním zdrojem je tedy takový zdroj, který poskytuje aktuální i historický kurz na všech burzách prostřednictvím REST API bez nutnosti registrace. |
| 153 | + Pro vývoj aplikace určené ke sledování obchodního portfólia s kryptoměnami je třeba nalézt vhodný zdroj dat, který bude využíván k získávání aktuálního kurzu sledovaných kryptoměn. Mezi hlavní požadavky na takový datový zdroj je jeho dostupnost, jednoduchost rozhraní a množina podporovaných kurzů. Ideálním zdrojem je tedy takový zdroj, který poskytuje aktuální i historický kurz na všech burzách prostřednictvím REST API bez nutnosti registrace. |
154 | 154 |
|
155 | 155 | \subsubsection{Webový zdroj CoinGecko}
|
156 | 156 | Aktuální i historický kurz drtivé většiny všech existujících kryptoměn bez nutnosti registrace nabízí pomocí REST rozhraní webová služba CoinGecko\cite{coingecko2021}. Jediným omezením tohoto API je počet provedených požadavků za minutu, který je stanoven na 100, což je pro aplikaci určenou ke sledování kryptoměnového portfólia více než dostačující.
|
|
173 | 173 |
|
174 | 174 | \subsection{Výběr frameworku pro implementaci GUI}
|
175 | 175 | Jedním s cílů této semestrální práce bylo, aby vytvořená aplikace byla spustitelná jak na platformě Windows, tak i na platformě Linux.
|
176 |
| - Ačkoliv platforma .NET je multiplatformní, tak při vývoji aplikací s grafickým uživatelským rozhraním nárážíme na problém, |
| 176 | + Ačkoliv platforma .NET je multiplatformní, tak při vývoji aplikací s grafickým uživatelským rozhraním narážíme na problém, |
177 | 177 | kdy tato platforma nenabízí nástroje pro jeho tvorbu s použitím na různých platformách.
|
178 | 178 |
|
179 | 179 | \subsubsection{.NET MAUI}
|
|
251 | 251 |
|
252 | 252 | \subsection{Služba \texttt{IPortfolioEntryService}}
|
253 | 253 | Velmi podobně jako služba \texttt{IPortfolioService}, tato služba poskytuje rozhraní pro správu položek portfólií v perzistentním úložišti.
|
254 |
| - Kromě vytvoření a přidání nových položek na základě parametrů také nabízí metodu pro její smazání, která smažá i všechny transakce, které k ní byly přiřazeny. |
| 254 | + Kromě vytvoření a přidání nových položek na základě parametrů také nabízí metodu pro její smazání, která smaže i všechny transakce, které k ní byly přiřazeny. |
255 | 255 | Dále disponuje metodou pro výběr všech položek, které patří do vybraného portfólia.
|
256 | 256 |
|
257 | 257 | \subsection{Služba \texttt{IMarketOrderService}}
|
|
338 | 338 |
|
339 | 339 | \begin{itemize}
|
340 | 340 | \item \texttt{LabelDecimalValue.razor} -- definice komponenty, která umožňuje zobrazit libovolné číslo a přiřadit
|
341 |
| - k němu nějaký popisek. V aplikaci se využívá k zobrazování vlastností a výkonosti jednotlivých sledovaných entit |
| 341 | + k němu nějaký popisek. V aplikaci se využívá k zobrazování vlastností a výkonnosti jednotlivých sledovaných entit |
342 | 342 | (portfólia, položky portfóli či transakce).
|
343 | 343 | \item \texttt{OrderForm.razor} -- definice formuláře, který se používá na stránkách pro vytvoření a úpravu transakce
|
344 | 344 | \item \texttt{MainLayout.razor} -- definice obsahující základní HTML prvky, které obalují obsah jednotlivých stránek implementující obrazovky
|
345 | 345 | \item \texttt{PortfolioForm.razor} -- definice formuláře, který se používá na stránkách pro vytvoření a úpravu portfólia
|
346 | 346 | \end{itemize}
|
347 | 347 |
|
348 |
| - \section{Oveření kvality vytvořeného software} |
| 348 | + \section{Ověření kvality vytvořeného software} |
349 | 349 |
|
350 | 350 | Pro ověření kvality vytvořeného software pro sledování obchodního portfólia s kryptoměnami byly vytvořeny desítky jednotkových a integračních testů ověřující funkčnost základních modulů. Tyto testy se nachází v projektu \texttt{Tests}. Jako testovací framework byl zvolen framework \texttt{XUnit}\footnote{\url{https://github.com/xunit/xunit}}.
|
351 | 351 |
|
352 | 352 | Knihovna \texttt{moq}\footnote{\url{https://github.com/moq/moq4}} byla použita pro vytvoření \textbf{mock} objektů datové vrstvy při testování kódu služeb \texttt{PortfolioService}, \texttt{PortfolioEntryService} a \texttt{MarketOrderService} (jednotkové testy).
|
353 | 353 |
|
354 | 354 | Během integračních testů repozitářů datové vrstvy není použita databáze umístěná na souborovém systému, nýbrž databáze uložená v operační paměti z důvodu urychlení vykonávání testů. Připojení k databázi umístěné v operační paměti slouží řetězec \texttt{Data Source=:memory:}.
|
355 | 355 |
|
356 |
| - Vytvořené integrační testy ověřují funkčnost datové vrstvy a datového zdroje pro získvání informací o aktuálním stavu trhu s kryptoměnami. |
| 356 | + Vytvořené integrační testy ověřují funkčnost datové vrstvy a datového zdroje pro získávání informací o aktuálním stavu trhu s kryptoměnami. |
357 | 357 |
|
358 | 358 | \begin{lstlisting}[caption={Struktura projektu \texttt{Tests} obsahující integrační a jednotkové testy}, captionpos=b]
|
359 | 359 | |-- Integration
|
|
499 | 499 |
|
500 | 500 | \newpage
|
501 | 501 | \subsection{Formulář pro vytvoření či editaci transakce}
|
502 |
| - K vytvoření či editaci transakce slouží jednoduchý formmulář, do kterého je třeba zadat následující údaje: |
| 502 | + K vytvoření či editaci transakce slouží jednoduchý formulář, do kterého je třeba zadat následující údaje: |
503 | 503 |
|
504 | 504 | \begin{itemize}
|
505 | 505 | \item cena za jednu minci kryptoměny
|
|
528 | 528 | \begin{figure}[!ht]
|
529 | 529 | \centering
|
530 | 530 | {\includegraphics[width=\textwidth]{img/cpt-screenshots/portfolio-entry-mngmt.png}}
|
531 |
| - \caption{Obrazovka správy položek portólia} |
| 531 | + \caption{Obrazovka správy položek portfólia} |
532 | 532 | \label{fig:portfolio-entry-mngmnt}
|
533 | 533 | \end{figure}
|
534 | 534 |
|
|
0 commit comments