2023-01-02 11:42:39 +01:00
|
|
|
\chapter{Stand der Technik}
|
|
|
|
\label{chap:stand-der-technik}
|
2023-01-20 02:45:55 +01:00
|
|
|
Der Stand der Technik bezieht sich auf bestehende praktische Umsetzungen der erforderlichen Technologien.
|
2023-01-23 18:16:52 +01:00
|
|
|
Im Wesentlichen gibt es zwei Arten von Technologien, die untersucht werden müssen: Die bestehende Website von \ac{WM} und
|
|
|
|
eine PHP-Bibliothek zur Erzeugung von QR-Codes.
|
2023-01-20 02:45:55 +01:00
|
|
|
|
|
|
|
\section{Die bestehende Webseite}
|
|
|
|
Als Mitentwickler des Projektes ist dem Author dieser Ausarbeitung bekannt, dass die bestehende Webseite von
|
2023-01-20 10:18:56 +01:00
|
|
|
\ac{WM} ein TYPO3-Redaktionssystem ist. Das Frontend der Webseite wird mit Webpack und Sass übersetzt.
|
2023-01-20 02:45:55 +01:00
|
|
|
Webpack ist ein Modulbundler \cite{bib:smashmagazine-webpack} und Sass ein CSS-Präprozessor \cite{bib:w3schools-sass}.
|
2023-01-20 10:18:56 +01:00
|
|
|
|
|
|
|
\section{QR-Codes erstellen}
|
|
|
|
Um mit QR-Codes zu arbeiten, ist es unabdinglich, QR-Codes zu erstellen, da dieselben sonst nicht vorhanden sind.
|
|
|
|
Prinzipiell gibt es zwei Möglichkeiten QR-Codes zu erstellen: Auf Browserseite in JavaScript und auf Serverseite in PHP.
|
|
|
|
Das ist so, da es lediglich diese zwei Domänen gibt.
|
|
|
|
|
|
|
|
\subsection*{Javascript-Implementationen}
|
|
|
|
\subsubsection*{jquery-qrcode}
|
|
|
|
\textit{jquery-qrcode} ist ein Plugin für JQuery um dynamisch QR-Codes auf Browserseite zu generieren.
|
|
|
|
Jedoch verweist diese Bibliothek selbst auf ihren desolaten Zustand und empfielt stattdessen \enquote{kjua} zu verwenden
|
|
|
|
\cite{bib:larsjung-jquery-qrcode}. Somit scheidet jquery-qrcode für nähere Evaluationen aus, da die Software nicht mehr
|
2023-01-23 18:16:52 +01:00
|
|
|
gepflegt wird. \textit{jquery-qrcode} wurde bis zum heutigen Tage 853 mal von Nutzern mit einem Stern
|
|
|
|
markiert \cite{bib:larsjung-jquery-qrcode}.
|
|
|
|
Wenn ein Nutzer ein Github-Repository mit einem Stern markiert, interessiert sich der Nutzer weit genug,
|
|
|
|
um über Neuigkeiten auf dem Laufenden gehalten werden zu wollen \cite{bib:github-stars}.
|
2023-01-20 10:18:56 +01:00
|
|
|
|
|
|
|
\subsubsection*{kjua}
|
|
|
|
\textit{Kjua} ist eine Javascript-Bibliothek, um dynamisch QR-Codes auf Browserseite zu generieren.
|
|
|
|
Im Gegensatz zu \textit{jquery-qrcode} funktioniert Kjua auch ohne JQuery. Es werden diverse Stilattribute für gestaltete
|
|
|
|
QR-Codes unterstützt \cite{bib:larsjung-kjua}. Kjua setzt QR-Codes über HTML-Canvas um. Das ist bei näherer Betrachtung
|
|
|
|
der Kjua Tech Demo \enpointy{https://larsjung.de/kjua/latest/demo} ersichtlich, jedoch nicht explizit erwähnt.
|
2023-01-23 18:16:52 +01:00
|
|
|
Nach dem aktuellen Stand wurde Kjua von 243 Nutzern mit einem Stern markiert \cite{bib:larsjung-kjua}.
|
2023-01-20 10:18:56 +01:00
|
|
|
|
|
|
|
\subsubsection*{soldair/node-qrcode}
|
|
|
|
\textit{Soldair/node-qrcode} ist eine node.js-basierte Implementation eines QR-Code Generators und bietet somit Funktionialität
|
|
|
|
serverseitig, als CLI, sowohl als auch Browserseitig an. Die Readme-Datei zeugt von Länge, ist reich an Beispielen
|
|
|
|
und detailreichen Erklärungen. Der letzte Commit ist zu diesem Zeitpunkt knapp älter als ein halbes Jahr. Somit macht das
|
|
|
|
Projekt einen moderat gepflegten Eindruck. Die Readme-Datei verweist auf Unit Tests bei Travis, jedoch lief die letzte Pipeline
|
|
|
|
vor circa zwei Jahren, Februar 2021, durch und schlug zudem fehl. Einige Pull-Requests und Issues werden seit Jahren ignoriert
|
|
|
|
\cite{bib:soldair-node-qrcode}.
|
2023-01-23 18:16:52 +01:00
|
|
|
Die Bibliothek wurde 74 Millionen mal heruntergeladen mit 6308 Sternen markiert \cite{bib:npmjs-soldair-node-qrcode}.
|
2023-01-20 10:18:56 +01:00
|
|
|
|
|
|
|
\subsection*{PHP-Implementationen}
|
|
|
|
\subsubsection*{chillerlan/php-qrcode}
|
|
|
|
Eine arrivierte Lösung für QR-Code Generierung in PHP ist \textit{chillerlan/php-qrcode}, umgesetzt durch
|
|
|
|
Eugen Rochko und weitere. Das zeigt sich durch den zu diesem Zeitpunkt auf 5 Millionen stehenden Downloadzähler,
|
|
|
|
mehrere Entwickler und den letzten Commit, der zu diesem Zeitpunk nicht älter als einen Monat alt ist.
|
|
|
|
Insgesamt erfolgten bis dato 808 Commits von 6 Entwicklern. Das Projekt verfügt über Unit-Tests,
|
|
|
|
die 90\% der Zeilen in der Codebase abdecken. Rochko übernahm Teile der Codebase aus
|
|
|
|
dem Java-Projekt \enquote{ZXing} und übersetzte diese zu PHP.
|
|
|
|
Issues und Pull Requests sind alle bearbeitet. Es gibt keine unbeantworteten Issues oder Pull-Requests.
|
|
|
|
\textit{chillerlan/php-qrcode} basiert auf einer angepassten Version von \textit{kazuhikoarase/qrcode-generator}.
|
2023-01-23 18:16:52 +01:00
|
|
|
Einzig auffällig sind die Commitnachrichten, die zuteils nur aus einem (1) Emoji bestehen.
|
|
|
|
\textit{chillerlan/php-qrcode} wurde von 1212 Github-Nutzern mit einem Stern markiert
|
2023-01-20 10:18:56 +01:00
|
|
|
\cite{bib:chillerlan-php-qrcode}.
|
2023-01-23 18:16:52 +01:00
|
|
|
|
|
|
|
\subsubsection*{kreativekorp/barcode}
|
|
|
|
\textit{kreativekorp/barcode} ist eine PHP-Bibliothek zur Generierung von QR-Codes, bereitgestellt von
|
|
|
|
\textit{Kreative Software}, R.G. Bettencourt.
|
|
|
|
Diese Implementation umfasst eine Vielzahl an Barcode-Formaten und unterstützt eine Vielzahl an Anpassungsmöglichkeiten.
|
|
|
|
Das Projekt wurde bis zum heutigen Tage 189 mal mit einem Stern markiert \cite{bib:kreativkorp-barcode}.
|
|
|
|
Die letzte Codeänderung dieses Projektes ist auf 2018 datiert \cite{bib:kreativkorp-barcode}. Das liegt zu diesem Zeitpunkt
|
|
|
|
vier Jahre in der Vergangenheit. Vier von den sechs Commits erfolgten innerhalb von zwei Tagen in 2016. Ein weiterer
|
|
|
|
Commit erfolte wenige Tage später. Der aktuellste Commit wurde knapp zwei Jahre später, 2018, veröffentlicht.
|
|
|
|
Damit ist diese Bibliothek de-facto sechseinhalb Jahre alt und wurde seitdem ein mal um Featuers erweitert
|
|
|
|
\cite{bib:kreativkorp-barcode}.
|
2023-01-26 09:20:44 +01:00
|
|
|
|
|
|
|
% Hiervor muss unbedingt die RE analyse!
|
|
|
|
\subsection*{Vergleich in Bezug auf die Problemstellung}
|
|
|
|
Um eine Bibliothek als \enquote{die Beste} für einen Anwendungsfall zu kurieren,
|
|
|
|
müssen die konkreten Anforderungen und Constraints für diesen Anwendungsfall beachtet werden.
|
|
|
|
Das ist so, da verschiedene Eigenschaften der Bibliotheken verschiedene Auswirkung in Gewichtung und Richtung
|
|
|
|
je nach Anwendungsfall aufweisen.
|
|
|
|
Hierfür werden die zuvor vorgestellten Bibliotheken zur Erstellung von QR-Codes in den folgenden Attributen gegenübergestellt:
|
|
|
|
\begin{description}
|
|
|
|
\item [Funktionialität] \hfill \\
|
|
|
|
Der Umfang der für diese Problemstellung relevanten Funktionen in Annahme dessen, dass die Bibliothek
|
|
|
|
syntaktisch und pragmatisch korrekt \cite{bib:heinemann-vorlesung-re} funktioniert.
|
|
|
|
|
|
|
|
\item [Gepflegtheit] \hfill \\
|
|
|
|
Das Ausmaß, in dem das Projekt aktiv gepflegt und ordnungsgemäß entwickelt zu sein scheint.
|
|
|
|
Hierzu zählen beispielsweise: Bearbeitung von Issues, Bearbeitung von Pull-Requests, Präsenz von Tests,
|
|
|
|
Präsenz einer angemessenen Dokumentation, häufige Commits, mehr als nur ein Contributor, Anzahl der
|
|
|
|
Sterne auf Github (Ausmaß an tieferem, öffentlichem Interesse \cite{bib:github-stars}), sowie der Anzahl der
|
|
|
|
Downloads bzw Installationen, falls verfügbar.
|
|
|
|
|
|
|
|
\item [Workflow-Eignung] \hfill \\
|
|
|
|
Die Eignung einer Bibliothek in existierende Workflows und Constraints übernommen zu werden.
|
|
|
|
\end{description}
|