Daily CheckIn
This commit is contained in:
parent
fbc6ae8b15
commit
a7c68c3fce
10 changed files with 156 additions and 19 deletions
17
.vscode/settings.json
vendored
Normal file
17
.vscode/settings.json
vendored
Normal file
|
@ -0,0 +1,17 @@
|
||||||
|
{
|
||||||
|
"cSpell.language": "de-de,en",
|
||||||
|
"cSpell.words": [
|
||||||
|
"Glassfish",
|
||||||
|
"autovacuum",
|
||||||
|
"editionswissenschaftlich",
|
||||||
|
"EFFW",
|
||||||
|
"Fouine",
|
||||||
|
"freigeschalten",
|
||||||
|
"Persistenzkontext",
|
||||||
|
"Planerstatistiken",
|
||||||
|
"Plantypen",
|
||||||
|
"SFSB",
|
||||||
|
"unterlagerte",
|
||||||
|
"Wallstein"
|
||||||
|
],
|
||||||
|
}
|
|
@ -11,7 +11,19 @@ um eine längere Bearbeitung anzuzeigen.
|
||||||
\section{Motivation}
|
\section{Motivation}
|
||||||
\label{sec:intro:motivation}
|
\label{sec:intro:motivation}
|
||||||
|
|
||||||
Lorem Ipsum
|
Die Frank-Wedekind-Bibliothek soll als Grundlage weiterer Forschungen dienen. Durch die weitere Forschung soll die
|
||||||
|
literarhistorische und kulturgeschichtliche Wissen über die Kultur zwischen 1880 und 1918 erweitern. Um dieses
|
||||||
|
Vorhaben umsetzen zu können muss die Anwendung dem Benutzer gerecht werden, damit diese verwendet wird und somit
|
||||||
|
den Wissenstand entsprechend erweitert werden kann.
|
||||||
|
|
||||||
|
Um das Ziel der Akzeptanz zu erreichen und das sich die Bediener rein auf ihre Arbeit konzentrieren können, muss mit der
|
||||||
|
Anwendung flüssig interagiert werden können. Entsprechend müssen die Wartzeiten auf ein minimum reduziert werden.
|
||||||
|
Des Weiteren muss die Stabilität der Anwendung gesteigert werden.
|
||||||
|
|
||||||
|
\section{Ausgangslage}
|
||||||
|
\label{sec:intro:initial-situation}
|
||||||
|
|
||||||
|
\mytodos{hier die Grundlagen aus dem Expose? Braucht man die Motivation dann noch?}
|
||||||
|
|
||||||
\section{Ziel der Arbeit}
|
\section{Ziel der Arbeit}
|
||||||
\label{sec:intro:goal}
|
\label{sec:intro:goal}
|
||||||
|
@ -29,16 +41,24 @@ Hierbei ist auch ein Vergleich mit anderen Technologien angedacht.
|
||||||
\label{sec:intro:structure}
|
\label{sec:intro:structure}
|
||||||
|
|
||||||
Zu Begin der Arbeit werden im Kapitel \ref{ch:basics} die Struktur und der grundsätzliche Aufbau der Anwendung
|
Zu Begin der Arbeit werden im Kapitel \ref{ch:basics} die Struktur und der grundsätzliche Aufbau der Anwendung
|
||||||
erklärt. Hierbei wird aufgezeigt auf welche Probleme auftreten können und wie diese zu überprüfen sind.
|
erklärt. Hierbei wird aufgezeigt an welchen Stellen immer wieder zu Unstimmigkeiten kommen kann und wie diese zu
|
||||||
Nachfolgenden wird im Kapitel \ref{ch:concept} die Konzepte vorgestellt und aus verschiedenen Blickwinkel
|
überprüfen sind.
|
||||||
betrachtet. Hierbei wird versucht ....
|
|
||||||
Bei Performance-Untersuchung in Kapitel \ref{ch:performance-checking} werden nun die Konzepte angewandt, um
|
Nachfolgenden wird im Kapitel \ref{ch:concept} die Konzepte vorgestellt mit welchen man die Probleme ermitteln wird.
|
||||||
die Probleme zu identifizieren.
|
Hierbei ist zusätzlich ein Blick auf andere Frameworks sinnvoll, um dort aus den bekannten Anomalien zu lernen und
|
||||||
Danach werden die Untersuchungen ausgewertet und die Performance-Probleme identifiziert. Hierbei ist nun ein
|
deren Lösungsansatz zu überprüfen ob diese angewandt werden kann.
|
||||||
gesondertes Vorgehen je erkannten Problem durchzuführen, um diese zu beheben oder mindestens in einen akzeptablen
|
|
||||||
Rahmen zu verbessern.
|
Bei den Performance-Untersuchung in Kapitel \ref{ch:performance-checking} werden nun die Konzepte angewandt, um
|
||||||
Nach der Optimierung kommt nun die Evaluierung im Kapitel \ref{ch:evaluation} um zu überprüfen ob die Anpassungen
|
die Problemstellen zu identifizieren. Diese werden dann bewertet, unter den Gesichtspunkten ob eine Optimierung an
|
||||||
|
dieser Stelle sinnvoll ist, oder ob der Arbeitsaufwand dafür zu enorm ist.
|
||||||
|
|
||||||
|
Nach der Entscheidung der Reihenfolge der zu bearbeitenden Punkte, wird im Kapitel \ref{ch:optimizing} je nach
|
||||||
|
Problemart ein gesondertes Vorgehen der Optimierung durchgeführt, um diese zu beheben oder mindestens in einen
|
||||||
|
akzeptablen Rahmen zu verbessern. Diese Optimierungen werden dann in der Software entsprechend dem Weg angepasst.
|
||||||
|
|
||||||
|
Nach der Optimierung kommt nun die Evaluierung im Kapitel \ref{ch:evaluation}, um zu überprüfen ob die Anpassungen
|
||||||
die gewünschten Verbesserung in der Performance gebracht haben.
|
die gewünschten Verbesserung in der Performance gebracht haben.
|
||||||
Zum Abschluss wird explizit die Anpassungen dargestellt, die zu einer Verbesserung geführt haben und wie diese
|
|
||||||
entsprechend umgesetzt werden müssen. Zusätzliche wird beschrieben wie ein weiteres Vorgehen durchgeführt werden
|
Zum Abschluss im Kapitel \ref{ch:summary_and_outlook} wird explizit die Anpassungen dargestellt, die zu einer
|
||||||
kann.
|
merklichen Verbesserung geführt haben und wie diese entsprechend umgesetzt werden müssen. Zusätzliche wird
|
||||||
|
beschrieben wie ein weiteres Vorgehen durchgeführt werden kann.
|
||||||
|
|
|
@ -61,7 +61,7 @@ zu verringern. Um Anfragen die den Zugriff auf die Festplatte benötigen effizie
|
||||||
\label{fig:webrequest}
|
\label{fig:webrequest}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
\section{Glassfisch - Enterprise Java Beans}
|
\section{Glassfish - Enterprise Java Beans}
|
||||||
\label{sec:basics:ejb}
|
\label{sec:basics:ejb}
|
||||||
|
|
||||||
In den Java-EE-An\-wen\-dung\-en wird der \textit{Persistenzkontext} für die Anfragen vom \textit{Application-Server}
|
In den Java-EE-An\-wen\-dung\-en wird der \textit{Persistenzkontext} für die Anfragen vom \textit{Application-Server}
|
||||||
|
@ -74,7 +74,7 @@ Entities in den \textit{Persistenzkontext} geladen werden. Da dies häufig zu Sp
|
||||||
\citep[79]{MüllerWehr2012} führen kann, muss hier darauf geachtet werden, nicht mehr benötigte Entities aus dem
|
\citep[79]{MüllerWehr2012} führen kann, muss hier darauf geachtet werden, nicht mehr benötigte Entities aus dem
|
||||||
\textit{Persistenzkontext} zu lösen.
|
\textit{Persistenzkontext} zu lösen.
|
||||||
|
|
||||||
\section{Glassfish - Java Persinstance API}
|
\section{Glassfish - Java Persistance API}
|
||||||
\label{sec:basics:jpa}
|
\label{sec:basics:jpa}
|
||||||
|
|
||||||
Die \textit{Java Persistence API (JPA)} wird als First-Level-Cache in Java-EE-An\-wen\-dung verwendet, hier nehmen die
|
Die \textit{Java Persistence API (JPA)} wird als First-Level-Cache in Java-EE-An\-wen\-dung verwendet, hier nehmen die
|
||||||
|
@ -182,5 +182,3 @@ Bei \textit{Langen} Abfragen ist die Abhandlung >>Optimizing Iceberg Queries wit
|
||||||
Des Weiteren können über das Modul \texttt{pg\_stat\_statements} Statistiken der Aufrufe die an den Server gestellt
|
Des Weiteren können über das Modul \texttt{pg\_stat\_statements} Statistiken der Aufrufe die an den Server gestellt
|
||||||
wurden, ermittelt werden \citep{PostgresF27:2023}. Hierbei können die am häufigsten Aufgerufenen und die Anfragen mit
|
wurden, ermittelt werden \citep{PostgresF27:2023}. Hierbei können die am häufigsten Aufgerufenen und die Anfragen mit
|
||||||
der längsten Ausführungszeit ermittelt werden.
|
der längsten Ausführungszeit ermittelt werden.
|
||||||
|
|
||||||
%
|
|
|
@ -3,6 +3,7 @@
|
||||||
\label{ch:concept}
|
\label{ch:concept}
|
||||||
|
|
||||||
\section{Aufbau der Umfrage}
|
\section{Aufbau der Umfrage}
|
||||||
|
\label{sec:concept:poll}
|
||||||
|
|
||||||
% erste Frage sollte unterscheiden ob Bearbeiter oder Benutzer ist
|
% erste Frage sollte unterscheiden ob Bearbeiter oder Benutzer ist
|
||||||
% an welchen Aktion kommt es zu längeren Wartezeiten
|
% an welchen Aktion kommt es zu längeren Wartezeiten
|
||||||
|
@ -10,9 +11,24 @@
|
||||||
% treten sie sporadisch oder immer mit gleichen Muster (z.B. immer Nachmittags, immer bei der gleichen Abfolge an Aktionen) auf
|
% treten sie sporadisch oder immer mit gleichen Muster (z.B. immer Nachmittags, immer bei der gleichen Abfolge an Aktionen) auf
|
||||||
|
|
||||||
\section{Allgemeine Betrachtung des Systems}
|
\section{Allgemeine Betrachtung des Systems}
|
||||||
|
\label{sec:concept:viewsystem}
|
||||||
|
|
||||||
|
% Untersuchung des Servers
|
||||||
|
|
||||||
\section{Das Vorgehen der Optimierung}
|
\section{Das Vorgehen der Optimierung}
|
||||||
|
\label{sec:concept:optimizing}
|
||||||
|
|
||||||
|
% Anhand der Umfragen werden die verschiedenen Seiten ermittelt und mit den Tools überprüft
|
||||||
|
% Während dessen kann über ein Script die Seite automatisiert abgefragt und das Trace aktiv sind
|
||||||
|
% je nach erkentnis mss dann der Lösungsweg beschritten werden
|
||||||
|
% Beachten des Speicherverbrauchs!
|
||||||
|
|
||||||
\section{Aktueller Aufbau der Software}
|
\section{Aktueller Aufbau der Software}
|
||||||
|
\label{sec:concept:softwarestructure}
|
||||||
|
|
||||||
|
% Hier vielleicht nochmal ein Verweis auf die Grundlagen, oder direkt auf die MVC-Technik
|
||||||
|
|
||||||
\section{Vergleich mit anderen Technologien}
|
\section{Vergleich mit anderen Technologien}
|
||||||
|
\label{sec:concept:technologiecompare}
|
||||||
|
|
||||||
|
% Vergleich mit AspNetCore und vielleicht VueJS oder Konsorten, wobei hier der Serverteil fehlt
|
||||||
|
|
|
@ -3,9 +3,23 @@
|
||||||
\label{ch:performance-checking}
|
\label{ch:performance-checking}
|
||||||
|
|
||||||
\section{Auswertung der Umfrage}
|
\section{Auswertung der Umfrage}
|
||||||
|
\label{sec:performance-checking:poll}
|
||||||
|
|
||||||
|
% Auswerten ob es einen Zusammenhang zwischen bestimmten Zeiten gibt oder ob es
|
||||||
|
% eine bestimmte Reihenfolge gibt, bei der die Probleme auftreten
|
||||||
|
|
||||||
\section{Einbau und Aktivieren von Performance-Messung}
|
\section{Einbau und Aktivieren von Performance-Messung}
|
||||||
|
\label{sec:performance-checking:performance-measure}
|
||||||
|
|
||||||
|
%
|
||||||
|
|
||||||
\section{Statistiken im PostrgreSQL auswerten}
|
\section{Statistiken im PostrgreSQL auswerten}
|
||||||
|
\label{sec:performance-checking:postgresql-statistics}
|
||||||
|
|
||||||
|
% Logs auswerten, am besten vom Produktionsserver. Ebenfalls sollte man die Webseite
|
||||||
|
% prüfen, die den Cache von OpenJPE auswerten
|
||||||
|
|
||||||
\section{Überprüfung des PostgreSQL und Servers}
|
\section{Überprüfung des PostgreSQL und Servers}
|
||||||
|
\label{sec:performance-checking:postgresql-checking}
|
||||||
|
|
||||||
|
% Konfiguration vom Produktionsserver prüfen
|
||||||
|
|
|
@ -3,12 +3,16 @@
|
||||||
\label{ch:optimizing}
|
\label{ch:optimizing}
|
||||||
|
|
||||||
\section{Ermittlung der Performance-Probleme}
|
\section{Ermittlung der Performance-Probleme}
|
||||||
|
\label{sec:optimizing:performance}
|
||||||
|
|
||||||
\section{Analyse der Abfrage}
|
\section{Analyse der Abfrage}
|
||||||
|
\label{sec:optimizing:query-analyse}
|
||||||
|
|
||||||
\section{Optimierungen der Abfragen}
|
\section{Optimierungen der Abfragen}
|
||||||
|
\label{sec:optimizing:query-optimizing}
|
||||||
|
|
||||||
\section{Anpassung der Konfiguration}
|
\section{Anpassung der Konfiguration}
|
||||||
|
\label{sec:optimizing:configuration}
|
||||||
|
|
||||||
und hier ein sql-beispiel \autoref{lst:tester}
|
und hier ein sql-beispiel \autoref{lst:tester}
|
||||||
\includecode[SQL]{chapters/thesis/chapter05_example.sql}{lst:tester}{ein sql beispiel}
|
\includecode[SQL]{chapters/thesis/chapter05_example.sql}{lst:tester}{ein sql beispiel}
|
||||||
|
|
20
frontbackmatter/thesis/AbstractDE.tex
Normal file
20
frontbackmatter/thesis/AbstractDE.tex
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
%*******************************************************
|
||||||
|
% Abstract in German
|
||||||
|
%*******************************************************
|
||||||
|
\begin{otherlanguage}{ngerman}
|
||||||
|
\pdfbookmark[0]{Zusammenfassung}{Zusammenfassung}
|
||||||
|
\chapter*{Zusammenfassung}
|
||||||
|
Kurze Zusammenfassung des Inhaltes in deutscher Sprache von ca. einer Seite länge. Dabei sollte vor allem auf die folgenden Punkte eingegangen werden:
|
||||||
|
\begin{itemize}
|
||||||
|
\item Motivation: Wieso ist diese Arbeit entstanden? Warum ist das Thema der Arbeit (für die Allgemeinheit) interessant? Dabei sollte die Motivation von der konkreten Aufgabenstellung, z.B. durch eine Firma, weitestgehend abstrahiert werden.
|
||||||
|
\item Inhalt: Was ist Inhalt der Arbeit? Was genau wird in der Arbeit behandelt? Hier sollte kurz auf Methodik und Arbeitsweise eingegangen werden.
|
||||||
|
\item Ergebnisse: Was sind die Ergebnisse der Arbeit? Ein kurzer Überblick über die wichtigsten Ergebnisse als Teaser, um die Arbeit vollständig zu lesen.
|
||||||
|
\end{itemize}
|
||||||
|
\medskip
|
||||||
|
|
||||||
|
\noindent
|
||||||
|
Eine großartige Anleitung von Kent Beck, wie man gute Abstracts schreibt, finden Sie hier:
|
||||||
|
\begin{center}
|
||||||
|
\url{https://plg.uwaterloo.ca/~migod/research/beckOOPSLA.html}
|
||||||
|
\end{center}
|
||||||
|
\end{otherlanguage}
|
20
frontbackmatter/thesis/AbstractEN.tex
Normal file
20
frontbackmatter/thesis/AbstractEN.tex
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
%*******************************************************
|
||||||
|
% Abstract in English
|
||||||
|
%*******************************************************
|
||||||
|
\begin{otherlanguage}{american}
|
||||||
|
\pdfbookmark[0]{Abstract}{Abstract}
|
||||||
|
\chapter*{Abstract}
|
||||||
|
A short summary of the contents in English of about one page. The following points should be addressed in particular:
|
||||||
|
\begin{itemize}
|
||||||
|
\item Motivation: Why did this work come about? Why is the topic of the work interesting (for the general public)? The motivation should be abstracted as far as possible from the specific tasks that may be given by a company.
|
||||||
|
\item Content: What is the content of this thesis? What exactly is covered in the thesis? The methodology and working method should be briefly discussed here.
|
||||||
|
\item Results: What are the results of this work? A brief overview of the most important results as a teaser to read the complete thesis.
|
||||||
|
\end{itemize}
|
||||||
|
\medskip
|
||||||
|
|
||||||
|
\noindent
|
||||||
|
BTW: A great guide by Kent Beck how to write good abstracts can be found here:
|
||||||
|
\begin{center}
|
||||||
|
\url{https://plg.uwaterloo.ca/~migod/research/beckOOPSLA.html}
|
||||||
|
\end{center}
|
||||||
|
\end{otherlanguage}
|
BIN
thesis.pdf
BIN
thesis.pdf
Binary file not shown.
32
thesis.tex
32
thesis.tex
|
@ -20,6 +20,7 @@
|
||||||
% https://en.wikibooks.org/wiki/LaTeX/Source_Code_Listings
|
% https://en.wikibooks.org/wiki/LaTeX/Source_Code_Listings
|
||||||
%\lstinputlisting[frame=tb,language=SQL,caption={ein sql beispiel},label=lst:tester]{chapters/thesis/chapter05_example.sql}
|
%\lstinputlisting[frame=tb,language=SQL,caption={ein sql beispiel},label=lst:tester]{chapters/thesis/chapter05_example.sql}
|
||||||
\newcommand{\includecode}[4][c]{\lstinputlisting[caption=#4,frame=tb,label=#3,language=#1]{#2}}
|
\newcommand{\includecode}[4][c]{\lstinputlisting[caption=#4,frame=tb,label=#3,language=#1]{#2}}
|
||||||
|
\newcommand\mytodos[1]{\fcolorbox{black}{lightgray}{\textit{\textcolor{red}{TODO: #1}}}}
|
||||||
% Beispiel für externe Datei:
|
% Beispiel für externe Datei:
|
||||||
%\includecode[SQL]{chapters/thesis/chapter05_example.sql}{lst:tester}{ein sql beispiel}
|
%\includecode[SQL]{chapters/thesis/chapter05_example.sql}{lst:tester}{ein sql beispiel}
|
||||||
% Beispiel für direkte Eingabe:
|
% Beispiel für direkte Eingabe:
|
||||||
|
@ -57,8 +58,8 @@
|
||||||
%\cleardoublepage\include{frontbackmatter/Foreword}
|
%\cleardoublepage\include{frontbackmatter/Foreword}
|
||||||
\cleardoublepage\include{frontbackmatter/Declaration}
|
\cleardoublepage\include{frontbackmatter/Declaration}
|
||||||
\condLOCK{\cleardoublepage\include{frontbackmatter/BlockingNotice}}
|
\condLOCK{\cleardoublepage\include{frontbackmatter/BlockingNotice}}
|
||||||
%%\cleardoublepage\include{frontbackmatter/AbstractEN}
|
\cleardoublepage\include{frontbackmatter/thesis/AbstractEN}
|
||||||
%%\cleardoublepage\include{frontbackmatter/AbstractDE}
|
\cleardoublepage\include{frontbackmatter/thesis/AbstractDE}
|
||||||
%\cleardoublepage\include{frontbackmatter/Publications}
|
%\cleardoublepage\include{frontbackmatter/Publications}
|
||||||
%\cleardoublepage\include{frontbackmatter/Acknowledgments}
|
%\cleardoublepage\include{frontbackmatter/Acknowledgments}
|
||||||
\cleardoublepage\include{frontbackmatter/Contents}
|
\cleardoublepage\include{frontbackmatter/Contents}
|
||||||
|
@ -112,3 +113,30 @@
|
||||||
% Frank Wedekind:
|
% Frank Wedekind:
|
||||||
% https://books.google.de/books?hl=de&lr=&id=3qO8DQAAQBAJ&oi=fnd&pg=PA1&dq=frank+wedekind&ots=S4LHWQ0h2e&sig=Mz8PEGF-md4n3AwH9cgXq-5vUac#v=onepage&q=frank%20wedekind&f=false
|
% https://books.google.de/books?hl=de&lr=&id=3qO8DQAAQBAJ&oi=fnd&pg=PA1&dq=frank+wedekind&ots=S4LHWQ0h2e&sig=Mz8PEGF-md4n3AwH9cgXq-5vUac#v=onepage&q=frank%20wedekind&f=false
|
||||||
% https://www.martin.germanistik.uni-mainz.de/forschung/frank-wedekind/
|
% https://www.martin.germanistik.uni-mainz.de/forschung/frank-wedekind/
|
||||||
|
|
||||||
|
% Installation Payara mit PostgreSQL
|
||||||
|
% 1. Mit "yay -S payara" installieren lassen, liegt dann unter /opt/payara
|
||||||
|
% 2. Mit "yay -S postgresql-jdbc" den Datenbanktreiber installieren
|
||||||
|
% 3. Eigenen Benutzer der Gruppe payara hinzufügen, damit man es direkt von der IDE starten kann (gpasswd -a <user> payara)
|
||||||
|
% über "/opt/payara/bin/asadmin start-domain" kann der Server auch per hand gestartet werden
|
||||||
|
|
||||||
|
% Konfiguration von Idea
|
||||||
|
% 1. Neue Payara Server - Local hinzufügen
|
||||||
|
% 2. Bei Before Lunch "Build artifact" hinzufügen und "WedekindJSF.war" auswählen
|
||||||
|
% 3. Unter Deployment "Artifact" "WedekindJSF.war" hinzufügen
|
||||||
|
|
||||||
|
% Konfiguration Glassfisch/Payara (Muss scheinbar nach jedem neustart des Rechners gemacht werden)
|
||||||
|
% 1. Payara-Server starten, damit man an die Admin-Oberfläche kommt unter http://localhost:4848/
|
||||||
|
% 2. Unter Ressources\JDBC\JDBC Connection Pools einen neuen Anlegen:
|
||||||
|
% 2.1. Poolname vergeben
|
||||||
|
% 2.2. Resource Type: javax.sql.DataSource
|
||||||
|
% 2.3. Database Driver Vender: Postgresql (Wenn die Auswahl nicht stehen bleibt, dann im Feld darunter fix eintragen)
|
||||||
|
% 2.4. Mit Next bestätigen
|
||||||
|
% 2.5. Datasource Classname prüfen, sollte auf org.postgresql.ds.PGSimpleDataSource oder org.postgresql.ds.PGSimpleDataSource sein
|
||||||
|
% 2.6. Die Felder User, Password und databaseName ausfüllen (Infos siehe payra-resources.xml)
|
||||||
|
% 2.7. Mit Finish bestätigen
|
||||||
|
% 3. Unter Resources\JDBC\JDBC Resources einen neuen Anlegen:
|
||||||
|
% 3.1. JNDI Name: jdbc/wedekindPostgreSQL (muss mit jta-data-source aus persistence.xml zusammen passen)
|
||||||
|
% 3.2. Pool Name: den unter 2 angelegten Pool auswählen
|
||||||
|
% 3.3. Mit Save bestätigen
|
||||||
|
% 4. Payara-Server neustarten
|
Loading…
Reference in a new issue