diff --git a/Birdmap.API/Controllers/ServicesController.cs b/Birdmap.API/Controllers/ServicesController.cs index 90d77a9..b994438 100644 --- a/Birdmap.API/Controllers/ServicesController.cs +++ b/Birdmap.API/Controllers/ServicesController.cs @@ -54,24 +54,30 @@ namespace Birdmap.API.Controllers var serviceInfos = (await _service.GetAllServicesAsync()) .Select(s => new ServiceInfo { Service = _mapper.Map(s) }).ToList(); - var client = new HttpClient(); + var tasks = new List(); foreach (var si in serviceInfos) { - try + tasks.Add(Task.Run(async () => { - _logger.LogInformation($"Sending a request to service [{si.Service.Name}] with url [{si.Service.Uri}]..."); - var response = await client.GetAsync(si.Service.Uri); - si.StatusCode = response.StatusCode; - si.Response = await response.Content.ReadAsStringAsync(); - } - catch (Exception ex) - { - _logger.LogWarning($"Requesting service [{si.Service.Name}] faulted."); - si.StatusCode = HttpStatusCode.ServiceUnavailable; - si.Response = ex.ToString(); - } + var client = new HttpClient(); + try + { + _logger.LogInformation($"Sending a request to service [{si.Service.Name}] with url [{si.Service.Uri}]..."); + var response = await client.GetAsync(si.Service.Uri); + si.StatusCode = response.StatusCode; + si.Response = await response.Content.ReadAsStringAsync(); + } + catch (Exception ex) + { + _logger.LogWarning($"Requesting service [{si.Service.Name}] faulted."); + si.StatusCode = HttpStatusCode.ServiceUnavailable; + si.Response = ex.ToString(); + } + })); } + await Task.WhenAll(tasks); + serviceInfos.Add(new() { Service = new() diff --git a/docs/thesis/content/abstract.aux b/docs/thesis/content/abstract.aux new file mode 100644 index 0000000..7e6cefd --- /dev/null +++ b/docs/thesis/content/abstract.aux @@ -0,0 +1,47 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\@writefile{toc}{\select@language{magyar} \contentsline {chapter}{Kivonat}{i}{chapter*.2}\protected@file@percent } +\@writefile{toc}{\select@language{english} \contentsline {chapter}{Abstract}{ii}{chapter*.3}\protected@file@percent } +\@setckpt{content/abstract}{ +\setcounter{page}{3} +\setcounter{equation}{0} +\setcounter{enumi}{0} +\setcounter{enumii}{0} +\setcounter{enumiii}{0} +\setcounter{enumiv}{0} +\setcounter{footnote}{0} +\setcounter{mpfootnote}{0} +\setcounter{part}{0} +\setcounter{chapter}{0} +\setcounter{section}{0} +\setcounter{subsection}{0} +\setcounter{subsubsection}{0} +\setcounter{paragraph}{0} +\setcounter{subparagraph}{0} +\setcounter{figure}{0} +\setcounter{table}{0} +\setcounter{footnote@add}{0} +\setcounter{footnote@ch}{0} +\setcounter{parentequation}{0} +\setcounter{Item}{0} +\setcounter{Hfootnote}{0} +\setcounter{bookmark@seq@number}{2} +\setcounter{lstnumber}{1} +\setcounter{endNonectr}{2} +\setcounter{currNonectr}{0} +\setcounter{caption@flags}{0} +\setcounter{continuedfloat}{0} +\setcounter{NAT@ctr}{0} +\setcounter{currexamplectr}{0} +\setcounter{endexamplectr}{0} +\setcounter{example}{0} +\setcounter{currdefinitionctr}{0} +\setcounter{enddefinitionctr}{0} +\setcounter{definition}{0} +\setcounter{currtheoremctr}{0} +\setcounter{endtheoremctr}{0} +\setcounter{theorem}{0} +\setcounter{section@level}{0} +\setcounter{lstlisting}{0} +\setcounter{romanPage}{3} +} diff --git a/docs/thesis/content/birdmap-backend.aux b/docs/thesis/content/birdmap-backend.aux new file mode 100644 index 0000000..a5e5b12 --- /dev/null +++ b/docs/thesis/content/birdmap-backend.aux @@ -0,0 +1,15 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\@writefile{toc}{\select@language{magyar} \contentsline {chapter}{\numberline {5}Szerver oldal}{14}{chapter.5}\protected@file@percent } +\@writefile{lof}{\select@language{magyar} \addvspace {10\p@ }} +\@writefile{lot}{\select@language{magyar} \addvspace {10\p@ }} +\newlabel{chapt:birdmap-backend}{{5}{14}{Google Maps Api}{chapter.5}{}} +\@writefile{toc}{\select@language{magyar} \contentsline {section}{\numberline {5.1}Architektúra}{14}{section.5.1}\protected@file@percent } +\@writefile{toc}{\select@language{magyar} \contentsline {section}{\numberline {5.2}Adat elérési réteg}{14}{section.5.2}\protected@file@percent } +\citation{nswag} +\@writefile{toc}{\select@language{magyar} \contentsline {subsection}{\numberline {5.2.1}Entitások}{15}{subsection.5.2.1}\protected@file@percent } +\@writefile{lol}{\select@language{magyar} \contentsline {lstlisting}{\numberline {5.1}A User és a Service modell}{15}{lstlisting.5.1}\protected@file@percent } +\@writefile{toc}{\select@language{magyar} \contentsline {subsection}{\numberline {5.2.2}Seedelés}{15}{subsection.5.2.2}\protected@file@percent } +\newlabel{subsect:seeding}{{5.2.2}{15}{Seedelés}{subsection.5.2.2}{}} +\@writefile{toc}{\select@language{magyar} \contentsline {section}{\numberline {5.3}Üzleti logikai réteg}{15}{section.5.3}\protected@file@percent } +\citation{hmacsha512} diff --git a/docs/thesis/content/birdmap-backend.tex b/docs/thesis/content/birdmap-backend.tex index da1b288..55a4f21 100644 --- a/docs/thesis/content/birdmap-backend.tex +++ b/docs/thesis/content/birdmap-backend.tex @@ -87,6 +87,33 @@ Minden jelszóhoz generálok egy egyedi kulcsot és azzal egy hash-t, majd ezeke Amikor egy felhasználó be akar jelentkezni először megvizsgálom, hogy egyáltalán létezik-e az adatbázisban az adott nevű felhasználó, ha igen, akkor a megadott jelszóból az imént említett folyamattal generált kulcsot és hash-t összehasonlítom az adatbázisban tárolttal. +%---------------------------------------------------------------------------- +\subsection{Kommunikációs Szolgáltatások} +%---------------------------------------------------------------------------- +A kliensoldal frissítésére több megoldás is létezik. Például bizonyos időközönként lehetne kéréseket indítani a szerver felé a friss adatok megszerzéséért. +Egy másik megoldás a SignalR használata, amellyel a klienseket eseményvezérelten lehet értesíteni, megvalósítja a kétoldalú kommunikációt. +Így a kliensek csak akkor indítanak kéréseket amikor az adat tényleg változott. Ezzel a technológiával oldottam meg például, hogy az eszközök állapotainak változására +frissüljön a felület. + +Egy másik szerveroldalon használt szolgáltatás a Birdnetes MQTT kommunikációért felelős szolgáltatás, +mely felregisztrál a \ref{subsect:birdnetes-ai-service}-as alfejezetben bemutatott AI Service által publikált üzenetekre. +Ezekben az üzenetekben található a hanganyagok egyedi azonosítója, illetve azok seregélytől való származásának valószínüsége. +Ha a szolgáltatás kap egy ilyen üzenetet akkor lekérdezi a \ref{subsect:birdnetes-input-service}-es alfejezetben bemutatott Input Service-től +a hanganyag azonosítójához tartozó metaadatokat. +Ezekből felhasználva a kihelyezett eszköz azonosítóját, a hanganyag beérkezésének dátumát és az említett valószínüséget új üzenetek készülnek, melyeket egy pufferben tárolódnak. +Ezt a folyamatot a \ref{fig:birdmap-mqtt-service}-es ábra szemlélteti. + +\begin{figure}[!ht] + \centering + \includegraphics[width=150mm, keepaspectratio]{figures/mqtt-communication-sequence.png} + \caption{A Birdmap MQTT szolgáltatásának szekvenciája} + \label{fig:birdmap-mqtt-service} +\end{figure} + +A puffer tartalmát másodperces gyakorisággal elküldöm a klienseknek a SignalR segítségével. +Azért van szükség a puffer használatára, mert az MQTT-n érkezett üzenetek gyakorisága akár miliszekundum nagyságrendű is lehet. +Míg a szerver képes is az üzeneteket feldolgozni, ha ezeket rögtön tovább küldeném a kliensek felé, azok nem biztos, hogy képesek lennének rá. + %---------------------------------------------------------------------------- \section{Megjelenítési réteg} %---------------------------------------------------------------------------- @@ -130,33 +157,6 @@ ahol a végpontok kipróbálhatóak, tesztelhetőek kliensoldal nélkül is. \label{fig:swagger-ui} \end{figure} -%---------------------------------------------------------------------------- -\subsection{Kommunikációs Szolgáltatások} -%---------------------------------------------------------------------------- -A kliensoldal frissítésére több megoldás is létezik. Például bizonyos időközönként lehetne kéréseket indítani a szerver felé a friss adatok megszerzéséért. -Egy másik megoldás a SignalR használata, amellyel a klienseket eseményvezérelten lehet értesíteni, megvalósítja a kétoldalú kommunikációt. -Így a kliensek csak akkor indítanak kéréseket amikor az adat tényleg változott. Ezzel a technológiával oldottam meg például, hogy az eszközök állapotainak változására -frissüljön a felület. - -Egy másik szerveroldalon használt szolgáltatás a Birdnetes MQTT kommunikációért felelős szolgáltatás, -mely felregisztrál a \ref{subsect:birdnetes-ai-service}-as alfejezetben bemutatott AI Service által publikált üzenetekre. -Ezekben az üzenetekben található a hanganyagok egyedi azonosítója, illetve azok seregélytől való származásának valószínüsége. -Ha a szolgáltatás kap egy ilyen üzenetet akkor lekérdezi a \ref{subsect:birdnetes-input-service}-es alfejezetben bemutatott Input Service-től -a hanganyag azonosítójához tartozó metaadatokat. -Ezekből felhasználva a kihelyezett eszköz azonosítóját, a hanganyag beérkezésének dátumát és az említett valószínüséget új üzenetek készülnek, melyeket egy pufferben tárolódnak. -Ezt a folyamatot a \ref{fig:birdmap-mqtt-service}-es ábra szemlélteti. - -\begin{figure}[!ht] - \centering - \includegraphics[width=150mm, keepaspectratio]{figures/mqtt-communication-sequence.png} - \caption{A Birdmap MQTT szolgáltatásának szekvenciája} - \label{fig:birdmap-mqtt-service} -\end{figure} - -A puffer tartalmát másodperces gyakorisággal elküldöm a klienseknek a SignalR segítségével. -Azért van szükség a puffer használatára, mert az MQTT-n érkezett üzenetek gyakorisága akár miliszekundum nagyságrendű is lehet. -Míg a szerver képes is az üzeneteket feldolgozni, ha ezeket rögtön tovább küldeném a kliensek felé, azok nem biztos, hogy képesek lennének rá. - %---------------------------------------------------------------------------- \subsection{Kontrollerek} %---------------------------------------------------------------------------- @@ -180,7 +180,6 @@ Az \verb+Admin+ felhasználók hívhatnak bármilyen végpontot. { ... } - ... } \end{lstlisting} diff --git a/docs/thesis/content/birdmap-introduction.aux b/docs/thesis/content/birdmap-introduction.aux new file mode 100644 index 0000000..5839465 --- /dev/null +++ b/docs/thesis/content/birdmap-introduction.aux @@ -0,0 +1,64 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\citation{kubernetes} +\@writefile{toc}{\select@language{magyar} \contentsline {chapter}{\numberline {3}Tervek és alternatívák}{7}{chapter.3}\protected@file@percent } +\@writefile{lof}{\select@language{magyar} \addvspace {10\p@ }} +\@writefile{lot}{\select@language{magyar} \addvspace {10\p@ }} +\newlabel{chapt:birdmap-introduction}{{3}{7}{Command and Control Service}{chapter.3}{}} +\@writefile{toc}{\select@language{magyar} \contentsline {section}{\numberline {3.1}Tervezés}{7}{section.3.1}\protected@file@percent } +\citation{grafana} +\citation{kibana} +\citation{kubernetes-dashboard} +\@writefile{toc}{\select@language{magyar} \contentsline {section}{\numberline {3.2}Alternatívák}{8}{section.3.2}\protected@file@percent } +\@writefile{toc}{\select@language{magyar} \contentsline {subsection}{\numberline {3.2.1}Grafana}{8}{subsection.3.2.1}\protected@file@percent } +\@writefile{lof}{\select@language{magyar} \contentsline {figure}{\numberline {3.1.}{\ignorespaces A Grafana demo oldalának, a \url {https://play.grafana.org}-nak a felülete\relax }}{8}{figure.caption.5}\protected@file@percent } +\newlabel{fig:grafana}{{3.1}{8}{A Grafana demo oldalának, a \url {https://play.grafana.org}-nak a felülete\relax }{figure.caption.5}{}} +\@writefile{toc}{\select@language{magyar} \contentsline {subsection}{\numberline {3.2.2}Kibana}{8}{subsection.3.2.2}\protected@file@percent } +\@writefile{toc}{\select@language{magyar} \contentsline {subsection}{\numberline {3.2.3}Kubernetes Dashboard (Web UI)}{8}{subsection.3.2.3}\protected@file@percent } +\@writefile{lof}{\select@language{magyar} \contentsline {figure}{\numberline {3.2.}{\ignorespaces Egy példa a Kibana kezelőfelületére\relax }}{9}{figure.caption.6}\protected@file@percent } +\newlabel{fig:kibana}{{3.2}{9}{Egy példa a Kibana kezelőfelületére\relax }{figure.caption.6}{}} +\@writefile{lof}{\select@language{magyar} \contentsline {figure}{\numberline {3.3.}{\ignorespaces A Kubernetes Dashboard felülete\relax }}{9}{figure.caption.7}\protected@file@percent } +\newlabel{fig:kibana}{{3.3}{9}{A Kubernetes Dashboard felülete\relax }{figure.caption.7}{}} +\@setckpt{content/birdmap-introduction}{ +\setcounter{page}{10} +\setcounter{equation}{0} +\setcounter{enumi}{0} +\setcounter{enumii}{0} +\setcounter{enumiii}{0} +\setcounter{enumiv}{0} +\setcounter{footnote}{1} +\setcounter{mpfootnote}{0} +\setcounter{part}{0} +\setcounter{chapter}{3} +\setcounter{section}{2} +\setcounter{subsection}{3} +\setcounter{subsubsection}{0} +\setcounter{paragraph}{0} +\setcounter{subparagraph}{0} +\setcounter{figure}{3} +\setcounter{table}{0} +\setcounter{footnote@add}{0} +\setcounter{footnote@ch}{0} +\setcounter{parentequation}{0} +\setcounter{Item}{0} +\setcounter{Hfootnote}{2} +\setcounter{bookmark@seq@number}{27} +\setcounter{lstnumber}{1} +\setcounter{endNonectr}{4} +\setcounter{currNonectr}{0} +\setcounter{caption@flags}{0} +\setcounter{continuedfloat}{0} +\setcounter{NAT@ctr}{0} +\setcounter{currexamplectr}{0} +\setcounter{endexamplectr}{0} +\setcounter{example}{0} +\setcounter{currdefinitionctr}{0} +\setcounter{enddefinitionctr}{0} +\setcounter{definition}{0} +\setcounter{currtheoremctr}{0} +\setcounter{endtheoremctr}{0} +\setcounter{theorem}{0} +\setcounter{section@level}{2} +\setcounter{lstlisting}{0} +\setcounter{romanPage}{3} +} diff --git a/docs/thesis/content/birdmap-technologies.aux b/docs/thesis/content/birdmap-technologies.aux new file mode 100644 index 0000000..40c2083 --- /dev/null +++ b/docs/thesis/content/birdmap-technologies.aux @@ -0,0 +1,79 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\citation{git} +\citation{trello} +\citation{vs} +\citation{vs-code} +\@writefile{toc}{\select@language{magyar} \contentsline {chapter}{\numberline {4}Használt technológiák}{10}{chapter.4}\protected@file@percent } +\@writefile{lof}{\select@language{magyar} \addvspace {10\p@ }} +\@writefile{lot}{\select@language{magyar} \addvspace {10\p@ }} +\newlabel{chapt:birdmap-technologies}{{4}{10}{Kubernetes Dashboard (Web UI)}{chapter.4}{}} +\@writefile{toc}{\select@language{magyar} \contentsline {section}{\numberline {4.1}A fejlesztési folyamat technológiái}{10}{section.4.1}\protected@file@percent } +\@writefile{toc}{\select@language{magyar} \contentsline {subsection}{\numberline {4.1.1}Git}{10}{subsection.4.1.1}\protected@file@percent } +\@writefile{toc}{\select@language{magyar} \contentsline {subsection}{\numberline {4.1.2}Trello}{10}{subsection.4.1.2}\protected@file@percent } +\@writefile{toc}{\select@language{magyar} \contentsline {subsection}{\numberline {4.1.3}Visual Studio}{10}{subsection.4.1.3}\protected@file@percent } +\@writefile{toc}{\select@language{magyar} \contentsline {subsection}{\numberline {4.1.4}Visual Studio Code}{10}{subsection.4.1.4}\protected@file@percent } +\citation{jwt} +\@writefile{lof}{\select@language{magyar} \contentsline {figure}{\numberline {4.1.}{\ignorespaces Egy példa állapot a Trello felületére a fejlesztés során\relax }}{11}{figure.caption.8}\protected@file@percent } +\newlabel{fig:trello}{{4.1}{11}{Egy példa állapot a Trello felületére a fejlesztés során\relax }{figure.caption.8}{}} +\@writefile{toc}{\select@language{magyar} \contentsline {section}{\numberline {4.2}Backend technológiák}{11}{section.4.2}\protected@file@percent } +\@writefile{toc}{\select@language{magyar} \contentsline {subsection}{\numberline {4.2.1}ASP.NET Core}{11}{subsection.4.2.1}\protected@file@percent } +\@writefile{toc}{\select@language{magyar} \contentsline {subsection}{\numberline {4.2.2}Entity Framework Core}{11}{subsection.4.2.2}\protected@file@percent } +\citation{nlog} +\citation{react} +\citation{material} +\citation{material-ui} +\@writefile{toc}{\select@language{magyar} \contentsline {subsection}{\numberline {4.2.3}JSON Web Token}{12}{subsection.4.2.3}\protected@file@percent } +\@writefile{toc}{\select@language{magyar} \contentsline {subsection}{\numberline {4.2.4}SignalR}{12}{subsection.4.2.4}\protected@file@percent } +\@writefile{toc}{\select@language{magyar} \contentsline {subsection}{\numberline {4.2.5}MQTT.NET}{12}{subsection.4.2.5}\protected@file@percent } +\@writefile{toc}{\select@language{magyar} \contentsline {subsection}{\numberline {4.2.6}NLog}{12}{subsection.4.2.6}\protected@file@percent } +\@writefile{toc}{\select@language{magyar} \contentsline {section}{\numberline {4.3}Frontend technológiák}{12}{section.4.3}\protected@file@percent } +\@writefile{toc}{\select@language{magyar} \contentsline {subsection}{\numberline {4.3.1}React.js}{12}{subsection.4.3.1}\protected@file@percent } +\@writefile{toc}{\select@language{magyar} \contentsline {subsection}{\numberline {4.3.2}Material UI}{12}{subsection.4.3.2}\protected@file@percent } +\citation{apexcharts} +\citation{google-map-react} +\@writefile{toc}{\select@language{magyar} \contentsline {subsection}{\numberline {4.3.3}Apexcharts}{13}{subsection.4.3.3}\protected@file@percent } +\@writefile{toc}{\select@language{magyar} \contentsline {subsection}{\numberline {4.3.4}Google Maps Api}{13}{subsection.4.3.4}\protected@file@percent } +\@setckpt{content/birdmap-technologies}{ +\setcounter{page}{14} +\setcounter{equation}{0} +\setcounter{enumi}{0} +\setcounter{enumii}{0} +\setcounter{enumiii}{0} +\setcounter{enumiv}{0} +\setcounter{footnote}{0} +\setcounter{mpfootnote}{0} +\setcounter{part}{0} +\setcounter{chapter}{4} +\setcounter{section}{3} +\setcounter{subsection}{4} +\setcounter{subsubsection}{0} +\setcounter{paragraph}{0} +\setcounter{subparagraph}{0} +\setcounter{figure}{1} +\setcounter{table}{0} +\setcounter{footnote@add}{0} +\setcounter{footnote@ch}{0} +\setcounter{parentequation}{0} +\setcounter{Item}{0} +\setcounter{Hfootnote}{2} +\setcounter{bookmark@seq@number}{45} +\setcounter{lstnumber}{1} +\setcounter{endNonectr}{4} +\setcounter{currNonectr}{0} +\setcounter{caption@flags}{0} +\setcounter{continuedfloat}{0} +\setcounter{NAT@ctr}{0} +\setcounter{currexamplectr}{0} +\setcounter{endexamplectr}{0} +\setcounter{example}{0} +\setcounter{currdefinitionctr}{0} +\setcounter{enddefinitionctr}{0} +\setcounter{definition}{0} +\setcounter{currtheoremctr}{0} +\setcounter{endtheoremctr}{0} +\setcounter{theorem}{0} +\setcounter{section@level}{2} +\setcounter{lstlisting}{0} +\setcounter{romanPage}{3} +} diff --git a/docs/thesis/content/birdnetes-introduction.aux b/docs/thesis/content/birdnetes-introduction.aux new file mode 100644 index 0000000..79142e0 --- /dev/null +++ b/docs/thesis/content/birdnetes-introduction.aux @@ -0,0 +1,72 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\citation{birdnetes-tdk} +\@writefile{toc}{\select@language{magyar} \contentsline {chapter}{\numberline {2}A Birdnetes bemutatása}{3}{chapter.2}\protected@file@percent } +\@writefile{lof}{\select@language{magyar} \addvspace {10\p@ }} +\@writefile{lot}{\select@language{magyar} \addvspace {10\p@ }} +\newlabel{chapt:birdnetes-introduction}{{2}{3}{A szakdolgozat felépítése}{chapter.2}{}} +\@writefile{toc}{\select@language{magyar} \contentsline {section}{\numberline {2.1}Gyors elméleti összefoglaló}{3}{section.2.1}\protected@file@percent } +\@writefile{toc}{\select@language{magyar} \contentsline {subsection}{\numberline {2.1.1}Cloud, felhő}{3}{subsection.2.1.1}\protected@file@percent } +\citation{docker} +\citation{kubernetes} +\@writefile{toc}{\select@language{magyar} \contentsline {subsubsection}{\numberline {2.1.1.1}Mikroszolgáltatások}{4}{subsubsection.2.1.1.1}\protected@file@percent } +\@writefile{toc}{\select@language{magyar} \contentsline {subsubsection}{\numberline {2.1.1.2}Konténerek}{4}{subsubsection.2.1.1.2}\protected@file@percent } +\@writefile{toc}{\select@language{magyar} \contentsline {subsubsection}{\numberline {2.1.1.3}Kubernetes}{4}{subsubsection.2.1.1.3}\protected@file@percent } +\@writefile{toc}{\select@language{magyar} \contentsline {subsection}{\numberline {2.1.2}MQTT}{4}{subsection.2.1.2}\protected@file@percent } +\newlabel{subsect:mqtt}{{2.1.2}{4}{MQTT}{subsection.2.1.2}{}} +\@writefile{toc}{\select@language{magyar} \contentsline {subsection}{\numberline {2.1.3}Open API}{4}{subsection.2.1.3}\protected@file@percent } +\@writefile{toc}{\select@language{magyar} \contentsline {section}{\numberline {2.2}Rendszerszintű architektúra}{5}{section.2.2}\protected@file@percent } +\@writefile{toc}{\select@language{magyar} \contentsline {subsection}{\numberline {2.2.1}Főbb komponensek}{5}{subsection.2.2.1}\protected@file@percent } +\@writefile{lof}{\select@language{magyar} \contentsline {figure}{\numberline {2.1.}{\ignorespaces A Birdnetes rendszer architektúrája\relax }}{5}{figure.caption.4}\protected@file@percent } +\providecommand*\caption@xref[2]{\@setref\relax\@undefined{#1}} +\newlabel{fig:birdnetes-components}{{2.1}{5}{A Birdnetes rendszer architektúrája\relax }{figure.caption.4}{}} +\@writefile{toc}{\select@language{magyar} \contentsline {subsubsection}{\numberline {2.2.1.1}IoT eszközök}{5}{subsubsection.2.2.1.1}\protected@file@percent } +\@writefile{toc}{\select@language{magyar} \contentsline {subsubsection}{\numberline {2.2.1.2}Input Service}{6}{subsubsection.2.2.1.2}\protected@file@percent } +\newlabel{subsect:birdnetes-input-service}{{2.2.1.2}{6}{Input Service}{subsubsection.2.2.1.2}{}} +\@writefile{toc}{\select@language{magyar} \contentsline {subsubsection}{\numberline {2.2.1.3}AI Service}{6}{subsubsection.2.2.1.3}\protected@file@percent } +\newlabel{subsect:birdnetes-ai-service}{{2.2.1.3}{6}{AI Service}{subsubsection.2.2.1.3}{}} +\@writefile{toc}{\select@language{magyar} \contentsline {subsubsection}{\numberline {2.2.1.4}Guard Service}{6}{subsubsection.2.2.1.4}\protected@file@percent } +\@writefile{toc}{\select@language{magyar} \contentsline {subsubsection}{\numberline {2.2.1.5}Command and Control Service}{6}{subsubsection.2.2.1.5}\protected@file@percent } +\@setckpt{content/birdnetes-introduction}{ +\setcounter{page}{7} +\setcounter{equation}{0} +\setcounter{enumi}{0} +\setcounter{enumii}{0} +\setcounter{enumiii}{0} +\setcounter{enumiv}{0} +\setcounter{footnote}{1} +\setcounter{mpfootnote}{0} +\setcounter{part}{0} +\setcounter{chapter}{2} +\setcounter{section}{2} +\setcounter{subsection}{1} +\setcounter{subsubsection}{5} +\setcounter{paragraph}{0} +\setcounter{subparagraph}{0} +\setcounter{figure}{1} +\setcounter{table}{0} +\setcounter{footnote@add}{0} +\setcounter{footnote@ch}{0} +\setcounter{parentequation}{0} +\setcounter{Item}{0} +\setcounter{Hfootnote}{1} +\setcounter{bookmark@seq@number}{21} +\setcounter{lstnumber}{1} +\setcounter{endNonectr}{3} +\setcounter{currNonectr}{0} +\setcounter{caption@flags}{0} +\setcounter{continuedfloat}{0} +\setcounter{NAT@ctr}{0} +\setcounter{currexamplectr}{0} +\setcounter{endexamplectr}{0} +\setcounter{example}{0} +\setcounter{currdefinitionctr}{0} +\setcounter{enddefinitionctr}{0} +\setcounter{definition}{0} +\setcounter{currtheoremctr}{0} +\setcounter{endtheoremctr}{0} +\setcounter{theorem}{0} +\setcounter{section@level}{3} +\setcounter{lstlisting}{0} +\setcounter{romanPage}{3} +} diff --git a/docs/thesis/content/introduction.aux b/docs/thesis/content/introduction.aux new file mode 100644 index 0000000..4542b06 --- /dev/null +++ b/docs/thesis/content/introduction.aux @@ -0,0 +1,51 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\@writefile{toc}{\select@language{magyar} \contentsline {chapter}{\numberline {1}Bevezetés}{1}{chapter.1}\protected@file@percent } +\@writefile{lof}{\select@language{magyar} \addvspace {10\p@ }} +\@writefile{lot}{\select@language{magyar} \addvspace {10\p@ }} +\@writefile{toc}{\select@language{magyar} \contentsline {section}{\numberline {1.1}A probléma}{1}{section.1.1}\protected@file@percent } +\@writefile{toc}{\select@language{magyar} \contentsline {section}{\numberline {1.2}A megoldás}{1}{section.1.2}\protected@file@percent } +\@writefile{toc}{\select@language{magyar} \contentsline {section}{\numberline {1.3}A szakdolgozat felépítése}{2}{section.1.3}\protected@file@percent } +\@setckpt{content/introduction}{ +\setcounter{page}{3} +\setcounter{equation}{0} +\setcounter{enumi}{0} +\setcounter{enumii}{0} +\setcounter{enumiii}{0} +\setcounter{enumiv}{0} +\setcounter{footnote}{0} +\setcounter{mpfootnote}{0} +\setcounter{part}{0} +\setcounter{chapter}{1} +\setcounter{section}{3} +\setcounter{subsection}{0} +\setcounter{subsubsection}{0} +\setcounter{paragraph}{0} +\setcounter{subparagraph}{0} +\setcounter{figure}{0} +\setcounter{table}{0} +\setcounter{footnote@add}{0} +\setcounter{footnote@ch}{0} +\setcounter{parentequation}{0} +\setcounter{Item}{0} +\setcounter{Hfootnote}{0} +\setcounter{bookmark@seq@number}{6} +\setcounter{lstnumber}{1} +\setcounter{endNonectr}{2} +\setcounter{currNonectr}{0} +\setcounter{caption@flags}{0} +\setcounter{continuedfloat}{0} +\setcounter{NAT@ctr}{0} +\setcounter{currexamplectr}{0} +\setcounter{endexamplectr}{0} +\setcounter{example}{0} +\setcounter{currdefinitionctr}{0} +\setcounter{enddefinitionctr}{0} +\setcounter{definition}{0} +\setcounter{currtheoremctr}{0} +\setcounter{endtheoremctr}{0} +\setcounter{theorem}{0} +\setcounter{section@level}{1} +\setcounter{lstlisting}{0} +\setcounter{romanPage}{3} +} diff --git a/docs/thesis/include/declaration.aux b/docs/thesis/include/declaration.aux new file mode 100644 index 0000000..7d7fd29 --- /dev/null +++ b/docs/thesis/include/declaration.aux @@ -0,0 +1,44 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\@setckpt{include/declaration}{ +\setcounter{page}{2} +\setcounter{equation}{0} +\setcounter{enumi}{0} +\setcounter{enumii}{0} +\setcounter{enumiii}{0} +\setcounter{enumiv}{0} +\setcounter{footnote}{0} +\setcounter{mpfootnote}{0} +\setcounter{part}{0} +\setcounter{chapter}{0} +\setcounter{section}{0} +\setcounter{subsection}{0} +\setcounter{subsubsection}{0} +\setcounter{paragraph}{0} +\setcounter{subparagraph}{0} +\setcounter{figure}{0} +\setcounter{table}{0} +\setcounter{footnote@add}{0} +\setcounter{footnote@ch}{0} +\setcounter{parentequation}{0} +\setcounter{Item}{0} +\setcounter{Hfootnote}{0} +\setcounter{bookmark@seq@number}{0} +\setcounter{lstnumber}{1} +\setcounter{endNonectr}{2} +\setcounter{currNonectr}{0} +\setcounter{caption@flags}{0} +\setcounter{continuedfloat}{0} +\setcounter{NAT@ctr}{0} +\setcounter{currexamplectr}{0} +\setcounter{endexamplectr}{0} +\setcounter{example}{0} +\setcounter{currdefinitionctr}{0} +\setcounter{enddefinitionctr}{0} +\setcounter{definition}{0} +\setcounter{currtheoremctr}{0} +\setcounter{endtheoremctr}{0} +\setcounter{theorem}{0} +\setcounter{section@level}{0} +\setcounter{lstlisting}{0} +} diff --git a/docs/thesis/include/titlepage.aux b/docs/thesis/include/titlepage.aux new file mode 100644 index 0000000..cfbd9bd --- /dev/null +++ b/docs/thesis/include/titlepage.aux @@ -0,0 +1,44 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\@setckpt{include/titlepage}{ +\setcounter{page}{1} +\setcounter{equation}{0} +\setcounter{enumi}{0} +\setcounter{enumii}{0} +\setcounter{enumiii}{0} +\setcounter{enumiv}{0} +\setcounter{footnote}{0} +\setcounter{mpfootnote}{0} +\setcounter{part}{0} +\setcounter{chapter}{0} +\setcounter{section}{0} +\setcounter{subsection}{0} +\setcounter{subsubsection}{0} +\setcounter{paragraph}{0} +\setcounter{subparagraph}{0} +\setcounter{figure}{0} +\setcounter{table}{0} +\setcounter{footnote@add}{0} +\setcounter{footnote@ch}{0} +\setcounter{parentequation}{0} +\setcounter{Item}{0} +\setcounter{Hfootnote}{0} +\setcounter{bookmark@seq@number}{0} +\setcounter{lstnumber}{1} +\setcounter{endNonectr}{1} +\setcounter{currNonectr}{0} +\setcounter{caption@flags}{0} +\setcounter{continuedfloat}{0} +\setcounter{NAT@ctr}{0} +\setcounter{currexamplectr}{0} +\setcounter{endexamplectr}{0} +\setcounter{example}{0} +\setcounter{currdefinitionctr}{0} +\setcounter{enddefinitionctr}{0} +\setcounter{definition}{0} +\setcounter{currtheoremctr}{0} +\setcounter{endtheoremctr}{0} +\setcounter{theorem}{0} +\setcounter{section@level}{0} +\setcounter{lstlisting}{0} +} diff --git a/docs/thesis/thesis.aux b/docs/thesis/thesis.aux new file mode 100644 index 0000000..2bd1f13 --- /dev/null +++ b/docs/thesis/thesis.aux @@ -0,0 +1,30 @@ +\relax +\providecommand\hyper@newdestlabel[2]{} +\providecommand\babel@aux[2]{} +\@nameuse{bbl@beforestart} +\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument} +\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined +\global\let\oldcontentsline\contentsline +\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}} +\global\let\oldnewlabel\newlabel +\gdef\newlabel#1#2{\newlabelxx{#1}#2} +\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}} +\AtEndDocument{\ifx\hyper@anchor\@undefined +\let\contentsline\oldcontentsline +\let\newlabel\oldnewlabel +\fi} +\fi} +\global\let\hyper@last\relax +\gdef\HyperFirstAtBeginDocument#1{#1} +\providecommand\HyField@AuxAddToFields[1]{} +\providecommand\HyField@AuxAddToCoFields[2]{} +\bibstyle{huplain} +\catcode \string ``=12 +\@input{include/titlepage.aux} +\@input{include/declaration.aux} +\@input{content/abstract.aux} +\@input{content/introduction.aux} +\@input{content/birdnetes-introduction.aux} +\@input{content/birdmap-introduction.aux} +\@input{content/birdmap-technologies.aux} +\@input{content/birdmap-backend.aux} diff --git a/docs/thesis/thesis.out b/docs/thesis/thesis.out new file mode 100644 index 0000000..3b31004 --- /dev/null +++ b/docs/thesis/thesis.out @@ -0,0 +1,51 @@ +\BOOKMARK [0][-]{chapter*.2}{\376\377\000K\000i\000v\000o\000n\000a\000t}{}% 1 +\BOOKMARK [0][-]{chapter*.3}{\376\377\000A\000b\000s\000t\000r\000a\000c\000t}{}% 2 +\BOOKMARK [0][-]{chapter.1}{\376\377\000B\000e\000v\000e\000z\000e\000t\000\351\000s}{}% 3 +\BOOKMARK [1][-]{section.1.1}{\376\377\000A\000\040\000p\000r\000o\000b\000l\000\351\000m\000a}{chapter.1}% 4 +\BOOKMARK [1][-]{section.1.2}{\376\377\000A\000\040\000m\000e\000g\000o\000l\000d\000\341\000s}{chapter.1}% 5 +\BOOKMARK [1][-]{section.1.3}{\376\377\000A\000\040\000s\000z\000a\000k\000d\000o\000l\000g\000o\000z\000a\000t\000\040\000f\000e\000l\000\351\000p\000\355\000t\000\351\000s\000e}{chapter.1}% 6 +\BOOKMARK [0][-]{chapter.2}{\376\377\000A\000\040\000B\000i\000r\000d\000n\000e\000t\000e\000s\000\040\000b\000e\000m\000u\000t\000a\000t\000\341\000s\000a}{}% 7 +\BOOKMARK [1][-]{section.2.1}{\376\377\000G\000y\000o\000r\000s\000\040\000e\000l\000m\000\351\000l\000e\000t\000i\000\040\000\366\000s\000s\000z\000e\000f\000o\000g\000l\000a\000l\000\363}{chapter.2}% 8 +\BOOKMARK [2][-]{subsection.2.1.1}{\376\377\000C\000l\000o\000u\000d\000,\000\040\000f\000e\000l\000h\001\121}{section.2.1}% 9 +\BOOKMARK [3][-]{subsubsection.2.1.1.1}{\376\377\000M\000i\000k\000r\000o\000s\000z\000o\000l\000g\000\341\000l\000t\000a\000t\000\341\000s\000o\000k}{subsection.2.1.1}% 10 +\BOOKMARK [3][-]{subsubsection.2.1.1.2}{\376\377\000K\000o\000n\000t\000\351\000n\000e\000r\000e\000k}{subsection.2.1.1}% 11 +\BOOKMARK [3][-]{subsubsection.2.1.1.3}{\376\377\000K\000u\000b\000e\000r\000n\000e\000t\000e\000s}{subsection.2.1.1}% 12 +\BOOKMARK [2][-]{subsection.2.1.2}{\376\377\000M\000Q\000T\000T}{section.2.1}% 13 +\BOOKMARK [2][-]{subsection.2.1.3}{\376\377\000O\000p\000e\000n\000\040\000A\000P\000I}{section.2.1}% 14 +\BOOKMARK [1][-]{section.2.2}{\376\377\000R\000e\000n\000d\000s\000z\000e\000r\000s\000z\000i\000n\000t\001\161\000\040\000a\000r\000c\000h\000i\000t\000e\000k\000t\000\372\000r\000a}{chapter.2}% 15 +\BOOKMARK [2][-]{subsection.2.2.1}{\376\377\000F\001\121\000b\000b\000\040\000k\000o\000m\000p\000o\000n\000e\000n\000s\000e\000k}{section.2.2}% 16 +\BOOKMARK [3][-]{subsubsection.2.2.1.1}{\376\377\000I\000o\000T\000\040\000e\000s\000z\000k\000\366\000z\000\366\000k}{subsection.2.2.1}% 17 +\BOOKMARK [3][-]{subsubsection.2.2.1.2}{\376\377\000I\000n\000p\000u\000t\000\040\000S\000e\000r\000v\000i\000c\000e}{subsection.2.2.1}% 18 +\BOOKMARK [3][-]{subsubsection.2.2.1.3}{\376\377\000A\000I\000\040\000S\000e\000r\000v\000i\000c\000e}{subsection.2.2.1}% 19 +\BOOKMARK [3][-]{subsubsection.2.2.1.4}{\376\377\000G\000u\000a\000r\000d\000\040\000S\000e\000r\000v\000i\000c\000e}{subsection.2.2.1}% 20 +\BOOKMARK [3][-]{subsubsection.2.2.1.5}{\376\377\000C\000o\000m\000m\000a\000n\000d\000\040\000a\000n\000d\000\040\000C\000o\000n\000t\000r\000o\000l\000\040\000S\000e\000r\000v\000i\000c\000e}{subsection.2.2.1}% 21 +\BOOKMARK [0][-]{chapter.3}{\376\377\000T\000e\000r\000v\000e\000k\000\040\000\351\000s\000\040\000a\000l\000t\000e\000r\000n\000a\000t\000\355\000v\000\341\000k}{}% 22 +\BOOKMARK [1][-]{section.3.1}{\376\377\000T\000e\000r\000v\000e\000z\000\351\000s}{chapter.3}% 23 +\BOOKMARK [1][-]{section.3.2}{\376\377\000A\000l\000t\000e\000r\000n\000a\000t\000\355\000v\000\341\000k}{chapter.3}% 24 +\BOOKMARK [2][-]{subsection.3.2.1}{\376\377\000G\000r\000a\000f\000a\000n\000a}{section.3.2}% 25 +\BOOKMARK [2][-]{subsection.3.2.2}{\376\377\000K\000i\000b\000a\000n\000a}{section.3.2}% 26 +\BOOKMARK [2][-]{subsection.3.2.3}{\376\377\000K\000u\000b\000e\000r\000n\000e\000t\000e\000s\000\040\000D\000a\000s\000h\000b\000o\000a\000r\000d\000\040\000\050\000W\000e\000b\000\040\000U\000I\000\051}{section.3.2}% 27 +\BOOKMARK [0][-]{chapter.4}{\376\377\000H\000a\000s\000z\000n\000\341\000l\000t\000\040\000t\000e\000c\000h\000n\000o\000l\000\363\000g\000i\000\341\000k}{}% 28 +\BOOKMARK [1][-]{section.4.1}{\376\377\000A\000\040\000f\000e\000j\000l\000e\000s\000z\000t\000\351\000s\000i\000\040\000f\000o\000l\000y\000a\000m\000a\000t\000\040\000t\000e\000c\000h\000n\000o\000l\000\363\000g\000i\000\341\000i}{chapter.4}% 29 +\BOOKMARK [2][-]{subsection.4.1.1}{\376\377\000G\000i\000t}{section.4.1}% 30 +\BOOKMARK [2][-]{subsection.4.1.2}{\376\377\000T\000r\000e\000l\000l\000o}{section.4.1}% 31 +\BOOKMARK [2][-]{subsection.4.1.3}{\376\377\000V\000i\000s\000u\000a\000l\000\040\000S\000t\000u\000d\000i\000o}{section.4.1}% 32 +\BOOKMARK [2][-]{subsection.4.1.4}{\376\377\000V\000i\000s\000u\000a\000l\000\040\000S\000t\000u\000d\000i\000o\000\040\000C\000o\000d\000e}{section.4.1}% 33 +\BOOKMARK [1][-]{section.4.2}{\376\377\000B\000a\000c\000k\000e\000n\000d\000\040\000t\000e\000c\000h\000n\000o\000l\000\363\000g\000i\000\341\000k}{chapter.4}% 34 +\BOOKMARK [2][-]{subsection.4.2.1}{\376\377\000A\000S\000P\000.\000N\000E\000T\000\040\000C\000o\000r\000e}{section.4.2}% 35 +\BOOKMARK [2][-]{subsection.4.2.2}{\376\377\000E\000n\000t\000i\000t\000y\000\040\000F\000r\000a\000m\000e\000w\000o\000r\000k\000\040\000C\000o\000r\000e}{section.4.2}% 36 +\BOOKMARK [2][-]{subsection.4.2.3}{\376\377\000J\000S\000O\000N\000\040\000W\000e\000b\000\040\000T\000o\000k\000e\000n}{section.4.2}% 37 +\BOOKMARK [2][-]{subsection.4.2.4}{\376\377\000S\000i\000g\000n\000a\000l\000R}{section.4.2}% 38 +\BOOKMARK [2][-]{subsection.4.2.5}{\376\377\000M\000Q\000T\000T\000.\000N\000E\000T}{section.4.2}% 39 +\BOOKMARK [2][-]{subsection.4.2.6}{\376\377\000N\000L\000o\000g}{section.4.2}% 40 +\BOOKMARK [1][-]{section.4.3}{\376\377\000F\000r\000o\000n\000t\000e\000n\000d\000\040\000t\000e\000c\000h\000n\000o\000l\000\363\000g\000i\000\341\000k}{chapter.4}% 41 +\BOOKMARK [2][-]{subsection.4.3.1}{\376\377\000R\000e\000a\000c\000t\000.\000j\000s}{section.4.3}% 42 +\BOOKMARK [2][-]{subsection.4.3.2}{\376\377\000M\000a\000t\000e\000r\000i\000a\000l\000\040\000U\000I}{section.4.3}% 43 +\BOOKMARK [2][-]{subsection.4.3.3}{\376\377\000A\000p\000e\000x\000c\000h\000a\000r\000t\000s}{section.4.3}% 44 +\BOOKMARK [2][-]{subsection.4.3.4}{\376\377\000G\000o\000o\000g\000l\000e\000\040\000M\000a\000p\000s\000\040\000A\000p\000i}{section.4.3}% 45 +\BOOKMARK [0][-]{chapter.5}{\376\377\000S\000z\000e\000r\000v\000e\000r\000\040\000o\000l\000d\000a\000l}{}% 46 +\BOOKMARK [1][-]{section.5.1}{\376\377\000A\000r\000c\000h\000i\000t\000e\000k\000t\000\372\000r\000a}{chapter.5}% 47 +\BOOKMARK [1][-]{section.5.2}{\376\377\000A\000d\000a\000t\000\040\000e\000l\000\351\000r\000\351\000s\000i\000\040\000r\000\351\000t\000e\000g}{chapter.5}% 48 +\BOOKMARK [2][-]{subsection.5.2.1}{\376\377\000E\000n\000t\000i\000t\000\341\000s\000o\000k}{section.5.2}% 49 +\BOOKMARK [2][-]{subsection.5.2.2}{\376\377\000S\000e\000e\000d\000e\000l\000\351\000s}{section.5.2}% 50 +\BOOKMARK [1][-]{section.5.3}{\376\377\000\334\000z\000l\000e\000t\000i\000\040\000l\000o\000g\000i\000k\000a\000i\000\040\000r\000\351\000t\000e\000g}{chapter.5}% 51 diff --git a/docs/thesis/thesis.pdf b/docs/thesis/thesis.pdf index 249b6c0..8d98905 100644 Binary files a/docs/thesis/thesis.pdf and b/docs/thesis/thesis.pdf differ diff --git a/docs/thesis/thesis.toc b/docs/thesis/thesis.toc new file mode 100644 index 0000000..e69de29